[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 295.   TELNET

TELNET è un protocollo che permette di effettuare un collegamento con un altro elaboratore e di operare su quello, come se si stesse utilizzando un suo terminale. Per fare questo, dal lato del servente occorre il demone telnetd (o meglio in.telnetd), mentre dal lato del cliente si utilizza normalmente telnet.

Il cliente TELNET è molto importante anche come programma diagnostico per instaurare un collegamento manuale con una porta e iniziare quindi un colloquio diretto con il protocollo TCP. In questo caso, il demone telnetd non viene utilizzato. (1)

295.1   Dal lato del servente

Come già accennato, per eseguire un accesso in un elaboratore remoto attraverso il programma telnet, è necessario che il demone in.telnetd sia in funzione in quell'elaboratore:

in.telnetd [opzioni]

Il demone in.telnetd è gestito normalmente dal supervisore dei servizi di rete e filtrato dal TCP wrapper.

Nell'esempio seguente, viene mostrata la riga di /etc/inetd.conf in cui si dichiara il suo possibile utilizzo per quanto riguarda il caso particolare di Inetd:

...
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
...

Se è presente il file /etc/issue.net, viene utilizzato da in.telnetd per visualizzare un messaggio introduttivo, non appena si instaura un collegamento. Si tratta di un file di testo con lo stesso ruolo del file /etc/issue (117.3.1), che invece viene utilizzato da un programma Getty.

/etc/issue.net può contenere alcune sequenze di escape che vengono poi trasformate in vario modo nel momento della visualizzazione del messaggio. La tabella 295.2 ne mostra l'elenco.

Tabella 295.2. Elenco dei codici di escape utilizzabili all'interno del file /etc/issue.net.

Codice Significato mnemonico Descrizione
%t
terminal Il terminale corrente.
%h
host Il nome completo del sistema (FQDN).
%D
domain Il nome del dominio NIS.
%d
date La data e l'ora attuale.
%s
system Il nome del sistema operativo.
%m
machine Il tipo di hardware.
%r
release Il rilascio del sistema operativo.
%v
version La versione del sistema operativo.
%%
Equivale a un carattere percentuale singolo.

295.2   Dal lato del cliente

L'accesso a un elaboratore remoto viene fatto attraverso il programma telnet, il quale permette di operare come se ci si trovasse su un terminale di quel sistema:

telnet [opzioni] [nodo_remoto [porta]]

Se l'eseguibile telnet viene avviato senza specificare il nodo con il quale ci si vuole connettere, questo inizia a funzionare in modalità di comando, visualizzando l'invito: telnet>.

Quando l'eseguibile telnet riesce a connettersi al sistema remoto, si opera come se si fosse seduti davanti a un terminale di quel sistema.

Per poter dare dei comandi a telnet occorre tornare temporaneamente alla modalità di comando, cosa che si ottiene utilizzando il carattere di escape. Questo carattere di escape non corrisponde alla pressione del tasto [Esc], ma di solito alla combinazione [Ctrl ]] (control + parentesi quadra chiusa). Questa convenzione può essere cambiata ed è una cosa quasi necessaria dal momento che utilizzando la tastiera italiana non è possibile ottenere le parentesi quadre se non in combinazione con [AltGR]. Diversamente, l'unico modo per poter ottenere la combinazione [Ctrl ]] è quello di passare a un'altra console virtuale, attivare la mappa della tastiera USA, tornare sulla console virtuale in cui è in funzione telnet ed eseguire la combinazione.

La comunicazione tra il cliente TELNET e il sistema remoto può essere di tre tipi:

TELNET LINEMODE è il tipo preferito ed è il primo tipo di comunicazione che il cliente TELNET tenta di instaurare con il sistema remoto;
character at a time in questa modalità ogni carattere viene trasmesso singolarmente al sistema remoto;
old line by line i dati vengono trasmessi a blocchi di righe e ciò che viene scritto, riappare sul terminale locale.

Segue la descrizione di alcune opzioni e di alcuni argomenti della riga di comando.

Opzione o argomento Significato mnemonico Descrizione
-4
Richiede espressamente un collegamento con IPv4.
-6
Richiede espressamente un collegamento con IPv6.
-8
Tenta di negoziare una connessione a 8 bit.
-d
debug Attiva inizialmente il controllo diagnostico.
-a
auto Tenta di eseguire un accesso automatico.
-n file_traccia
Registra le azioni effettuate durante il collegamento all'interno del file indicato.
-l utente
login Definisce il nominativo-utente da utilizzare per l'accesso nel sistema remoto.
-e carattere_di_escape
escape Permette di definire una sequenza diversa per il cosiddetto carattere di escape. Il valore predefinito è ^] che non è tanto compatibile con la tastiera italiana.
nodo_remoto
Identifica il sistema remoto con il quale collegarsi. Può essere espresso in qualunque modo valido.
porta
Identifica il numero di porta (in forma numerica o attraverso il nome corrispondente). Se non viene specificato, si utilizza il valore predefinito per le connessioni TELNET: 23.

Segue la descrizione di alcuni dei comandi che possono essere usati in modo interattivo.

