telnet — 用户界面,用于 TELNET 协议
概要
telnet [选项 ...] [主机 [端口]]
描述
telnet 命令用于使用 TELNET 协议与另一个主机进行通信。 如果在不带主机参数的情况下调用 telnet,它将进入命令模式,并显示其提示符(telnet>)。 在此模式下,它会接受并执行以下命令。 如果使用参数调用它,它将执行带有这些参数的 open 命令。
选项
-4, --ipv4
使用 IPv4 连接到主机。
-6, --ipv6
使用 IPv6 连接到主机。
-8, --binary
指定 8 位数据路径。 这将尝试在输入和输出上协商 TELNET BINARY 选项。
-L, --binary-output
指定输出上的 8 位数据路径。 这将导致协商在输出上使用 BINARY 选项。
-e, --escape 转义字符
将初始 telnet 转义字符设置为转义字符。 如果省略转义字符,则将没有转义字符。
-E, --no-escape
停止将任何字符识别为转义字符。
-a, --login
尝试自动登录。 目前,如果远程系统支持,这将通过 ENVIRON 选项的 USER 变量发送用户名。 使用的名称是当前用户返回的名称,如 getlogin(2) 中所述,如果它与当前用户 ID 匹配,否则是与用户 ID 关联的名称。
-K, --no-login
指定不自动登录到远程系统。
-l, --user 用户名
连接到远程系统时,如果远程系统理解 ENVIRON 选项,则会将用户名作为变量 USER 的值发送到远程系统。 此选项隐含 -a 选项。 此选项也可以与 open 命令一起使用。
-n, --trace 跟踪文件
为记录跟踪信息打开跟踪文件。 请参见下面的 set tracefile 命令。
-r, --rlogin
指定类似于 rlogin(1) 的用户界面。 在此模式下,转义字符设置为波浪号 (~) 字符,除非通过 -e 选项进行修改。
-c, --no-rc
禁用读取用户的 .telnetrc 文件。(请参见此 man 页面上的 toggle skiprc 命令。)
-d, --debug
将调试开关的初始值设置为 TRUE。
-x, --encrypt
如果可能,启用数据流的加密。
-X, --disable-auth atype
禁用 atype 类型的身份验证。
-k, --realm 领域
如果正在使用 Kerberos 身份验证,则 -k 选项请求 telnet 获得远程主机中领域领域的票证,而不是远程主机所在的领域,如 krb_realmofhost(3) 中所述。
host 指示远程主机的官方名称、别名或互联网地址。
port 指示端口号(应用程序的地址)。如果未指定数字,则使用默认的 telnet 端口。
操作
在 rlogin 模式下,~. 这一行会断开与远程主机的连接;~ 是 telnet 转义字符。 同样,~^Z 这一行会暂停 telnet 会话。 ~^] 这一行会转义到正常的 telnet 转义提示符。
一旦建立了连接,telnet 将尝试启用 TELNET LINEMODE 选项。 如果失败,则 telnet 将恢复为以下两种输入模式之一:“逐字符”或“旧式逐行”,具体取决于远程系统支持哪种模式。
当启用 LINEMODE 时,字符处理将在本地系统上进行,由远程系统控制。 当需要禁用输入编辑或字符回显时,远程系统将传递该信息。 远程系统还会传递任何在远程系统上发生的特殊字符的更改,以便它们可以在本地系统上生效。
在“逐字符”模式下,大多数键入的文本会立即发送到远程主机进行处理。
在“旧式逐行”模式下,所有文本都将在本地回显,并且(通常)只有完整的行才会被发送到远程主机。 “本地回显字符”(最初为“^E”)可用于打开和关闭本地回显(这主要用于输入密码而不显示密码)。
如果启用了 LINEMODE 选项,或者 localchars 选项为 TRUE(“旧式逐行”的默认设置;参见下文),则用户的 quit、intr 和 flush 字符将在本地捕获,并作为 TELNET 协议序列发送到远程。 如果 LINEMODE 曾经被启用,那么用户的 susp 和 eof 也会作为 TELNET 协议序列发送,并且 quit 会作为 TELNET ABORT 而不是 BREAK 发送。 存在一些选项(参见 toggle autoflush 和 toggle autosynch),它们会导致此操作刷新后续输出到终端(直到远程主机确认 TELNET 序列),并刷新之前的终端输入(对于 quit 和 intr)。
连接到远程主机时,可以通过键入 telnet “转义字符”(最初为“^]”)来进入 telnet 命令模式。 在命令模式下,可以使用正常的终端编辑约定。
以下 telnet 命令可用。 只需要键入足以唯一标识每个命令的部分(这也适用于 mode、set、toggle、unset、slc、environ 和 display 命令的参数)。
auth argument ...
auth 命令操作通过 TELNET AUTHENTICATE 选项发送的信息。 auth 命令的有效参数如下:
disable type 禁用指定的身份验证类型。 要获取可用类型的列表,请使用 auth disable ? 命令。
enable type 启用指定的身份验证类型。 要获取可用类型的列表,请使用 auth enable ? 命令。
status 列出各种身份验证的当前状态。
close 关闭 TELNET 会话并返回到命令模式。
display argument ...
显示所有或部分已设置和切换的值(参见下文)。
encrypt argument ...
encrypt 命令用于操作通过 TELNET ENCRYPT 选项发送的信息。
注意: 由于出口管制,TELNET ENCRYPT 选项在 美国和加拿大以外的国家/地区不受支持。
encrypt 命令的有效参数如下:
disable type [input|output]
禁用指定的加密类型。 如果省略 input 和 output,则同时禁用 input 和 output。 要获取可用类型列表,请使用 encrypt disable ? 命令。
enable type [input|output]
启用指定的加密类型。 如果省略 input 和 output,则同时启用 input 和 output。 要获取可用类型列表,请使用 encrypt enable ? 命令。
input 与 encrypt start input 命令相同。
-input 与 encrypt stop input 命令相同。
output 与 encrypt start output 命令相同。
-output 与 encrypt stop output 命令相同。
start [input|output]
尝试启动加密。 如果省略 input 和 output,则同时启用 input 和 output。 要获取可用类型列表,请使用 encrypt enable ? 命令。
status 列出加密的当前状态。
stop [input|output]
停止加密。 如果省略 input 和 output,则在 input 和 output 上都停止加密。
type type 设置默认的加密类型,以便在后续的 encrypt start 或 encrypt stop 命令中使用。
environ arguments...
environ 命令用于操作可能通过 TELNET ENVIRON 选项发送的变量。 初始变量集是从用户的环境中获取的,其中仅 DISPLAY 和 PRINTER 变量默认情况下会导出。 如果使用 -a 或 -l 选项,USER 变量也会导出。 environ 命令的有效参数如下:
define variable value
定义变量 variable,其值为 value。 通过此命令定义的所有变量都会自动导出。 值可以包含在单引号或双引号中,以便包含制表符和空格。
undefine variable
从环境变量列表中删除变量。
export variable
标记变量 variable 以导出到远程端。
unexport variable
标记变量 variable 以不导出,除非远程端明确请求。
list 列出当前设置的环境变量。 那些标记为 * 的变量将自动发送,其他变量仅在明确请求时才会发送。
? 打印 environ 命令的帮助信息。
logout 向远程端发送 TELNET LOGOUT 选项。 此命令类似于 close 命令; 但是,如果远程端不支持 LOGOUT 选项,则不会发生任何情况。 但是,如果远程端支持挂起用户会话以供以后重新连接的概念,则 logout 参数表示应立即终止会话。
mode type 类型是几种选项之一,具体取决于 TELNET 会话的状态。远程主机将被要求允许进入请求的模式。如果远程主机能够进入该模式,则将进入请求的模式。
character 禁用 TELNET LINEMODE 选项,或者,如果远程端不理解 LINEMODE 选项,则进入“逐字符”模式。
line 启用 TELNET LINEMODE 选项,或者,如果远程端不理解 LINEMODE 选项,则尝试进入“旧行模式”。
isig (-isig) 尝试启用(禁用)LINEMODE 选项的 TRAPSIG 模式。这需要启用 LINEMODE 选项。
edit (-edit) 尝试启用(禁用)LINEMODE 选项的 EDIT 模式。这需要启用 LINEMODE 选项。
softtabs (-softtabs)
尝试启用(禁用)LINEMODE 选项的 SOFT_TAB 模式。这需要启用 LINEMODE 选项。
litecho (-litecho)
尝试启用(禁用)LINEMODE 选项的 LIT_ECHO 模式。这需要启用 LINEMODE 选项。
? 打印出有关模式命令的帮助信息。
open host [[-l] user][- port]
连接到指定的主机。如果没有指定端口号,telnet 将尝试连接到默认端口上的 TELNET 服务器。主机规范可以是主机名(请参阅 hosts(5))或以“点符号”指定的互联网地址(请参阅 inet(3))。可以使用 [-l] 选项来指定要通过 ENVIRON 选项传递给远程系统的用户名。连接到非标准端口时,telnet 不会自动启动 TELNET 选项。当端口号前面有负号时,将执行初始选项协商。建立连接后,将打开用户主目录中的 .telnetrc 文件。以 # 开头的行是注释行。忽略空行。不以空格开头的行是机器条目的开始。该行中的第一项是要连接的机器的名称。其余的行,以及以空格开头的后续行,都将被视为 telnet 命令,并像在 telnet 命令提示符中手动键入一样进行处理。
quit 关闭任何打开的 TELNET 会话并退出 telnet。在命令模式下,文件结束(EOF)也将关闭会话并退出。
发送参数
向远程主机发送一个或多个特殊字符序列。以下是可以指定的参数(可以一次指定多个参数):
abort 发送 TELNET ABORT(中止进程)序列。
ao 发送 TELNET AO(中止输出)序列,这应该导致远程系统将远程系统中的所有输出刷新到用户的终端。
ayt 发送 TELNET AYT(你还在吗?)序列,远程系统可以选择响应或不响应。
brk 发送 TELNET BRK(中断)序列,这可能对远程系统具有重要意义。
ec 发送 TELNET EC(擦除字符)序列,这应该导致远程系统擦除最后输入的字符。
el 发送 TELNET EL(擦除行)序列,这应该导致远程系统擦除当前正在输入的行。
eof 发送 TELNET EOF(文件结尾)序列。
eor 发送 TELNET EOR(记录结尾)序列。
escape 发送当前的 telnet 转义字符(最初为“^”)。
ga 发送 TELNET GA(继续)序列,这可能对远程系统没有意义。
getstatus
如果远程支持 TELNET STATUS 命令,getstatus 将发送子协商以请求服务器发送其当前选项状态。
ip 发送 TELNET IP(中断进程)序列,这应该导致远程系统中止当前正在运行的进程。
nop 发送 TELNET NOP(无操作)序列。
susp 发送 TELNET SUSP(暂停进程)序列。
synch 发送 TELNET SYNCH 序列。此序列导致远程系统丢弃所有先前键入(但尚未读取)的输入。此序列作为 TCP 紧急数据发送(如果远程系统是 4.2BSD 系统,则可能无法工作——如果它不起作用,终端可能会回显一个小写字母“r”)。
do cmd
dont cmd
will cmd
wont cmd
发送 TELNET DO cmd 序列。Cmd 可以是 0 到 255 之间的十进制数字,也可以是特定 TELNET 命令的符号名称。Cmd 也可以是 help 或 ?,用于打印帮助信息,包括已知符号名称的列表。
? 打印 send 命令的帮助信息。
set argument value
unset argument value
set 命令会将任何一个 telnet 变量设置为特定值或设置为 TRUE。特殊值 off 会关闭与变量关联的函数,这等效于使用 unset 命令。unset 命令将禁用或设置为 FALSE 任何指定的函数。可以使用 display 命令查询变量的值。可以设置或取消设置的变量列在此处。此外,可以使用 set 和 unset 命令显式地设置或取消设置 toggle 命令的任何变量。
ayt 如果 TELNET 处于 localchars 模式,或者启用了 LINEMODE,并且键入了状态字符,则会向远程主机发送 TELNET AYT 序列(参见 send ayt 前面的说明)。“你还在吗?”字符的初始值为终端的状态字符。
echo 这是值(最初为“^E”),当处于“逐行模式”时,它会在本地回显输入的字符(用于正常处理)和抑制输入的字符(例如,用于输入密码)之间切换。
eof 如果 telnet 以 LINEMODE 或“旧逐行模式”运行,则将此字符作为行首输入,将导致此字符发送到远程系统。eof 字符的初始值取自终端的 eof 字符。
erase 如果 telnet 处于 localchars 模式(参见 toggle localchars),并且 telnet 以“逐字符模式”运行,则键入此字符时,将发送一个 TELNET EC 序列(参见 send ec 上述内容)到远程系统。erase 字符的初始值取自终端的 erase 字符。
escape 这是 telnet 转义字符(最初为“^[”),它会导致进入 telnet 命令模式(连接到远程系统时)。
flushoutput
如果 telnet 处于 localchars 模式(参见 toggle localchars 上述内容),并且键入了 flushoutput 字符,则将发送一个 TELNET AO 序列(参见 send ao 上述内容)到远程主机。flush 字符的初始值取自终端的 flush 字符。
forw1
forw2 如果 TELNET 以 LINEMODE 运行,这些是在键入时会导致部分行转发到远程系统的字符。转发字符的初始值取自终端的 eol 和 eol2 字符。
interrupt
如果 telnet 处于 localchars 模式(参见 toggle localchars 上述内容),并且键入了 interrupt 字符,则将发送一个 TELNET IP 序列(参见 send ip 上述内容)到远程主机。interrupt 字符的初始值取自终端的 intr 字符。
kill 如果 telnet 处于 localchars 模式(参见 toggle localchars 上述内容),并且 telnet 以“逐字符模式”运行,则键入此字符时,将发送一个 TELNET EL 序列(参见 send el 上述内容)到远程系统。kill 字符的初始值取自终端的 kill 字符。
lnext 如果 telnet 以 LINEMODE 或“旧逐行模式”运行,则此字符将取自终端的 lnext 字符。lnext 字符的初始值取自终端的 lnext 字符。
quit 如果 telnet 处于 localchars 模式(参见 toggle localchars 上述内容),并且键入了 quit 字符,则将发送一个 TELNET BRK 序列(参见 send brk 上述内容)到远程主机。quit 字符的初始值取自终端的 quit 字符。
reprint
如果 telnet 以 LINEMODE 或“旧逐行模式”运行,则此字符将取自终端的 reprint 字符。reprint 字符的初始值取自终端的 reprint 字符。
rlogin 这是 rlogin 转义字符。如果已设置,则会忽略正常的 TELNET 转义字符,除非它位于行首,并且前面是此字符。此字符位于行首,后跟一个“.”,则会关闭连接;后跟一个“^Z”时,会暂停 telnet 命令。初始状态是禁用 rlogin 转义字符。
start 如果已启用 TELNET TOGGLE-FLOW-CONTROL 选项,则此字符将被视为终端的“开始”字符。kill 字符的初始值将设置为终端的“开始”字符。
stop 如果已启用 TELNET TOGGLE-FLOW-CONTROL 选项,则此字符将被视为终端的“停止”字符。kill 字符的初始值将设置为终端的“停止”字符。
susp 如果 telnet 处于本地字符模式,或者启用了 LINEMODE,并且键入了“暂停”字符,则会向远程主机发送一个 TELNET SUSP 序列(参见上面的“发送 susp”)。“暂停”字符的初始值将设置为终端的“暂停”字符。
tracefile
这是将写入 netdata 或选项跟踪为 TRUE 时产生输出的文件。如果设置为“-”,则跟踪信息将写入标准输出(默认值)。
worderase
如果 telnet 处于 LINEMODE 或“旧逐行模式”下,则此字符将被视为终端的“worderase”字符。kill 字符的初始值将设置为终端的“worderase”字符。
? 显示合法的“设置”(“取消设置”)命令。
slc state slc 命令(设置本地字符)用于设置或更改 TELNET LINEMODE 选项已启用时的特殊字符的状态。特殊字符是映射到 TELNET 命令序列(如 ip 或 quit)或行编辑字符(如 erase 和 kill)的字符。默认情况下,本地特殊字符将被导出。
check 验证当前特殊字符的设置。将请求远程端发送所有当前的特殊字符设置,如果有任何与本地端的差异,本地端将切换到远程值。
export 切换到特殊字符的本地默认值。本地默认字符是在启动 telnet 时本地终端的字符。
import 切换到特殊字符的远程默认值。远程默认字符是在建立 TELNET 连接时远程系统的字符。
? 打印 slc 命令的帮助信息。
status 显示 telnet 的当前状态。这包括已连接的对端,以及当前模式。
切换参数 ...
切换(在 TRUE 和 FALSE 之间)各种标志,这些标志控制 telnet 如何响应事件。可以使用上述 `set` 和 `unset` 命令显式地将这些标志设置为 TRUE 或 FALSE。可以指定多个参数。可以使用 `display` 命令查询这些标志的状态。有效的参数是:
authdebug 启用身份验证代码的调试信息。
autoflush 如果 `autoflush` 和 `localchars` 都为 TRUE,那么当识别到 `ao` 或 `quit` 字符(并转换为 TELNET 序列;有关详细信息,请参见上面的 `set`),telnet 将拒绝在用户终端上显示任何数据,直到远程系统通过 TELNET TIMING MARK 选项确认已处理这些 TELNET 序列。此标志的初始值为 TRUE,如果终端用户未执行过“stty noflush”,则为 FALSE(请参见 stty(1))。
autodecrypt 当协商 TELNET ENCRYPT 选项时,默认情况下,数据流的实际加密(解密)不会自动开始。`autoencrypt`(`autodecrypt`)命令表示应尽快启用输出(输入)流的加密。
注意:由于出口管制,TELNET ENCRYPT 选项在除美国和加拿大以外的地区不受支持。
autologin 如果远程端支持 TELNET AUTHENTICATION 选项,则 TELNET 尝试使用它来执行自动身份验证。如果不支持 AUTHENTICATION 选项,用户的登录名将通过 TELNET ENVIRON 选项传递。此命令与在 `open` 命令中指定选项相同。
autosynch 如果 `autosynch` 和 `localchars` 都为 TRUE,那么当键入 `intr` 或 `quit` 字符时(有关 `intr` 和 `quit` 字符的描述,请参见上面的 `set`),发送的 TELNET 序列后将附加 TELNET SYNCH 序列。此过程应导致远程系统开始丢弃所有先前键入的输入,直到读取并处理了这两个 TELNET 序列。此标志的初始值为 FALSE。
binary 在输入和输出上启用或禁用 TELNET BINARY 选项。
inbinary 在输入上启用或禁用 TELNET BINARY 选项。
outbinary 在输出上启用或禁用 TELNET BINARY 选项。
crlf 如果此标志为 TRUE,则回车符将发送为 <CR><LF>。如果此标志为 FALSE,则回车符将发送为 <CR><NUL>。此标志的初始值为 FALSE。
crmod 切换回车符模式。当启用此模式时,从远程主机接收的大多数回车符都将被映射为回车符后跟换行符。此模式不会影响用户键入的字符,只会影响从远程主机接收的字符。除非远程主机仅发送回车符,而不发送换行符,否则此模式不太有用。此标志的初始值为 FALSE。
debug 切换套接字级别调试(仅对超级用户有用)。
初始值为 FALSE。
encdebug 启用加密代码的调试信息。
localchars 如果此选项为 TRUE,则本地识别刷新、中断、退出、擦除和清除字符(请参阅上面的设置),并将其转换为(希望是)适当的 TELNET 控制序列(分别为 ao、ip、brk、ec 和 el;请参阅上面的发送)。其初始值为“旧逐行模式”下为 TRUE,在“逐字符模式”下为 FALSE。当启用了 LINEMODE 选项时,将忽略 localchars 的值,并始终假定其为 TRUE。如果 LINEMODE 曾经启用,则 quit 将发送为 abort,并且 eof 和 suspend 将发送为 eof 和 susp(请参阅上面的发送)。
netdata 切换显示所有网络数据(十六进制格式)。
初始值为 FALSE。
options 切换显示一些内部 telnet 协议处理(与 TELNET 选项有关)。
初始值为 FALSE。
prettydump 当启用了 netdata 选项时,如果启用了 prettydump,则 netdata 命令的输出将以更易于阅读的格式进行格式化。输出中的每个字符之间会插入空格,并且任何 TELNET 转义序列的开头都会以“*”开头,以帮助定位它们。
skiprc 当 skiprc 选项为 TRUE 时,TELNET 在打开连接时会跳过读取用户主目录中的 .telnetrc 文件。
初始值为 FALSE。
termdata 切换显示所有终端数据(十六进制格式)。
初始值为 FALSE。
verbose_encrypt
当 verbose_encrypt 选项为 TRUE 时,TELNET 每次启用或禁用加密时都会打印一条消息。初始值为 FALSE。注意:由于出口管制,在美国和加拿大以外的地方不支持数据加密。
? 显示合法的切换命令。
z 暂停 telnet。此命令仅适用于用户使用 csh(1) 时。
! [命令]
在本地系统上以子 shell 的形式执行单个命令。如果省略命令,则将调用一个交互式子 shell。
? [命令]
获取帮助。如果不带参数,telnet 会打印帮助摘要。如果指定了命令,telnet 将仅打印该命令的帮助信息。
环境
telnet 至少使用 HOME、SHELL、DISPLAY 和 TERM 环境变量。其他环境变量可以通过 TELNET ENVIRON 选项传递到另一端。
文件
~/.telnetrc 用户自定义的 telnet 启动值
历史
telnet 命令出现在 4.2BSD 中。
注意事项
在某些远程系统上,在使用“逐行模式”时,需要手动关闭回显。
在“逐行模式”或 LINEMODE 中,终端的 EOF 字符只有在它是行中的第一个字符时才会被识别(并发送到远程系统)。