[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


101. 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', mentre dal lato del cliente si utilizza normalmente `telnet'.

Il cliente 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.

101.1 Dal lato del servente

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

101.1.1 # telnetd

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.

101.1.2 /etc/issue.net

Il file `/etc/issue.net' Ŕ un file di testo utilizzato da `telnetd' per mostrare un messaggio quando un cliente Telnet si collega. In pratica, ha lo stesso ruolo del file `/etc/issue' ( 36.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 101.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 carattere percentuale singolo.

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

101.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.

101.2.1 $ telnet

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, 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:

Alcune opzioni e altri argomenti

-d

Attiva inizialmente il controllo diagnostico.

-a

Tenta di eseguire un accesso automatico.

-n <file-traccia>

Registra le azioni effettuate durante il collegamento all'interno del file indicato.

-l <utente>

Definisce il nominativo-utente da utilizzare per l'accesso nel sistema remoto.

-e <carattere-di-escape>

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.

Alcuni comandi

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.

  • character
    

    Attiva la modalitÓ di comunicazione a un carattere alla volta.

  • line
    

    Tenta di abilitare la modalitÓ di comunicazione `TELNET LINEMODE'. Se non Ŕ possibile, si cerca di optare per la modalitÓ `old line by line'.

  • isig | -isig
    

    Abilita o disabilita la modalitÓ `TRAPSIG' che riguarda la comunicazione `TELNET LINEMODE'.

  • edit | -edit
    

    Abilita o disabilita la modalitÓ `EDIT' che riguarda la comunicazione `TELNET LINEMODE'.

  • softtab | -softtab
    

    Abilita o disabilita la modalitÓ `SOFT_TAB' che riguarda la comunicazione `TELNET LINEMODE'.

  • litecho | -litecho
    

    Abilita o disabilita la modalitÓ `LIT_ECHO' che riguarda la comunicazione `TELNET LINEMODE'.

  • ?
    

    Visualizza una breve guida per il comando `mode'.

open <host-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.

101.2.2 ~/.telnetrc

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.

101.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. *1*

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.

---------------------------

Appunti Linux 2000.04.12 --- Copyright ę 1997-2000 Daniele Giacomini -- ádanieleá@ápluto.linux.it


1.) 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.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]