📄 communications.html
字号:
><PRECLASS="SCREEN"><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">ping localhost</KBD><SAMPCLASS="COMPUTEROUTPUT">PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=0 ttl=255 time=709 usec 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=255 time=286 usec --- localhost.localdomain ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.286/0.497/0.709/0.212 ms</SAMP> </PRE></FONT></TD></TR></TABLE> </P></DD><DT><ANAME="WHOISREF"></A><BCLASS="COMMAND">whois</B></DT><DD><P>执行DNS(域名系统)查询. <CODECLASS="OPTION">-h</CODE>选项允许指定需要查询的特定<EM>whois</EM>服务器. 请参考<AHREF="othertypesv.html#EX18">例子 4-6</A>和<AHREF="communications.html#SPAMLOOKUP">例子 12-36</A>. </P></DD><DT><BCLASS="COMMAND">finger</B></DT><DD><P>取得网络上的用户信息. 另外这个命令可以显示一个用户的<TTCLASS="FILENAME">~/.plan</TT>, <TTCLASS="FILENAME">~/.project</TT>, 和<TTCLASS="FILENAME">~/.forward</TT>文件, 当然, 前提是如果这些文件存在的话. </P><P> <TABLEBORDER="1"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="SCREEN"><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">finger</KBD><SAMPCLASS="COMPUTEROUTPUT">Login Name Tty Idle Login Time Office Office Phone bozo Bozo Bozeman tty1 8 Jun 25 16:59 bozo Bozo Bozeman ttyp0 Jun 25 16:59 bozo Bozo Bozeman ttyp1 Jun 25 17:07</SAMP><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">finger bozo</KBD><SAMPCLASS="COMPUTEROUTPUT">Login: bozo Name: Bozo Bozeman Directory: /home/bozo Shell: /bin/bash Office: 2355 Clown St., 543-1234 On since Fri Aug 31 20:13 (MST) on tty1 1 hour 38 minutes idle On since Fri Aug 31 20:13 (MST) on pts/0 12 seconds idle On since Fri Aug 31 20:13 (MST) on pts/1 On since Fri Aug 31 20:31 (MST) on pts/2 1 hour 16 minutes idle No mail. No Plan.</SAMP> </PRE></FONT></TD></TR></TABLE> </P><P>出于安全上的考虑, 许多网络都禁用了<BCLASS="COMMAND">finger</B>, 以及和它相关的幽灵进程. <ANAME="AEN9898"HREF="#FTN.AEN9898"><SPANCLASS="footnote">[1]</SPAN></A> </P></DD><DT><BCLASS="COMMAND">chfn</B></DT><DD><P>修改<BCLASS="COMMAND">finger</B>命令所显示出来的用户信息. </P></DD><DT><BCLASS="COMMAND">vrfy</B></DT><DD><P>验证一个互联网的e-mail地址. </P></DD></DL></DIV><P></P><DIVCLASS="VARIABLELIST"><P><B><ANAME="COMMREMOTE1"></A>远端主机接入</B></P><DL><DT><BCLASS="COMMAND">sx</B>, <BCLASS="COMMAND">rx</B></DT><DD><P><BCLASS="COMMAND">sx</B>和<BCLASS="COMMAND">rx</B>命令使用<EM>xmodem</EM>协议, 置服务来向远端主机传输文件和接收文件. 这些都是通讯安装包的一般部分, 比如<BCLASS="COMMAND">minicom</B>. </P></DD><DT><BCLASS="COMMAND">sz</B>, <BCLASS="COMMAND">rz</B></DT><DD><P><BCLASS="COMMAND">sz</B>和<BCLASS="COMMAND">rz</B>命令使用<EM>zmodem</EM>协议, 设置服务来向远端主机传输文件和接收文件. <EM>Zmodem</EM>协议在某些方面比<EM>xmodem</EM>协议强, 比如使用更快的传输波特率, 并且可以对中断的文件进行续传. 与<BCLASS="COMMAND">sx</B>和<BCLASS="COMMAND">rx</B>一样, 这些都是通讯安装包的一般部分. </P></DD><DT><ANAME="FTPREF"></A><BCLASS="COMMAND">ftp</B></DT><DD><P>向远端服务器上传或下载的工具, 也是一种协议. 一个ftp会话可以写到脚本中自动运行. (请参考<AHREF="here-docs.html#EX72">例子 17-6</A>, <AHREF="contributed-scripts.html#ENCRYPTEDPW">例子 A-4</A>, 和<AHREF="contributed-scripts.html#FTPGET">例子 A-13</A>). </P></DD><DT><BCLASS="COMMAND">uucp</B>, <BCLASS="COMMAND">uux</B>, <BCLASS="COMMAND">cu</B></DT><DD><P><BCLASS="COMMAND">uucp</B>: <EM>UNIX到UNIX拷贝</EM>. 这是一个通讯安装包, 目的是为了在UNIX服务器之间传输文件. 使用shell脚本来处理<BCLASS="COMMAND">uucp</B>命令序列是一种有效的方法. </P><P>因为互联网和电子邮件的出现, <BCLASS="COMMAND">uucp</B>现在看起来已经很落伍了, 但是这个命令在互联网连接不可用或者不适合使用的地方, 这个命令还是可以完美的运行. <BCLASS="COMMAND">uucp</B>的优点就是它的容错性, 即使有一个服务将拷贝操作中断了, 那么当连接恢复的时候, 这个命令还是可以在中断的地方续传. </P><P>---</P><P><BCLASS="COMMAND">uux</B>: <EM>UNIX到UNIX执行</EM>. 在远端系统上执行一个命令. 这个命令是<BCLASS="COMMAND">uucp</B>包的一部分. </P><P>---</P><P><BCLASS="COMMAND">cu</B>: <EM>C</EM>all <EM>U</EM>p 一个远端系统并且作为一个简单终端进行连接. 这是一个<AHREF="communications.html#TELNETREF">telnet</A>的缩减版本. 这个命令是<BCLASS="COMMAND">uucp</B>包的一部分. </P></DD><DT><ANAME="TELNETREF"></A><BCLASS="COMMAND">telnet</B></DT><DD><P>连接远端主机的工具和协议. </P><DIVCLASS="CAUTION"><P></P><TABLECLASS="CAUTION"WIDTH="90%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./images/caution.gif"HSPACE="5"ALT="Caution"></TD><TDALIGN="LEFT"VALIGN="TOP"><P>telnet协议本身包含安全漏洞, 因此我们应该适当的避免使用. </P></TD></TR></TABLE></DIV></DD><DT><ANAME="WGETREF"></A><BCLASS="COMMAND">wget</B></DT><DD><P><BCLASS="COMMAND">wget</B>工具使用<EM>非交互</EM>的形式从web或ftp站点上取得或下载文件. 在脚本中使用正好. </P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 wget -p http://www.xyz23.com/file01.html 2 # -p或--page-requisite选项将会使得wget取得所有在显示指定页时 3 #+ 所需要的文件. (译者: 比如内嵌图片和样式表等.) 4 5 wget -r ftp://ftp.xyz24.net/~bozo/project_files/ -O $SAVEFILE 6 # -r选项将会递归的从指定站点 7 #+ 上下载所有连接. </PRE></FONT></TD></TR></TABLE></P><DIVCLASS="EXAMPLE"><HR><ANAME="QUOTEFETCH"></A><P><B>例子 12-38. 获得一份股票报价</B></P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 # quote-fetch.sh: 下载一份股票报价. 3 4 5 E_NOPARAMS=66 6 7 if [ -z "$1" ] #必须指定需要获取的股票(代号). 8 then echo "Usage: `basename $0` stock-symbol" 9 exit $E_NOPARAMS 10 fi 11 12 stock_symbol=$1 13 14 file_suffix=.html 15 # 获得一个HTML文件, 所以要正确命名它. 16 URL='http://finance.yahoo.com/q?s=' 17 # Yahoo金融板块, 后缀是股票查询. 18 19 # ----------------------------------------------------------- 20 wget -O ${stock_symbol}${file_suffix} "${URL}${stock_symbol}" 21 # ----------------------------------------------------------- 22 23 24 # 在http://search.yahoo.com上查询相关材料: 25 # ----------------------------------------------------------- 26 # URL="http://search.yahoo.com/search?fr=ush-news&p=${query}" 27 # wget -O "$savefilename" "${URL}" 28 # ----------------------------------------------------------- 29 # 保存相关URL的列表. 30 31 exit $? 32 33 # 练习: 34 # ----- 35 # 36 # 1) 添加一个测试来验证用户是否在线. 37 # (暗示: 对"ppp"或"connect"来分析'ps -ax'的输出. 38 # 39 # 2) 修改这个脚本, 让这个脚本具有获得本地天气预报的能力, 40 #+ 将用户的zip code作为参数.</PRE></FONT></TD></TR></TABLE><HR></DIV><P>请参考<AHREF="contributed-scripts.html#WGETTER2">例子 A-30</A>和<AHREF="contributed-scripts.html#BASHPODDER">例子 A-31</A>. </P></DD><DT><ANAME="LYNXREF"></A><BCLASS="COMMAND">lynx</B></DT><DD><P><BCLASS="COMMAND">lynx</B>是一个网页浏览器, 也是一个文件浏览器. 它可以(通过使用<CODECLASS="OPTION">-dump</CODE>选项)在脚本中使用. 它的作用是可以非交互的从Web或ftp站点上获得文件. <TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 lynx -dump http://www.xyz23.com/file01.html >$SAVEFILE</PRE></FONT></TD></TR></TABLE> </P><P>使用<CODECLASS="OPTION">-traversal</CODE>选项, <BCLASS="COMMAND">lynx</B>将会从参数中指定的HTTP URL开始, <SPANCLASS="QUOTE">"遍历"</SPAN>指定服务器上的所有连接. 如果与<CODECLASS="OPTION">-crawl</CODE>选项一起用的话, 将会把每个输出的页面文本都放到一个log文件中. </P></DD><DT><BCLASS="COMMAND">rlogin</B></DT><DD><P><TTCLASS="REPLACEABLE"><I>远端登陆</I></TT>, 在远端的主机上开启一个会话. 这个命令存在安全隐患, 所以要使用<AHREF="communications.html#SSHREF">ssh</A>来代替. </P></DD><DT><BCLASS="COMMAND">rsh</B></DT><DD><P><TTCLASS="REPLACEABLE"><I>远端shell</I></TT>, 在远端的主机上执行命令. 这个命令存在安全隐患, 所以要使用<BCLASS="COMMAND">ssh</B>来代替. </P></DD><DT><BCLASS="COMMAND">rcp</B></DT><DD><P><TTCLASS="REPLACEABLE"><I>远端拷贝</I></TT>, 在网络上的不同主机间拷贝文件. </P></DD><DT><BCLASS="COMMAND">rsync</B></DT><DD><P><TTCLASS="REPLACEABLE"><I>远端同步</I></TT>, 在网络上的不同主机间(同步)更新文件. </P><P> <TABLEBORDER="1"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="SCREEN"><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">rsync -a ~/sourcedir/*txt /node1/subdirectory/</KBD> </PRE></FONT></TD></TR></TABLE> </P><DIVCLASS="EXAMPLE"><HR><ANAME="FC4UPD"></A><P><B>例子 12-39. 更新FC4(Fedora 4)</B></P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 # fc4upd.sh 3 4 # 脚本作者: Frank Wang. 5 # 本书作者作了少量修改. 6 # 授权在本书中使用. 7 8 9 # 使用rsync命令从镜像站点上下载Fedora 4的更新. 10 # 为了节省空间, 如果有多个版本存在的话, 11 #+ 只下载最新的包. 12 13 URL=rsync://distro.ibiblio.org/fedora-linux-core/updates/ 14 # URL=rsync://ftp.kddilabs.jp/fedora/core/updates/ 15 # URL=rsync://rsync.planetmirror.com/fedora-linux-core/updates/ 16 17 DEST=${1:-/var/www/html/fedora/updates/} 18 LOG=/tmp/repo-update-$(/bin/date +%Y-%m-%d).txt 19 PID_FILE=/var/run/${0##*/}.pid 20 21 E_RETURN=65 # 某些意想不到的错误. 22 23 24 # 一般rsync选项 25 # -r: 递归下载 26 # -t: 保存时间 27 # -v: verbose 28 29 OPTS="-rtv --delete-excluded --delete-after --partial" 30 31 # rsync include模式 32 # 开头的"/"会导致绝对路径名匹配. 33 INCLUDE=( 34 "/4/i386/kde-i18n-Chinese*" 35 # ^ ^ 36 # 双引号是必须的, 用来防止globbing. 37 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -