File: a2145.html

package info (click to toggle)
appunti-informatica-libera 2001.08.18-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 27,912 kB
  • ctags: 23,734
  • sloc: makefile: 69
file content (363 lines) | stat: -rw-r--r-- 17,424 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"    "http://www.w3.org/TR/html4/strict.dtd">
<HTML LANG="it">
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html">
    <META NAME="Generator" CONTENT="Alml">
    <META NAME="Description" CONTENT="GNU/Linux e altro software libero">
    <META NAME="Keywords" CONTENT="Linux, GNU/Linux, Unix, software, software libero, free software">
    <META NAME="Author" CONTENT="Daniele Giacomini &nbsp;&nbsp; &nbsp;daniele&nbsp;@&nbsp;swlibero.org">
    <META NAME="Date" CONTENT="2001.08.18 ">
    <META NAME="Resource-type" LANG="en" CONTENT="Document" >
    <META NAME="Revisit-after" LANG="en" CONTENT="15 days" >
    <META NAME="Robots" CONTENT="ALL" >
    <TITLE> Appunti di informatica libera</TITLE>
    <LINK REL="stylesheet" TYPE="text/css" HREF="a2.css">
    <LINK REL="Start" TITLE="Start" HREF="a2.html">
    <LINK REL="Prev" TITLE="Previous" HREF="a2144.html">
    <LINK REL="Next" TITLE="Next" HREF="a2146.html">
</HEAD>
<BODY>
<P>
<A HREF="a2146.html">[successivo]</A>
<A HREF="a2144.html">[precedente]</A>
<A HREF="a2.html">[inizio]</A>
<A HREF="a2506.html">[fine]</A>
<A HREF="a21.html">[indice generale]</A>
<A HREF="a26.html">[violazione GPL]</A>
<A HREF="a2504.html">[licenze]</A>
<A HREF="a2505.html">[indice analitico]</A>
<A HREF="a2127.html">[tomo]</A>
<A HREF="a2138.html">[parte]</A>
</P>
<HR>
<DIV>
<H1>Capitolo 109. &nbsp; <A NAME="title1814"></A><A NAME="anchor2187"></A> TELNET <A NAME="index9798"></A> <A NAME="index9799"></A> </H1>

<P>TELNET &egrave; 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 <A NAME="index9800"></A>servente occorre il demone <SAMP>telnetd</SAMP>, mentre dal lato del <A NAME="index9801"></A>cliente si utilizza normalmente <SAMP>telnet</SAMP>.</P>

<P>Il <A NAME="index9802"></A>cliente TELNET &egrave; 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 <SAMP>telnetd</SAMP> non viene utilizzato. <SUP><A HREF="#footnote1" NAME="footnote-ref1">(1)</A></SUP> </P>

<H2>109.1 &nbsp; <A NAME="title1815"></A><A NAME="anchor2188"></A>
 Dal lato del <A NAME="index9803"></A>servente </H2>

<P>Come gi&agrave; accennato, per eseguire un accesso in un elaboratore remoto attraverso il programma <SAMP>telnet</SAMP>, &egrave; necessario che il demone <SAMP>telnetd</SAMP> sia in funzione in quell'elaboratore.</P>

<H3>109.1.1 &nbsp; <A NAME="title1816"></A><A NAME="anchor2189"></A>
 # telnetd <A NAME="index9804"></A> <A NAME="index9805"></A> </H3>

<P class="syntax"><TT>in.telnetd<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>&Egrave; il demone del servizio necessario per ricevere connessioni TELNET. &Egrave; gestito dal supervisore <A NAME="index9806"></A>Inet e filtrato dal <A NAME="index9807"></A>TCP&nbsp;wrapper.</P>

<P>Nell'esempio seguente, viene mostrata la riga di <CODE>/etc/inetd.conf</CODE> in cui si dichiara il suo possibile utilizzo.</P>

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

<P>Se &egrave; presente il file <CODE>/etc/issue.net</CODE>, viene utilizzato da <SAMP>telnetd</SAMP> per visualizzare un messaggio introduttivo, non appena si instaura un collegamento.</P>

<H3>109.1.2 &nbsp; <A NAME="title1817"></A><A NAME="anchor2190"></A>
 /etc/issue.net <A NAME="index9808"></A> </H3>

<P>Il file <CODE>/etc/issue.net</CODE> &egrave; un file di testo utilizzato da <SAMP>telnetd</SAMP> per mostrare un messaggio quando un <A NAME="index9809"></A>cliente TELNET si collega. In pratica, ha lo stesso ruolo del file <CODE>/etc/issue</CODE> (<A HREF="a264.html#anchor828">43.3.1</A>), che invece viene utilizzato da <SAMP>getty</SAMP> o da un altro programma analogo.</P>

<P><CODE>/etc/issue.net</CODE> pu&ograve; contenere alcune sequenze di <A NAME="index9810"></A>escape che vengono poi trasformate in vario modo nel momento della visualizzazione del messaggio. La tabella <A HREF="a2145.html#anchor2191">109.1</A> ne mostra l'elenco.</P>

<TABLE ID="anchor2191" BORDER="3">

<THEAD>
<TR><TD>Codice </TD><TD>Descrizione </TD></TR>
</THEAD>

<TBODY>
<TR><TD>%t </TD><TD>Il terminale corrente. </TD></TR>
<TR><TD>%h </TD><TD>Il nome completo del sistema (FQDN). </TD></TR>
<TR><TD>%D </TD><TD>Il nome del dominio NIS. </TD></TR>
<TR><TD>%d </TD><TD>La data e l'ora attuale. </TD></TR>
<TR><TD>%s </TD><TD>Il nome del sistema operativo. </TD></TR>
<TR><TD>%m </TD><TD>Il tipo di hardware. </TD></TR>
<TR><TD>%r </TD><TD>Il rilascio del sistema operativo. </TD></TR>
<TR><TD>%v </TD><TD>La versione del sistema operativo. </TD></TR>
<TR><TD>%% </TD><TD>Equivale a un carattere percentuale singolo. </TD></TR>
</TBODY>
</TABLE>

<P><EM> Tabella <A HREF="a2145.html#anchor2191">109.1</A>. Elenco dei codici di <A NAME="index9811"></A>escape utilizzabili all'interno del file <CODE>/etc/issue.net</CODE>. </EM></P>

<H2>109.2 &nbsp; <A NAME="title1818"></A><A NAME="anchor2192"></A>
 Dal lato del <A NAME="index9812"></A>cliente </H2>

<P>L'accesso a un elaboratore remoto viene fatto attraverso il programma <SAMP>telnet</SAMP>, il quale permette di operare come se ci si trovasse su un terminale di quel sistema.</P>

<H3>109.2.1 &nbsp; <A NAME="title1819"></A><A NAME="anchor2193"></A>
 $ telnet <A NAME="index9813"></A> </H3>