Opzione o argomento Descrizione
close
Chiude la connessione con l'elaboratore remoto.
display [argomento...]
Visualizza tutti o alcuni dei valori delle impostazioni che si possono definire attraverso il comando set.
mode tipo_di_modalità
Permette di attivare una modalità particolare. L'attivazione della modalità richiesta dipende dal contesto e dalle possibilità offerte dal sistema remoto.
mode character
Attiva la modalità di comunicazione a un carattere alla volta.
mode line
Tenta di abilitare la modalità di comunicazione TELNET LINEMODE. Se non è possibile, si cerca di optare per la modalità old line by line.
mode isig
mode -isig
Abilita o disabilita la modalità TRAPSIG che riguarda la comunicazione TELNET LINEMODE.
mode edit
mode -edit
Abilita o disabilita la modalità EDIT che riguarda la comunicazione TELNET LINEMODE.
mode softtab
mode -softtab
Abilita o disabilita la modalità SOFT_TAB che riguarda la comunicazione TELNET LINEMODE.
mode litecho
mode -litecho
Abilita o disabilita la modalità LIT_ECHO che riguarda la comunicazione TELNET LINEMODE.
mode ?
Visualizza una breve guida per il comando mode.
open nodo_remoto \
  \[-l utente][-porta]
Apre una connessione con l'elaboratore remoto indicato. Se non viene specificata la porta, si utilizza il valore predefinito per le connessioni TELNET.
quit
Chiude la connessione (se esiste una connessione) e termina l'esecuzione di telnet. Durante la modalità di comando, è sufficiente premere la combinazione di tasti necessaria a ottenere il codice di EOF per terminare la sessione di lavoro.
send argomenti
Permette di inviare uno o più sequenze di caratteri al sistema remoto.
set argomento valore
unset argomento valore
set attiva o specifica il valore di una variabile determinata, mentre unset disabilita o pone al valore di Falso la variabile specificata.
! [comando]
Permette di eseguire il comando indicato in una subshell all'interno del sistema locale.
status
Visualizza lo stato corrente della connessione.
? [comando]
Visualizza una breve guida del comando indicato o l'elenco dei comandi disponibili.

Se viene predisposto il file /etc/telnetrc a livello globale, o anche il file ~/.telnetrc a livello personale, questi vengono letti quando si stabilisce un collegamento (naturalmente il secondo prende il sopravvento sul primo). Se al loro interno appare un riferimento all'elaboratore con il quale ci si è collegati, vengono eseguite le istruzioni relative.

Le righe che iniziano con il simbolo # sono commenti che terminano alla fine della riga.

Le righe che non contengono spazi anteriori, dovrebbero iniziare con il nome di un nodo remoto. Ciò che segue la stessa riga e quelle seguenti, che però cominciano con almeno uno spazio, sono considerate come una serie di comandi da eseguire automaticamente all'atto della connessione con quell'elaboratore.

295.3   Colloquiare con una porta

Un cliente TELNET è un ottimo strumento per eseguire una connessione TCP diagnostica con una porta di un nodo, sia remoto che locale. Naturalmente, per poter utilizzare questo sistema occorre conoscere il protocollo utilizzato dal demone con il quale ci si collega.(2)

L'esempio classico è l'invio di un messaggio di posta elettronica attraverso una connessione diretta con il servente SMTP. Dal file /etc/services si determina che il servizio SMTP (Simple mail transfer protocol) corrisponde alla porta 25, ma si può anche utilizzare semplicemente il nome smtp. Nell'esempio, si instaura un collegamento con il servente SMTP in funzione nel nodo roggen.brot.dg.

telnet roggen.brot.dg smtp[Invio]

Trying 192.168.1.2...
Connected to roggen.brot.dg.
Escape character is '^]'.
220 roggen.brot.dg ESMTP Sendmail 8.8.5/8.8.5; Thu, 11 Sep 1997 19:58:15 +0200

HELO brot.dg[Invio]

250 roggen.brot.dg Hello dinkel.brot.dg [192.168.1.1], pleased to meet you

MAIL From: <daniele@dinkel.brot.dg>[Invio]

250 <daniele@dinkel.brot.dg>... Sender ok

RCPT To: <toni@dinkel.brot.dg>[Invio]

250 <toni@dinkel.brot.dg>... Recipient ok

DATA[Invio]

354 Enter mail, end with "." on a line by itself

Subject: Saluti.[Invio]

Ciao Antonio,[Invio]

come stai?[Invio]

Io sto bene e mi piacerebbe risentirti.[Invio]

Saluti,[Invio]

Daniele[Invio]

.[Invio]

250 TAA02951 Message accepted for delivery

QUIT[Invio]

221 dinkel.brot.dg closing connection
Connection closed by foreign host.

L'esempio mostrato dovrebbe funzionare senza bisogno di dare delle opzioni particolari all'eseguibile telnet; tuttavia, in certi casi può essere necessario l'uso dell'opzione -8 per evitare che alcuni caratteri trasmessi o ricevuti possano essere alterati.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


1) Telnet   UCB BSD

2) Un cliente TELNET è in grado di utilizzare soltanto il protocollo TCP. I servizi che si basano sul TCP utilizzano un proprio protocollo di livello superiore ed è questo ciò a cui si fa riferimento.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome telnet.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!