6—通讯命令
下边命令中的某几个命令你会在追踪垃圾邮件练习中找到其用法, 用来进行网络数据的转换和分析.
信息与统计
6.1 host
通过名字或IP地址来搜索一个互联网主机的信息, 使用DNS.
bash$ host surfacemail.com
surfacemail.com. has address 202.92.42.236
6.2 ipcalc
显示一个主机IP信息. 使用-h选项, ipcalc将会做一个DNS的反向查询, 通过IP地址找到主机(服务器)名. bash$ ipcalc -h 202.92.42.236
HOSTNAME=surfacemail.com
6.3 nslookup
通过IP地址在一个主机上做一个互联网的"名字服务查询". 事实上, 这与ipcalc -h或dig -x等价. 这个命令既可以交互运行也可以非交互运行, 换句话说, 就是在脚本中运行.
nslookup命令据说已经被慢慢的"忽视"了, 但事实上它是有一定的作用.
6.4 dig
Domain Information Groper(域信息查询). 与nslookup很相似, dig也可以在一个主机上做互联网的"名字服务查询". 这个命令既可以交互运行也可以非交互运行, 换句话说, 就是在脚本中运行.
下面是一些dig命令有趣的选项, +time=N选项用来设置查询超时为N秒, +nofail选项用来持续查询服务器直到收到一个响应, -x会做反向地址查询.
比较下边这3个命令的输出, dig -x, ipcalc -h和 nslookup.
bash$ dig -x 81.9.6.2
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 11649
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;2.6.9.81.in-addr.arpa. IN PTR
;; AUTHORITY SECTION:
6.9.81.in-addr.arpa. 3600 IN SOA ns.eltel.net. noc.eltel.net.
2002031705 900 600 86400 3600
;; Query time: 537 msec
;; SERVER: 135.116.137.2#53(135.116.137.2)
;; WHEN: Wed Jun 26 08:35:24 2002
;; MSG SIZE rcvd: 91
6.5 traceroute
跟踪包发送到远端主机过程中的路由信息. 这个命令在LAN, WAN, 或者在Internet上都可以正常工作. 远端主机可以通过IP地址来指定. 这个命令的输出也可以通过管道中的grep或sed命令来过滤.
bash$ traceroute 81.9.6.2
6.6 ping
广播一个"ICMP ECHO_REQUEST"包到其他主机上, 既可以是本地网络也可以是远端网络. 这是一个测试网络连接的诊断工具, 应该小心使用.
如果ping成功之行, 那么返回的退出状态码为0. 可以用在脚本的测试语句中.
bash$ ping localhost
6.7 whois
执行DNS(域名系统)查询. -h选项允许指定需要查询的特定whois服务器.
6.8 finger
取得网络上的用户信息. 另外这个命令可以显示一个用户的~/.plan, ~/.project, 和~/.forward文件, 当然, 前提是如果这些文件存在的话.
bash$ finger
出于安全上的考虑, 许多网络都禁用了finger, 以及和它相关的幽灵进程. [1]
6.9 chfn
修改finger命令所显示出来的用户信息.
6.10 vrfy
验证一个互联网的e-mail地址.
远端主机接入
6.11 sx, rx
sx和rx命令使用xmodem协议, 置服务来向远端主机传输文件和接收文件. 这些都是通讯安装包的一般部分, 比如minicom.
6.12 sz, rz
sz和rz命令使用zmodem协议, 设置服务来向远端主机传输文件和接收文件. Zmodem协议在某些方面比xmodem协议强, 比如使用更快的传输波特率, 并且可以对中断的文件进行续传. 与sx和rx一样, 这些都是通讯安装包的一般部分.
6.13 ftp
向远端服务器上传或下载的工具, 也是一种协议. 一个ftp会话可以写到脚本中自动运行.
6.14 uucp, uux, cu
uucp: UNIX到UNIX拷贝. 这是一个通讯安装包, 目的是为了在UNIX服务器之间传输文件. 使用shell脚本来处理uucp命令序列是一种有效的方法.
6.15 cu: Call Up 一个远端系统并且作为一个简单终端进行连接. 这是一个telnet的缩减版本. 这个命令是uucp包的一部分.
6.16 telnet
连接远端主机的工具和协议.
telnet协议本身包含安全漏洞, 因此我们应该适当的避免使用.
6.17 wget
wget工具使用非交互的形式从web或ftp站点上取得或下载文件. 在脚本中使用正好.
1 wget -p
2 # -p或--page-requisite选项将会使得wget取得所有在显示指定页时
3 #+ 所需要的文件. (译者: 比如内嵌图片和样式表等.)
4
5 wget -r -O $SAVEFILE
6 # -r选项将会递归的从指定站点
7 #+ 上下载所有连接.
6.18 lynx
lynx是一个网页浏览器, 也是一个文件浏览器. 它可以(通过使用-dump选项)在脚本中使用. 它的作用是可以非交互的从Web或ftp站点上获得文件. 1 lynx -dump >$SAVEFILE
6.18 rlogin
远端登陆, 在远端的主机上开启一个会话. 这个命令存在安全隐患, 所以要使用ssh来代替.
6.19 rsh
远端shell, 在远端的主机上执行命令. 这个命令存在安全隐患, 所以要使用ssh来代替.
6.20 rcp 远端拷贝, 在网络上的不同主机间拷贝文件. 使用scp替代
6.21 rsync
远端同步, 在网络上的不同主机间(同步)更新文件.
bash$ rsync -a ~/sourcedir/*txt /node1/subdirectory/
6.22 ssh
安全shell, 登陆远端主机并在其上运行命令. 这个工具具有身份认证和加密的功能, 可以安全的替换telnet, rlogin, rcp, 和rsh等工具. 请参考这个工具的man页来获取详细信息.
在循环中, ssh可能会引起一些异常问题. 根据comp.unix上的shell文档 Usenet post所描述的内容, ssh继承了循环的stdin. 为了解决这个问题, 请使用ssh的-n或者-f选项.
6.23 scp
安全拷贝, 在功能上与rcp很相似, 就是在两个不同的网络主机之间拷贝文件, 但是要使用鉴权的方式, 并且要使用与ssh类似的安全层.
本地网络
6.24 write
这是一个端到端通讯的工具. 这个工具可以从你的终端上(console或者xterm)发送整行数据到另一个用户的终端上. mesg命令当然也可以用来禁用对于一个终端的写权限.
因为write命令是需要交互的, 所以这个命令在脚本中很少使用.
6.25 netconfig
用来配置网络适配器(使用DHCP)的命令行工具. 这个命令对于红帽发行版来说是内置的.
6.26 Mail
mail
发送或者读取e-mail消息.
如果把这个命令行的mail客户端当成一个脚本中的命令来使用的话, 效果非常好.
6.27 mailto
与mail命令很相似, mailto可以使用命令行或在脚本中发送e-mail消息. 而且mailto也可以发送MIME(多媒体)消息.
6.28 vacation
这个工具可以自动回复e-mail给发送者, 表示邮件的接受者正在度假暂时无法收到邮件. 这个工具与sendmail一起运行于网络上, 并且这个工具不支持拨号的POPmail帐号.
【注意】一个幽灵进程指的是并未附加在终端会话中的后台进程. 幽灵进程在指定的时间执行指定的服务, 或者由特定的事件触发来执行指定的服务.
希腊文中的"daemon"意思是幽灵, 这个词充满了神秘感和神奇的力量, 在UNIX中幽灵进程总是在后台默默地执行着分配给它们的任务.