16.6 通信命令

以下某些命令可用于网络数据传输和分析以及定位垃圾邮件发送者arrow-up-right

信息和统计命令

host

使用DNS(Domain Name System 域名解析协议),根据主机名或ip地址搜索相关Internet主机的信息。

bash$ host surfacemail.com
surfacemail.com. has address 202.92.42.236

ipcalc

显示主机的IP信息。当使用-h选项时,ipcalc将进行反向DNS查找,根据ip地址查找主机 (服务器) 的名称。

bash$ ipcalc -h 202.92.42.236
HOSTNAME=surfacemail.com

nslookup

通过ip地址在主机上查找Internet “名称服务器”。这基本上等同于ipcalc -hdig -x。该命令可以交互地或非交互地运行,即在脚本中运行。

据称nslookup命令已被 “弃用”,但它仍然有用。

bash$ nslookup -sil 66.97.104.180
nslookup kuhleersparnis.ch
 Server:         135.116.137.2
 Address:        135.116.137.2#53

 Non-authoritative answer:
 Name:   kuhleersparnis.ch

dig

域信息扒手。类似与nslookup命令,dig命令在主机上查找Internet名称服务器。可以从命令行或脚本中运行。

dig有一些有趣的选项,+time=N将请求超时时间设置为N秒,+nofail直到收到回复持续向服务器发起请求,-x反向地址查找。

请比较dig -xipcalc -hnslookup之间的输出结果的差异。

样例 16-40. 找出垃圾邮件发送者

样例 16-41. 分析一个垃圾邮件域名

有关上述脚本的更详细的版本,请参阅样例 A-28arrow-up-right

traceroute

跟踪发送到远程主机的数据包所采用的路由。此命令对LAN(局域网)、WAN(广域网)以及Internet均有效。远程主机可以由ip地址指定。该命令的输出可以由管道中的greparrow-up-rightsedarrow-up-right 过滤。

ping

能够将ICMP ECHO_REQUEST数据包广播到本地或远程网络上的另一台主机。这是用于测试网络连接的诊断工具,应谨慎使用。

一个成功的ping返回0的退出状态arrow-up-right。可以在脚本中进行测试。

whois

执行DNS (域名系统) 查找。-h选项允许指定要查询哪个特定的whois服务器。参阅样例 4-6arrow-up-right样例 16-40arrow-up-right

finger

检索有关网络上用户的信息。此命令可以选择显示用户的~/.plan~/.project~/.forward文件,如果以上文件存在。

出于安全考虑,许多网络禁用了finger及其关联的守护程序(daemon)。[1]arrow-up-right

chfn

改变finger命令揭露的信息。

vrfy

验证Internet电子邮件地址。

较新的Linux发行版似乎缺少此命令。

远程主机访问命令

sx, rx

sxrx命令集使用xmodem协议在远程主机之间传输文件。这些通常是通信包的一部分,例如minicom

sz, rz

szrz命令集使用zmodem协议在远程主机之间传输文件。Zmodemxmodem有一定的优势,例如更快的传输速率和恢复中断的文件传输。与sxrx命令集一样,它们通常是通信包的一部分。

ftp

用于远程主机中上传/下载文件的实用程序和协议。ftp会话可以在脚本中自动化 (请参阅样例 19-6arrow-up-right样例 A-4arrow-up-right)。

uucp, uux, cu

uucpUnix 拷贝到 Unix。这是一个用于在UNIX服务器之间传输文件的通信包。shell脚本是处理uucp命令序列的有效方法。

自从互联网和电子邮件出现以来,uucp似乎已经变得晦涩难懂,但它仍然存在,并且在互联网连接不可用或不合适的情况下仍然完全可行。uucp的优点在与它的容错能力,因此即使存在服务中断,复制操作也会在恢复连接时从停止的地方恢复。


uuxUnix 到 Unix执行。在远程系统上执行一条指令。这条指令是uucp包的一部分。


cu:调用远程系统并作为一个简单的终端进行连接。这是telnetarrow-up-right的愚蠢版本。该命令是uucp包的一部分。

telnet

用于连接到远程主机的实用程序和协议。

notetelnet协议包含安全漏洞,因此应该尽量避免使用。不建议在shell脚本中使用它。

wget

wget实用程序以非交互方式从Web或ftp站点检索或下载文件。它非常适合用于脚本中。

样例 16-42. 获取股票报价

另请参阅样例 A-30arrow-up-right样例 A-31arrow-up-right

lynx

lynx Web和文件浏览器可以在脚本 (带有-dump选项) 中使用,以非交互方式从Web或ftp站点检索文件。

使用-traversal选项,lynx会从指定为参数的HTTP URL开始,然后 “抓取” 位于指定服务器上的所有链接。与-crawl选项一起使用,可以将页面文本输出到日志中。

rlogin

远程登录,在远程主机上启动一个会话。这个命令存在安全隐患,请使用ssharrow-up-right替代。

rsh

远程shell,在远程主机上执行命令。这个命令存在安全隐患,请使用ssharrow-up-right替代。

rcp

远程复制,在两台不同的联网主机之间复制文件。

rsync

远程同步,在两个不同的联网主机之间更新 (同步) 文件。

样例 16-43. 升级FC4

另请参阅样例 A-32arrow-up-right

note在shell脚本中不建议使用rcparrow-up-rightrsyncarrow-up-right和类似的具有安全隐患的实用程序。相反,请考虑使用sshscparrow-up-rightexpect脚本。

ssh

安全的shell,登录到远程主机并在那里执行命令。它使用了身份认证和加密技术,是telnetrloginrcprsh的安全替代品。请参阅其man手册arrow-up-right

样例 16-44. 使用ssh命令

note在循环中,ssh可能会导致非预期的行为。根据comp.unix shell存档中的Usenet帖子arrow-up-right所述,ssh继承了循环的stdin。要解决此问题,请将-n-f选项传递给ssh

感谢 Jason Bechtel指出。

scp

安全的复制行为,在功能上类似于rcp,在两个不同的联网主机之间复制文件,但这样做需要身份验证,并具有类似于ssh的安全级别。

本地网络命令

write

这是用于终端到终端通信的实用程序。它允许将内容从你的终端 (控制台或xterm) 发送到另一个用户的。当然,mesgarrow-up-right命令可以用于禁用对终端的写权限。

由于write是交互式的,因此通常不会用于脚本。

netconfig

用于配置网络适配器 (使用DHCP) 的命令行实用程序。此命令源于Red Hat centric Linux发行版。

邮件命令

mail

发送或者阅读电子邮件信息。

这个精简的命令行邮件客户端适配脚本使用。

样例 16-45. 一个给自己发邮件的脚本

mailto

mail命令类似,mailto从命令行或脚本中发送电子邮件。但是,mailto也允许发送MIME (多媒体) 消息。

mailstats

显示邮件统计信息。此命令只能由root用户调用。

vacation

此实用程序会以电子邮件的形式自动回复预定收件人正在休假且暂时不可用。该命令在联机环境下运行并与sendmail结合使用,不适用于拨号POPmail帐户。

注记

[1]arrow-up-right守护进程是未附加(attach)到终端会话的后台进程。守护进程是在指定时间或由某些事件显式触发从而执行的特定服务。

最后更新于