UNIX网络支持常见应用详解
1. 常见UNIX网络应用概述
在UNIX系统中,多数网络应用虽并非网络运行的严格必需,但它们为用户提供了核心服务,是网络实现的关键。许多这类应用无需特殊配置,只要UNIX系统和网络正确设置(包括互联网超级守护进程
inetd
的设置),一些网络应用即可立即使用,不过部分应用仍需一定的管理操作。
常见的网络应用有以下三种:
-
telnet
:网络终端协议,用于通过网络进行远程登录。
-
ftp
:文件传输协议,用于在网络上进行文件传输。
-
finger
:提供远程用户的信息。
这些应用在日常UNIX管理中十分重要。由于它们具有交互性,通常从命令行使用,但也可作为shell脚本和其他程序的一部分。
这三种应用均基于客户端/服务器模型。客户端根据需要启动相应的应用程序(可从命令行、脚本或其他程序启动),服务器端则由对应的守护进程(
telnetd
、
ftpd
和
fingerd
)处理,当客户端请求到达相应端口时,互联网超级服务器(
inetd
守护进程)会调用这些守护进程。
要正确设置这三种应用并不复杂,只需在服务器端启用或禁用它们,这些操作可通过
inetd
配置文件
/etc/inetd.conf
完成。以下是相关配置示例:
$ cat /etc/inetd.conf
.....
.....
# ARPA/Berkeley services
ftp stream tcp nowait root /etc/ftpd ftpd −l
telnet stream tcp nowait root /etc/telnetd telnetd
# finger stream tcp nowait bin /etc/fingerd fingerd
.....
在这个例子中,
ftp
和
telnet
已启用,而
finger
被禁用(该条目被注释掉)。
2. Telnet应用详解
2.1 Telnet基本功能
Telnet使用TELNET协议为远程系统提供用户界面。若不带参数调用
telnet
,它将进入命令模式,提示符为
telnet
,在此模式下可接受并执行“telnet命令”;若带参数调用,它将使用这些参数执行
open
命令,命令格式如下:
telnet [hostname [ port ]]
其中:
-
hostname
:远程主机的名称。
-
port
:网络服务(应用)的端口号,
telnet
的默认端口是23。
建立连接后,
telnet
进入输入模式,此时输入的文本将发送到远程主机。输入模式分为“逐字符”或“逐行”,具体取决于远程系统的支持情况。在“逐字符”模式下,输入的大部分文本会立即发送到远程主机处理;在“逐行”模式下,所有文本会在本地回显,通常只有完整的行才会发送到远程主机。“本地回显字符”(初始为
^E
)可用于开启或关闭本地回显,常用于输入密码时避免密码显示。
连接到远程主机时,输入
telnet
的“转义字符”(默认是
^]
,即
Ctrl - 右括号
)可进入命令模式,在命令模式下可使用常规的终端编辑约定。
2.2 Telnet常用命令
以下是一些常用的
telnet
命令:
| Telnet命令 | 含义 |
| — | — |
|
open host [ port ]
| 打开与指定主机的连接。若未指定端口号,
telnet
将尝试连接默认端口的TELNET服务器。主机可以是主机名或点分十进制表示的IP地址。 |
|
close
| 关闭TELNET会话并返回命令模式。 |
|
quit
| 关闭所有打开的TELNET会话并退出
telnet
。在命令模式下输入EOF也会关闭会话并退出。 |
|
mode type
|
type
可以是
line
(逐行模式)或
character
(逐字符模式)。请求远程主机进入指定模式,若远程主机支持则会进入该模式。 |
|
status
| 显示
telnet
的当前状态,包括连接的对等方和当前模式。 |
|
display [argument … ]
| 显示所有或部分设置的值。 |
|
? [command]
| 获取帮助。无参数时,
telnet
打印帮助摘要;指定命令时,仅打印该命令的帮助信息。 |
|
send arguments
| 向远程主机发送一个或多个特殊字符序列(可一次指定多个参数)。 |
|
set argument value
| 将
telnet
的某个变量设置为特定值。特殊值
off
可关闭与该变量关联的功能,变量的值可通过
display
命令查询。 |
telnet
常用于远程登录主机进行UNIX管理,但需注意它在通信中使用明文,包括密码传输,在不安全环境中存在较大风险。不过,它允许指定非默认端口,可用于检查端口是否活跃,即守护进程是否在该端口监听。由于其严格的交互性,包括交互式登录过程,
telnet
不适合用于shell脚本编程。
3. FTP应用详解
3.1 FTP基本功能
ftp
是标准文件传输协议(FTP)的用户界面,用于在远程主机(网络站点)之间传输文件。在客户端,可在命令行指定要通信的远程主机,若指定,
ftp
会立即尝试与该主机的FTP守护进程建立连接;否则,
ftp
进入命令解释器,等待用户输入
ftp
命令,并显示提示符
ftp>
。
ftp
命令的格式如下:
ftp [−options] [ hostname ]
其中选项可在命令行或命令解释器中指定:
-
-d
:启用调试模式。
-
-g
:禁用文件名通配。
-
-i
:在多文件传输时关闭交互式提示。
-
-n
:初始连接时不尝试“自动登录”。若启用自动登录,
ftp
会检查用户主目录下的
.netrc
文件,查找远程机器的账户信息;若没有相应条目,会提示输入远程机器的登录名(默认是本地机器的登录名),必要时还会提示输入密码和账户信息。
-
-v
:显示远程服务器的所有响应,并报告数据传输统计信息。若
ftp
以交互方式运行且输入来自用户终端,此选项默认开启。
-
hostname
:远程主机的名称。
3.2 FTP常用命令
以下是一些常用的
ftp
命令:
| FTP命令 | 含义 |
| — | — |
|
! [command]
| 在本地机器上以shell命令运行指定命令。若未指定命令,则启动交互式shell。 |
|
ascii
| 将“表示类型”设置为“网络ASCII”,这是默认类型。 |
|
bell
| 每个文件传输命令完成后响铃。 |
|
binary
| 将“表示类型”设置为“图像”。 |
|
bye
| 终止与远程服务器的FTP会话并退出
ftp
。输入EOF也会终止会话并退出。 |
|
case
| 在
mget
命令期间切换远程计算机文件名的大小写映射。开启时(默认关闭),全大写的远程文件名会以小写形式写入本地目录。 |
|
cd remote−directory
| 将远程机器的工作目录更改为指定目录。 |
|
close
| 终止与远程服务器的FTP会话并返回命令解释器,清除所有定义的宏。 |
|
delete remote−file
| 删除远程机器上的指定文件。 |
|
debug [debug−value]
| 切换调试模式。若指定可选的调试值,则设置调试级别。调试开启时,
ftp
会在发送到远程机器的每个命令前加上
-->
打印出来。 |
|
dir [remote−directory] [local−file]
| 打印指定远程目录的内容列表,可选地将输出保存到本地文件。若未指定目录,则使用远程机器的当前工作目录。若未指定本地文件或本地文件为
-
,则输出发送到终端。 |
|
disconnect
| 等同于
close
。 |
|
get remote−file [local−file]
| 从远程机器检索文件并存储在本地机器上。若未指定本地文件名,则使用远程文件名。 |
|
help [command]
| 打印指定命令的含义信息。无参数时,
ftp
打印已知命令列表。 |
|
lcd [directory]
| 更改本地机器的工作目录。若未指定目录,则使用用户的主目录。 |
|
ls [remote−directory] [local−file]
| 打印远程机器目录内容的简略列表。若未指定远程目录,则使用当前工作目录。若未指定本地文件或本地文件为
-
,则输出发送到终端。 |
|
mdelete [remote−files]
| 删除远程机器上的多个文件。 |
|
mdir rote−files local−file
| 类似于
dir
,但可指定多个远程文件。若交互式提示开启,
ftp
会提示用户确认最后一个参数是否为接收
mdir
输出的目标本地文件。 |
|
mget remote−files
| 展开远程机器上的多个文件并逐个执行
get
操作。 |
|
mkdir directory−name
| 在远程机器上创建目录。 |
|
mls remote−files local−file
| 类似于
ls
,但可指定多个远程文件。若交互式提示开启,
ftp
会提示用户确认最后一个参数是否为接收
mls
输出的目标本地文件。 |
|
mode [mode−name]
| 将“传输模式”设置为指定模式,唯一有效的模式是
stream
,对应默认的“流”模式。 |
|
mput local−files
| 展开本地文件列表中的通配符,并对每个文件执行
put
操作。 |
|
open host [port]
| 建立与指定主机FTP服务器的连接。可指定可选的端口号,
ftp
将尝试连接该端口的FTP服务器。若自动登录选项开启(默认),还会尝试自动登录。 |
|
prompt
| 切换交互式提示。在多文件传输时,交互式提示允许用户选择性地检索或存储文件。默认情况下,提示开启;关闭提示后,
mget
或
mput
将传输所有文件,
mdelete
将删除所有文件。 |
|
put local−file [remote−file]
| 将本地文件存储到远程机器上。若未指定远程文件名,将根据
ntrans
或
nmap
设置处理后使用本地文件名。文件传输使用当前的“表示类型”、“文件结构”和“传输模式”设置。 |
|
pwd
| 打印远程机器的当前工作目录名称。 |
|
quit
| 等同于
bye
。 |
|
recv remote−file [local−file]
| 等同于
get
。 |
|
remotehelp [command−name]
| 向远程FTP服务器请求帮助。若指定命令名,也会将其提供给服务器。 |
|
rename from to
| 将远程机器上的文件
from
重命名为
to
。 |
|
reset
| 清除回复队列。此命令用于与远程FTP服务器重新同步命令/回复顺序,在远程服务器违反FTP协议后可能需要进行同步。 |
|
rmdir directory−name
| 删除远程机器上的目录。 |
|
send local−file [remote−file]
| 等同于
put
。 |
|
sendport
| 切换PORT命令的使用。默认情况下,
ftp
在每次数据传输建立连接时会尝试使用PORT命令,使用PORT命令可避免多文件传输时的延迟。若PORT命令失败,
ftp
将使用默认数据端口。禁用PORT命令后,每次数据传输将不再尝试使用PORT命令,这在连接某些忽略PORT命令但错误指示已接受的FTP实现时很有用。 |
|
status
| 显示
ftp
的当前状态。 |
|
type [type−name]
| 将“表示类型”设置为指定类型。有效类型包括
ascii
(网络ASCII)、
binary
或
image
(图像)。未指定类型时,打印当前类型。默认类型是“网络ASCII”。 |
|
user user−name [password] [account]
| 向远程FTP服务器标识自己。若未指定密码且服务器需要,
ftp
会提示用户输入(禁用本地回显后)。若未指定账户字段且服务器需要,用户也会被提示输入。若指定了账户字段,登录序列完成后,若服务器不需要该字段,会将账户命令转发给远程服务器。除非
ftp
以禁用“自动登录”的方式调用,否则此过程在初始连接到FTP服务器时会自动完成。 |
|
verbose
| 切换详细模式。详细模式下,会向用户显示FTP服务器的所有响应,文件传输完成时还会报告传输效率统计信息。默认情况下,若
ftp
命令来自终端,详细模式开启;否则关闭。 |
|
? [command]
| 等同于
help
。 |
命令参数中包含空格时,可用引号(
"
)括起来。若未指定非可选的命令参数,
ftp
会提示用户输入。使用终端中断键(通常是
Ctrl - C
)可中止文件传输,所有已提交的传输将立即停止。
上述列出的
ftp
命令只是最常见的一部分,
ftp
实际上提供了强大的命令集。它本质上是交互式网络应用,但支持初始主机连接时的“自动登录”,在一定条件下可自动完成身份验证,因此适合用于shell脚本编程,常用于在远程主机之间传输文件。此外,
ftp
还支持“匿名访问”,即使用全局只读的FTP账户。
3.3 FTP自动登录
ftp
使用用户主目录下的隐藏文件
.netrc
中的登录数据。该文件必须由用户拥有,且只能由用户读写,因为它包含敏感信息(如明文FTP密码)。
.netrc
文件中的每个条目完整描述了一次针对特定主机的FTP登录会话。当
ftp
与主机建立初始连接时,会查询该文件获取相应的登录数据。若没有合适的条目,则执行常规登录过程并要求用户进行完整身份验证;否则,自动提交指定的用户名和密码。
以下是一个
.netrc
文件的示例:
$ cd /home/bjl
$ cat .netrc
machine hostname1 login username1 password letmein1
machine hostname2.domain2.com login username2 password letusin2
machine 208.208.25.153 login username3 password passme3
每个条目包含三个字段,每个字段由两个子字段组成:
-
字段1
:指令
machine
和主机名,主机名可以是相对名、绝对(完整规范)主机名或数字形式的IP地址。
-
字段2
:指令
login
和用于登录FTP主机的登录名(与
.netrc
文件所有者的用户名无关)。
-
字段3
:指令
password
和用于登录FTP主机的实际明文密码。
实现自动登录后,
ftp
非常适合用于shell脚本。以下是一个使用Korn shell“Here文档”进行FTP会话的示例,用于在两个主机之间交换ASCII文件:
$ cat /home/username1/ftpscript.ksh
#!/ bin/ksh
#
# Prepare FTP related variables
FTPSITE = hostname2
LOCDIR = /share/local_dir
REMDIR = /pub/remote_dir
FILETOPUT = filename1
FILETOGET = filename2
LOG = /tmp/ftpscript.log
.....
.....
cd $LOCDIR
ftp $FTPSITE <<EOF 1>>$LOG 2>&1
cd $REMDIR
ascii
put $FILETOPUT
get $FILETOGET
bye
EOF
.....
.....
“Here文档”以
ftp
命令开始,以指定的终止字符序列(这里是
EOF
)结束。整个FTP会话会记录在指定的日志文件中(标准输出和错误输出重定向到日志文件)。“Here文档”开始后,Korn shell将控制权交给“
ftp
命令解释器”,文档内的所有行都是严格的
ftp
命令,会依次执行,最后控制权再交回Korn shell。
在这个示例中,“Here文档”建立了一个FTP会话,用户身份验证自动完成(
.netrc
文件中有该会话的条目),并以ASCII模式交换了两个文件,最后关闭了FTP会话。每个
ftp
命令行在完成前一行后执行,与命令的退出状态无关,只有通过检查日志文件才能确定每个指定命令的状态。
3.4 匿名FTP
匿名FTP是一种使用用户名
anonymous
和通常为真实用户名或电子邮件地址作为密码登录远程服务器的FTP会话。其目的是允许用户从互联网上的FTP服务器检索公开可用的文件和程序,无需在FTP服务器上拥有账户。当然,对服务器目录的访问通常限制为只读模式。
使用远程服务器提供的匿名FTP服务很简单,但在系统上设置匿名FTP服务则较为复杂。以下是搭建匿名FTP站点的基本步骤:
1.
在
/etc/passwd
文件中添加用户
ftp
:
新条目:ftp:*:UID:GID:Anonymous ftp:/usr/ftp
-
在
/etc/group文件中添加组anonymous:
新条目:anonymous:*:GID
-
创建由
ftp用户拥有且任何人都不能写入的FTP主目录 :
mkdir /usr/ftp
综上所述,UNIX系统中的
telnet
、
ftp
和
finger
等网络应用为用户提供了强大的功能,在网络管理和文件传输等方面发挥着重要作用。了解它们的使用方法和配置技巧,有助于更好地利用UNIX系统的网络资源。
以下是一个简单的mermaid流程图,展示了
ftp
自动登录的流程:
graph TD;
A[启动ftp] --> B{.netrc文件中有对应条目?};
B -- 有 --> C[自动提交用户名和密码];
B -- 无 --> D[执行常规登录过程];
C --> E[建立连接并操作];
D --> E;
通过上述内容,我们详细介绍了UNIX网络支持中的常见应用,包括
telnet
和
ftp
的功能、命令使用、自动登录以及匿名FTP的设置等方面,希望能帮助你更好地掌握这些应用在UNIX系统中的使用。
UNIX网络支持常见应用详解
4. 三种应用的对比与总结
| 应用名称 | 功能描述 | 适用场景 | 安全性 | 脚本适用性 |
|---|---|---|---|---|
| Telnet | 提供远程登录功能,使用TELNET协议与远程系统交互 | 远程管理UNIX主机 | 低,使用明文传输,包括密码 | 不适合,交互性强 |
| FTP | 实现文件在远程主机之间的传输 | 远程文件上传和下载 | 一般,自动登录和匿名访问有一定安全风险 | 适合,支持自动登录 |
| Finger | 提供远程用户信息 | 了解远程用户情况 | 未详细提及 | 未详细提及 |
从使用频率来看,Telnet和FTP在日常网络管理中更为常用。Telnet主要用于远程操作,让管理员可以在本地对远程主机进行配置和管理;FTP则专注于文件的传输,无论是小文件的简单交换还是大量文件的批量传输都能胜任。
在安全性方面,Telnet的明文传输特性使其在不安全环境中存在较大风险,而FTP虽然也有一定安全隐患,但通过合理配置自动登录和匿名访问可以在一定程度上降低风险。
对于脚本编程,FTP的自动登录功能使其成为在脚本中实现文件传输的理想选择,而Telnet由于其严格的交互性,很难在脚本中发挥作用。
5. 实际应用案例分析
5.1 Telnet远程管理案例
假设某公司有多个分布在不同地区的UNIX服务器,管理员需要在总部对这些服务器进行日常维护。管理员可以使用Telnet进行远程登录:
telnet server1.example.com
登录后,管理员可以执行各种系统命令,如查看系统状态、修改配置文件等。但需要注意的是,由于Telnet的安全性问题,建议在安全的内部网络中使用,或者结合VPN等安全措施。
5.2 FTP文件传输案例
某开发团队需要将本地开发的代码上传到远程测试服务器进行测试。团队成员可以使用FTP进行文件传输:
ftp testserver.example.com
登录后,使用
put
命令将本地代码文件上传到远程服务器:
put local_code_file.py remote_code_file.py
同时,团队也可以使用
get
命令从远程服务器下载测试报告等文件:
get remote_test_report.txt local_test_report.txt
6. 注意事项与技巧
6.1 Telnet注意事项
- 安全风险 :避免在公共网络或不安全环境中使用Telnet,建议使用更安全的远程登录协议,如SSH。
- 端口检查 :使用非默认端口时,要确保目标主机的相应端口是开放的。
6.2 FTP注意事项
-
自动登录文件安全
:
.netrc文件包含敏感信息,要确保其权限设置正确,只有文件所有者可以读写。 - 匿名FTP设置 :设置匿名FTP服务时,要严格控制文件访问权限,避免敏感信息泄露。
6.3 通用技巧
- 命令缩写 :在Telnet和FTP中,很多命令可以只输入部分字母来执行,提高操作效率。
- 日志记录 :在脚本中使用Telnet和FTP时,要记录操作日志,方便后续排查问题。
7. 未来发展趋势
随着网络技术的不断发展,Telnet和FTP的使用可能会逐渐减少。Telnet由于其安全性问题,已经被更安全的SSH协议所取代。而FTP虽然在文件传输方面仍然有一定的应用,但也面临着一些新兴技术的挑战,如基于HTTP的文件传输协议。
不过,在一些特定的场景下,如内部网络的简单管理和文件传输,Telnet和FTP仍然有其存在的价值。未来,这些技术可能会在安全性和性能方面进行改进,以适应不断变化的网络环境。
以下是一个mermaid流程图,展示了从启动Telnet到完成远程操作的整个过程:
graph TD;
A[启动Telnet] --> B{是否带参数};
B -- 是 --> C[执行open命令建立连接];
B -- 否 --> D[进入命令模式];
C --> E[进入输入模式];
D --> F[等待命令输入];
E --> G[进行远程操作];
F --> C;
G --> H{是否结束操作};
H -- 是 --> I[关闭连接并退出];
H -- 否 --> G;
通过对UNIX网络支持中常见应用的详细介绍,我们了解了Telnet、FTP和Finger的功能、使用方法、安全问题以及实际应用案例。在实际使用中,我们要根据具体需求选择合适的应用,并注意安全问题,以充分发挥这些应用的优势。同时,我们也要关注技术的发展趋势,及时采用更安全、更高效的技术。
超级会员免费看
52

被折叠的 条评论
为什么被折叠?



