⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 communications.html

📁 BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版
💻 HTML
📖 第 1 页 / 共 3 页
字号:
><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&nbsp;wget -p http://www.xyz23.com/file01.html  2&nbsp;#  -p或--page-requisite选项将会使得wget取得所有在显示指定页时  3&nbsp;#+ 所需要的文件. (译者: 比如内嵌图片和样式表等.)  4&nbsp;  5&nbsp;wget -r ftp://ftp.xyz24.net/~bozo/project_files/ -O $SAVEFILE  6&nbsp;#  -r选项将会递归的从指定站点  7&nbsp;#+ 上下载所有连接. </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&nbsp;#!/bin/bash  2&nbsp;# quote-fetch.sh: 下载一份股票报价.   3&nbsp;  4&nbsp;  5&nbsp;E_NOPARAMS=66  6&nbsp;  7&nbsp;if [ -z "$1" ]  #必须指定需要获取的股票(代号).   8&nbsp;  then echo "Usage: `basename $0` stock-symbol"  9&nbsp;  exit $E_NOPARAMS 10&nbsp;fi 11&nbsp; 12&nbsp;stock_symbol=$1 13&nbsp; 14&nbsp;file_suffix=.html 15&nbsp;# 获得一个HTML文件, 所以要正确命名它.  16&nbsp;URL='http://finance.yahoo.com/q?s=' 17&nbsp;# Yahoo金融板块, 后缀是股票查询. 18&nbsp; 19&nbsp;# ----------------------------------------------------------- 20&nbsp;wget -O ${stock_symbol}${file_suffix} "${URL}${stock_symbol}" 21&nbsp;# ----------------------------------------------------------- 22&nbsp; 23&nbsp; 24&nbsp;# 在http://search.yahoo.com上查询相关材料: 25&nbsp;# ----------------------------------------------------------- 26&nbsp;# URL="http://search.yahoo.com/search?fr=ush-news&#38;p=${query}" 27&nbsp;# wget -O "$savefilename" "${URL}" 28&nbsp;# ----------------------------------------------------------- 29&nbsp;# 保存相关URL的列表. 30&nbsp; 31&nbsp;exit $? 32&nbsp; 33&nbsp;# 练习: 34&nbsp;# ----- 35&nbsp;# 36&nbsp;# 1) 添加一个测试来验证用户是否在线. 37&nbsp;#    (暗示: 对"ppp"或"connect"来分析'ps -ax'的输出. 38&nbsp;# 39&nbsp;# 2) 修改这个脚本, 让这个脚本具有获得本地天气预报的能力, 40&nbsp;#+   将用户的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&nbsp;lynx -dump http://www.xyz23.com/file01.html &#62;$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&nbsp;#!/bin/bash  2&nbsp;# fc4upd.sh  3&nbsp;  4&nbsp;# 脚本作者: Frank Wang.  5&nbsp;# 本书作者作了少量修改.  6&nbsp;# 授权在本书中使用.  7&nbsp;  8&nbsp;  9&nbsp;#  使用rsync命令从镜像站点上下载Fedora 4的更新.  10&nbsp;#  为了节省空间, 如果有多个版本存在的话,  11&nbsp;#+ 只下载最新的包.  12&nbsp; 13&nbsp;URL=rsync://distro.ibiblio.org/fedora-linux-core/updates/ 14&nbsp;# URL=rsync://ftp.kddilabs.jp/fedora/core/updates/ 15&nbsp;# URL=rsync://rsync.planetmirror.com/fedora-linux-core/updates/ 16&nbsp; 17&nbsp;DEST=${1:-/var/www/html/fedora/updates/} 18&nbsp;LOG=/tmp/repo-update-$(/bin/date +%Y-%m-%d).txt 19&nbsp;PID_FILE=/var/run/${0##*/}.pid 20&nbsp; 21&nbsp;E_RETURN=65        # 某些意想不到的错误. 22&nbsp; 23&nbsp; 24&nbsp;# 一般rsync选项 25&nbsp;# -r: 递归下载 26&nbsp;# -t: 保存时间 27&nbsp;# -v: verbose 28&nbsp; 29&nbsp;OPTS="-rtv --delete-excluded --delete-after --partial" 30&nbsp; 31&nbsp;# rsync include模式 32&nbsp;# 开头的"/"会导致绝对路径名匹配.  33&nbsp;INCLUDE=( 34&nbsp;    "/4/i386/kde-i18n-Chinese*"  35&nbsp;#   ^                         ^ 36&nbsp;# 双引号是必须的, 用来防止globbing. 37&nbsp;) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -