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 server occorre il demone telnetd
, mentre dal lato del client si utilizza normalmente telnet
.
Il client di 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.
Come già accennato, per eseguire un login in un elaboratore remoto attraverso il programma telnet
, è necessario che il demone telnetd
sia in funzione in quell'elaboratore.
in.telnetd [<opzioni>] |
È il demone del servizio necessario per ricevere connessioni Telnet. È gestito dal supervisore inetd
e filtrato da tcpd
.
Nell'esempio seguente, viene mostrata la riga di /etc/inetd.conf
in cui si dichiara il suo possibile utilizzo.
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd |
Se è presente il file /etc/issue.net
, viene utilizzato da telnetd
per visualizzare un messaggio introduttivo, non appena si instaura un collegamento.
Il file /etc/issue.net
è un file di testo utilizzato da telnetd
per mostrare un messaggio quando un client Telnet si collega. In pratica, ha lo stesso ruolo del file /etc/issue
(
26.3.1), che invece viene utilizzato da getty
o da un altro programma analogo.
/etc/issue.net
può contenere alcune sequenze di escape che vengono poi trasformate in vario modo nel momento della visualizzazione del messaggio. La tabella
83.1 ne mostra l'elenco.
Codice | Descrizione |
%t | Il terminale corrente. |
%h | Il nome completo del sistema (FQDN). |
%D | Il nome del dominio NIS. |
%d | La data e l'ora attuale. |
%s | Il nome del sistema operativo. |
%m | Il tipo di hardware. |
%r | Il rilascio del sistema operativo. |
%v | La versione del sistema operativo. |
%% | Equivale a un singolo carattere percentuale. |
/etc/issue.net
.
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>] [<host-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, e questo 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 client Telnet e il sistema remoto può essere di tre tipi:
è il tipo preferito ed è il primo tipo di comunicazione che il client Telnet tenta di instaurare con il sistema remoto; | |
in questa modalità ogni carattere viene trasmesso singolarmente al sistema remoto; | |
i dati vengono trasmessi a blocchi di righe e ciò che viene scritto, riappare sul terminale locale. |
|
Attiva inizialmente il controllo diagnostico.
|
Tenta di eseguire un login automatico.
|
Registra le azioni effettuate durante il collegamento all'interno del file indicato.
|
Definisce il nome di utente da utilizzare per il login nel sistema remoto.
|
Permette di definire una sequenza diversa per il cosiddetto carattere di escape. Il valore predefinito è ^]
che non è tanto compatibile con la tastiera italiana.
<host-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.
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.
Attiva la modalità di comunicazione a un carattere alla volta. | |
Tenta di abilitare la modalità di comunicazione | |
Abilita o disabilita la modalità | |
Abilita o disabilita la modalità | |
Abilita o disabilita la modalità | |
Abilita o disabilita la modalità | |
Visualizza una breve guida per il comando |
open <host-remoto> [ |
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 carattere 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 determinata variabile, 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 l'utente predispone il file ~/.telnetrc
, questo viene letto quando si stabilisce un collegamento. Se al suo 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.
Un client 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. *1*
L'esempio classico è l'invio di un messaggio di posta elettronica attraverso una connessione diretta con il server SMTP. Dal file /etc/services
si determina che il servizio SMTP (Send Mail Transfer Protocol) corrisponde alla porta 25
, ma si può anche utilizzare semplicemente il nome smtp
. Nell'esempio, si instaura un collegamento con il server 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. |
---------------------------
Appunti Linux 1999.07.12 --- Copyright © 1997-1999 Daniele Giacomini -- daniele @ evo.it
1.) Un client 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.
[indice generale] [precedente] [successivo] [indice analitico] [note introduttive]