<P class="syntax"><TT>telnet<STRONG><BIG>[</BIG></STRONG><VAR>opzioni</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>[</BIG></STRONG><VAR>host_remoto</VAR><STRONG><BIG>[</BIG></STRONG><VAR>porta</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Se l'eseguibile <SAMP>telnet</SAMP> viene avviato senza specificare il <A NAME="index9814"></A>nodo con il quale ci si vuole connettere, questo inizia a funzionare in modalit&agrave; di comando, visualizzando l'<A NAME="index9815"></A>invito: <SAMP>telnet&gt;</SAMP>.</P>

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

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

<P>La comunicazione tra il <A NAME="index9818"></A>cliente TELNET e il sistema remoto pu&ograve; essere di tre tipi:</P>

<UL>

<LI>

<P><SAMP>TELNET LINEMODE</SAMP></P>

<P>&egrave; il tipo preferito ed &egrave; il primo tipo di comunicazione che il <A NAME="index9819"></A>cliente TELNET tenta di instaurare con il sistema remoto;</P>
</LI>

<LI>

<P><SAMP>character at a time</SAMP></P>

<P>in questa modalit&agrave; ogni carattere viene trasmesso singolarmente al sistema remoto;</P>
</LI>

<LI>

<P><SAMP>old line by line</SAMP></P>

<P>i dati vengono trasmessi a blocchi di righe e ci&ograve; che viene scritto, riappare sul terminale locale.</P>
</LI>
</UL>

<DL>
<DT><STRONG>Alcune opzioni e altri argomenti</STRONG></DT>
<DD>

<P class="syntax"><TT>-d
</TT></P>

<P>Attiva inizialmente il controllo diagnostico.</P>

<P class="syntax"><TT>-a
</TT></P>

<P>Tenta di eseguire un accesso automatico.</P>

<P class="syntax"><TT>-n<VAR>file_traccia</VAR>
</TT></P>

<P>Registra le azioni effettuate durante il collegamento all'interno del file indicato.</P>

<P class="syntax"><TT>-l<VAR>utente</VAR>
</TT></P>

<P>Definisce il nominativo-utente da utilizzare per l'accesso nel sistema remoto.</P>

<P class="syntax"><TT>-e<VAR>carattere_di_escape</VAR>
</TT></P>

<P>Permette di definire una sequenza diversa per il cosiddetto carattere di <A NAME="index9820"></A>escape. Il valore predefinito &egrave; <SAMP>^]</SAMP> che non &egrave; tanto compatibile con la tastiera italiana.</P>

<P class="syntax"><TT><VAR>host_remoto</VAR>
</TT></P>

<P>Identifica il sistema remoto con il quale collegarsi. Pu&ograve; essere espresso in qualunque modo valido.</P>

<P class="syntax"><TT><VAR>porta</VAR>
</TT></P>

<P>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.</P>
<DT><STRONG>Alcuni comandi</STRONG></DT>
<DD>

<P class="syntax"><TT>close
</TT></P>

<P>Chiude la connessione con l'elaboratore remoto.</P>

<P class="syntax"><TT>display<STRONG><BIG>[</BIG></STRONG><VAR>argomento</VAR>...<STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Visualizza tutti o alcuni dei valori delle impostazioni che si possono definire attraverso il comando <SAMP>set</SAMP>.</P>

<P class="syntax"><TT>mode<VAR>tipo_di_modalit&agrave;</VAR>
</TT></P>

<P>Permette di attivare una modalit&agrave; particolare. L'attivazione della modalit&agrave; richiesta dipende dal contesto e dalle possibilit&agrave; offerte dal sistema remoto.</P>

<UL>

<LI>

<P class="syntax"><TT>character
</TT></P>

<P>Attiva la modalit&agrave; di comunicazione a un carattere alla volta.</P>
</LI>

<LI>

<P class="syntax"><TT>line
</TT></P>

<P>Tenta di abilitare la modalit&agrave; di comunicazione <SAMP>TELNET LINEMODE</SAMP>. Se non &egrave; possibile, si cerca di optare per la modalit&agrave; <SAMP>old line by line</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>isig<STRONG><BIG>|</BIG></STRONG>-isig
</TT></P>

<P>Abilita o disabilita la modalit&agrave; <SAMP>TRAPSIG</SAMP> che riguarda la comunicazione <SAMP>TELNET LINEMODE</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>edit<STRONG><BIG>|</BIG></STRONG>-edit
</TT></P>

<P>Abilita o disabilita la modalit&agrave; <SAMP>EDIT</SAMP> che riguarda la comunicazione <SAMP>TELNET LINEMODE</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>softtab<STRONG><BIG>|</BIG></STRONG>-softtab
</TT></P>

<P>Abilita o disabilita la modalit&agrave; <SAMP>SOFT_TAB</SAMP> che riguarda la comunicazione <SAMP>TELNET LINEMODE</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>litecho<STRONG><BIG>|</BIG></STRONG>-litecho
</TT></P>

<P>Abilita o disabilita la modalit&agrave; <SAMP>LIT_ECHO</SAMP> che riguarda la comunicazione <SAMP>TELNET LINEMODE</SAMP>.</P>
</LI>

<LI>

<P class="syntax"><TT>?
</TT></P>

<P>Visualizza una breve guida per il comando <SAMP>mode</SAMP>.</P>
</LI>
</UL>

<P class="syntax"><TT>open<VAR>host_remoto</VAR><STRONG><BIG>[</BIG></STRONG>-l<VAR>utente</VAR><STRONG><BIG>]</BIG></STRONG><STRONG><BIG>[</BIG></STRONG>-<VAR>porta</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Apre una connessione con l'elaboratore remoto indicato. Se non viene specificata la porta, si utilizza il valore predefinito per le connessioni TELNET.</P>

<P class="syntax"><TT>quit
</TT></P>

<P>Chiude la connessione (se esiste una connessione) e termina l'esecuzione di <SAMP>telnet</SAMP>. Durante la modalit&agrave; di comando, &egrave; sufficiente premere la combinazione di tasti necessaria a ottenere il codice di <A NAME="index9821"></A>EOF per terminare la sessione di lavoro.</P>

<P class="syntax"><TT>send<VAR>argomenti</VAR>
</TT></P>

<P>Permette di inviare uno o pi&ugrave; sequenze di caratteri al sistema remoto.</P>

<P class="syntax"><TT>set<VAR>argomento</VAR><VAR>valore</VAR>
</TT></P>

<P class="syntax"><TT>unset<VAR>argomento</VAR><VAR>valore</VAR>
</TT></P>

<P><SAMP>set</SAMP> attiva o specifica il valore di una variabile determinata, mentre <SAMP>unset</SAMP> disabilita o pone al valore di <EM>Falso</EM> la variabile specificata.</P>

<P class="syntax"><TT>!<STRONG><BIG>[</BIG></STRONG><VAR>comando</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Permette di eseguire il comando indicato in una <A NAME="index9822"></A>subshell all'interno del sistema locale.</P>

<P class="syntax"><TT>status
</TT></P>

<P>Visualizza lo stato corrente della connessione.</P>

<P class="syntax"><TT>?<STRONG><BIG>[</BIG></STRONG><VAR>comando</VAR><STRONG><BIG>]</BIG></STRONG>
</TT></P>

<P>Visualizza una breve guida del comando indicato o l'elenco dei comandi disponibili.</P>
</DD>
</DL>

<H3>109.2.2 &nbsp; <A NAME="title1820"></A><A NAME="anchor2194"></A>
 ~/.telnetrc <A NAME="index9823"></A> </H3>

<P>Se l'utente predispone il file <CODE>~/.telnetrc</CODE>, questo viene letto quando si stabilisce un collegamento. Se al suo interno appare un riferimento all'elaboratore con il quale ci si &egrave; collegati, vengono eseguite le istruzioni relative.</P>

<P>Le righe che iniziano con il simbolo <SAMP>#</SAMP> sono commenti che terminano alla fine della riga.</P>

<P>Le righe che non contengono spazi anteriori, dovrebbero iniziare con il nome di un <A NAME="index9824"></A>nodo remoto. Ci&ograve; che segue la stessa riga e quelle seguenti, che per&ograve; cominciano con almeno uno spazio, sono considerate come una serie di comandi da eseguire automaticamente all'atto della connessione con quell'elaboratore.</P>

<H2>109.3 &nbsp; <A NAME="title1821"></A><A NAME="anchor2195"></A>
 Colloquiare con una porta </H2>

<P>Un <A NAME="index9825"></A>cliente TELNET &egrave; un ottimo strumento per eseguire una connessione TCP diagnostica con una porta di un <A NAME="index9826"></A>nodo, sia remoto che locale. Naturalmente, per poter utilizzare questo sistema occorre conoscere il protocollo utilizzato dal demone con il quale ci si collega.<SUP><A HREF="#footnote2" NAME="footnote-ref2">(2)</A></SUP></P>

<P>L'esempio classico &egrave; l'invio di un messaggio di posta elettronica attraverso una connessione diretta con il <A NAME="index9828"></A>servente SMTP. Dal file <CODE>/etc/services</CODE> si determina che il servizio SMTP (<EM>Simple Mail Transfer Protocol</EM>) corrisponde alla porta 25, ma si pu&ograve; anche utilizzare semplicemente il nome <SAMP>smtp</SAMP>. Nell'esempio, si instaura un collegamento con il <A NAME="index9829"></A>servente SMTP in funzione nel <A NAME="index9830"></A>nodo <CODE>roggen.brot.dg</CODE>.</P>

<P class="command"><CODE>$&nbsp;</CODE><STRONG><CODE>telnet roggen.brot.dg smtp</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>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</PRE>

<P class="command"><STRONG><CODE>HELO brot.dg</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>250 roggen.brot.dg Hello dinkel.brot.dg [192.168.1.1], pleased to meet you</PRE>

<P class="command"><STRONG><CODE>MAIL From: &lt;daniele@dinkel.brot.dg&gt;</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>250 &lt;daniele@dinkel.brot.dg&gt;... Sender ok</PRE>

<P class="command"><STRONG><CODE>RCPT to: &lt;toni@dinkel.brot.dg&gt;</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>250 &lt;toni@dinkel.brot.dg&gt;... Recipient ok</PRE>

<P class="command"><STRONG><CODE>DATA</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>354 Enter mail, end with "." on a line by itself</PRE>

<P class="command"><STRONG><CODE>Subject: Saluti.</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><STRONG><CODE>Ciao Antonio,</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><STRONG><CODE>come stai?</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><STRONG><CODE>Io sto bene e mi piacerebbe risentirti.</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><STRONG><CODE>Saluti,</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><STRONG><CODE>Daniele</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<P class="command"><STRONG><CODE>.</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>250 TAA02951 Message accepted for delivery</PRE>

<P class="command"><STRONG><CODE>QUIT</CODE></STRONG>[<KBD>Invio</KBD>]</P>

<PRE>221 dinkel.brot.dg closing connection
Connection closed by foreign host.</PRE>
Appunti di informatica libera 2001.08.18  --- <EM>Copyright &copy; 2000-2001 Daniele Giacomini -- &nbsp;daniele&nbsp;@&nbsp;swlibero.org</EM><HR>

<P><A HREF="#footnote-ref1" NAME="footnote1">1)</A> <STRONG>Telnet</STRONG> &nbsp; BSD</P>

<P><A HREF="#footnote-ref2" NAME="footnote2">2)</A> Un <A NAME="index9827"></A>cliente TELNET &egrave; in grado di utilizzare soltanto il protocollo TCP. I servizi che si basano sul TCP utilizzano un proprio protocollo di livello superiore ed &egrave; questo ci&ograve; a cui si fa riferimento.</P>
</DIV>
<HR>
<P>Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome  <A HREF="telnet.html">telnet.html</A></P>
<P>
<A HREF="a2146.html">[successivo]</A>
<A HREF="a2144.html">[precedente]</A>
<A HREF="a2.html">[inizio]</A>
<A HREF="a2506.html">[fine]</A>
<A HREF="a21.html">[indice generale]</A>
<A HREF="a26.html">[violazione GPL]</A>
<A HREF="a2504.html">[licenze]</A>
<A HREF="a2505.html">[indice analitico]</A>
</P>
</BODY>
</HTML>