﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Thronds-随笔分类-Linux/Unix高级技术</title><link>http://www.cppblog.com/thronds/category/8857.html</link><description>一问你会什么
二问你做出过什么
三问你为了什么</description><language>zh-cn</language><lastBuildDate>Sun, 19 Apr 2009 03:32:49 GMT</lastBuildDate><pubDate>Sun, 19 Apr 2009 03:32:49 GMT</pubDate><ttl>60</ttl><item><title>zz自动登录telnet执行若干command</title><link>http://www.cppblog.com/thronds/archive/2009/04/18/80393.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Sat, 18 Apr 2009 13:18:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2009/04/18/80393.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/80393.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2009/04/18/80393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/80393.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/80393.html</trackback:ping><description><![CDATA[<div><font size=3>在网上找到一篇文章，讲在UNIX下自动登录telnet（<u><span style="FONT-SIZE: 12pt; COLOR: blue"><a href="http://www.linuxeden.com/forum/t138058.html"><font color=#336699>http://www.linuxeden.com/forum/t138058.html</font></a></span></u><u><span style="FONT-SIZE: 12pt; COLOR: blue">）</span></u>。这个例子很不错，下边对其进行分析。</font></div>
<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 492.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=657>
            <div><span style="FONT-SIZE: 10pt; COLOR: black">#===========autotelnet.sh============== <br>#!/bin/bash<br><br>tmptty=`tty` #</span><span style="FONT-SIZE: 10pt; COLOR: black">取得当前的</span><span style="FONT-SIZE: 10pt; COLOR: black">tty</span><span style="FONT-SIZE: 10pt; COLOR: black">值<br></span><span style="FONT-SIZE: 10pt; COLOR: black">tmptty=`basename $tmptty` #</span><span style="FONT-SIZE: 10pt; COLOR: black">去掉</span><span style="FONT-SIZE: 10pt; COLOR: black">tty</span><span style="FONT-SIZE: 10pt; COLOR: black">的绝对路径<br></span><span style="FONT-SIZE: 10pt; COLOR: black">tmpname=`whoami` #</span><span style="FONT-SIZE: 10pt; COLOR: black">取得当前执行程序的用户名<br></span><span style="FONT-SIZE: 10pt; COLOR: black">ip=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">10.22.33.44</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> #</span><span style="FONT-SIZE: 10pt; COLOR: black">目标主机地址<br></span><span style="FONT-SIZE: 10pt; COLOR: black">inp1=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ABC^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> #</span><span style="FONT-SIZE: 10pt; COLOR: black">主机的用户名，注意</span><span style="FONT-SIZE: 10pt; COLOR: black">^M</span><span style="FONT-SIZE: 10pt; COLOR: black">必须在</span><span style="FONT-SIZE: 10pt; COLOR: black">UNIX</span><span style="FONT-SIZE: 10pt; COLOR: black">下重装用以下方法输入才能用！！<br></span><span style="FONT-SIZE: 10pt; COLOR: black">#</span><span style="FONT-SIZE: 10pt; COLOR: black">方法为按住</span><span style="FONT-SIZE: 10pt; COLOR: black">ctrl</span><span style="FONT-SIZE: 10pt; COLOR: black">键按</span><span style="FONT-SIZE: 10pt; COLOR: black">v</span><span style="FONT-SIZE: 10pt; COLOR: black">键，不放</span><span style="FONT-SIZE: 10pt; COLOR: black">ctrl</span><span style="FONT-SIZE: 10pt; COLOR: black">键，再按</span><span style="FONT-SIZE: 10pt; COLOR: black">shift</span><span style="FONT-SIZE: 10pt; COLOR: black">键和</span><span style="FONT-SIZE: 10pt; COLOR: black">m</span><span style="FONT-SIZE: 10pt; COLOR: black">键，完成后全部放开<br></span><span style="FONT-SIZE: 10pt; COLOR: black">inp2=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ABC^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> #</span><span style="FONT-SIZE: 10pt; COLOR: black">主机的密码，注意必须有</span><span style="FONT-SIZE: 10pt; COLOR: black">^M<br>inp3=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ls^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> #</span><span style="FONT-SIZE: 10pt; COLOR: black">其他进入后的命令，可无或用</span><span style="FONT-SIZE: 10pt; COLOR: black">ls</span><span style="FONT-SIZE: 10pt; COLOR: black">之类的命令代替，注意必须有</span><span style="FONT-SIZE: 10pt; COLOR: black">^M<br>inp4=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">pwd^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> #</span><span style="FONT-SIZE: 10pt; COLOR: black">命令</span><span style="FONT-SIZE: 10pt; COLOR: black">4</span><span style="FONT-SIZE: 10pt; COLOR: black">，同上<br></span><span style="FONT-SIZE: 10pt; COLOR: black">#--------------------------<br><br>inputfile=in #</span><span style="FONT-SIZE: 10pt; COLOR: black">导入文件管道用的，不要改，这个值没有任何关系<br></span><span style="FONT-SIZE: 10pt; COLOR: black">outputfile=out.log #</span><span style="FONT-SIZE: 10pt; COLOR: black">最终导出的文件<br></span><span style="FONT-SIZE: 10pt; COLOR: black">rm -fr $inputfile <br>rm -fr $outputfile <br>mknod $inputfile p <br>touch $outputfile <br><br>#file de</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">script</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ion 7 for out and 8 for in </span><span style="FONT-SIZE: 10pt; COLOR: black">使用</span><span style="FONT-SIZE: 10pt; COLOR: black">7</span><span style="FONT-SIZE: 10pt; COLOR: black">作为输入管道，</span><span style="FONT-SIZE: 10pt; COLOR: black">8</span><span style="FONT-SIZE: 10pt; COLOR: black">作为输入<br></span><span style="FONT-SIZE: 10pt; COLOR: black">exec 7&lt;&gt;$outputfile <br>exec 8&lt;&gt;$inputfile <br><br>telnet $ip &lt;&amp;8 &gt;&amp;7 &amp; <br><br>sleep 2; echo $inp1 &gt;&gt; $inputfile #</span><span style="FONT-SIZE: 10pt; COLOR: black">看得懂吧<br></span><span style="FONT-SIZE: 10pt; COLOR: black">sleep 2; echo $inp2 &gt;&gt; $inputfile <br>sleep 2; echo $inp3 &gt;&gt; $inputfile #</span><span style="FONT-SIZE: 10pt; COLOR: black">如果没有其他命令，这行和下一行可以去掉<br></span><span style="FONT-SIZE: 10pt; COLOR: black">sleep 2; echo $inp4 &gt;&gt; $inputfile <br><br>tail -f $outputfile &amp; </span><span style="FONT-SIZE: 10pt; COLOR: black">强制在屏幕上显示任何输入输出<br></span><span style="FONT-SIZE: 10pt; COLOR: black"><br>while true #</span><span style="FONT-SIZE: 10pt; COLOR: black">正常情况下已经进入目标主机了，可以输入任何命令，所有的一切输入输出都会被记录</span><span style="FONT-SIZE: 10pt; COLOR: black"> <br>do <br>read str <br>if [[ $str = </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">quit</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> || $str = </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">exit</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> ]] <br>then echo $str &gt;&gt; $inputfile exit <br>else echo $str &gt;&gt; $inputfile <br>fi <br>done <br><br>#</span><span style="FONT-SIZE: 10pt; COLOR: black">退出时自动杀掉相关进程<br></span><span style="FONT-SIZE: 10pt; COLOR: black">ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">{print </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> kill -9</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">, $2}</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> | sh<br>ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">{print </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> kill -9</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">, $2}</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> | sh</span></div>
            </td>
        </tr>
    </tbody>
</table>
<div><font size=3>这段代码实现的功能是在UNIX<span>系统上执行这个<strong onmouseover='isShowAds = true;isShowAds2 = true;ads.Move(this,"","%u5FAE%u8F6F%u6700%u4F73%u811A%u672C%u8BED%u8A00%u793A%u4F8B%uFF0C%u9605%u8BFB%u8BF7%u70B9%u51FB%u3002","20295","脚本","%u811A%u672C","http%3A//go.microsoft.com/%3Flinkid%3D6331215")' style="FONT-WEIGHT: normal; CURSOR: hand; COLOR: #0000ff; TEXT-DECORATION: underline" onclick='javascript:window.open("http://rad.17luntan.com/ClickPortal/WebClick.aspx?id=20295&amp;k=%u811A%u672C&amp;siteid=95d6d193-1fb9-4fc0-8708-b7ceb3276924&amp;url=http%3A//iamliujianfeng.bokee.com/viewdiary.12107831.html&amp;gourl=http%3A//go.microsoft.com/%3Flinkid%3D6331215&amp;parm=E597DF415C11D759D30BCC37737F1307523F540DB74FDF8B&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false;">脚本</strong>，自动登录到脚本中变量</span>&lt;ip&gt;声明使用的主机上，并用脚本中&lt;inp1&gt;变量和&lt;inp2&gt;的值分别作为用户名和密码进行身份验证。然后，用户可以在控制台上输入任何命令，这些命令会被发送到远端主机执行。因此，我猜测这个脚本的作用和SecureCRT等TELNET工具提供的自动登录的功能是一样的。</font></div>
<div>&nbsp;</div>
<div><font size=3>这个例子的主要原理是这样的：用后台方式启动一个telnet进程。将这个进程的输入重定向到一个管道文件in，向这个管道文件追加要执行的指令，也就是将指令传送到telnet进程中执行；同时，将这个进程的输出重定向至一个日志文件out.log中，tail &#8211;f这个日志文件，就是实时刷新telnet的输出。</font></div>
<div>&nbsp;</div>
<div><font size=3>这里有几个细节问题需要说明一下：</font></div>
<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><span><font size=3>1、&nbsp;</font></span><font size=3>向管道文件写入要执行的命令时，必须有一个结束标志，告诉telnet启动的shell进程这是一个完整的命令，可以执行了。这个结束标志就是&#8221; ^M&#8221;。这个东西的输入还很复杂。按照作者的说明，要在UNIX系统上，按住Ctrl键后按v键，松开v键保持Ctrl键不放，然后按下Shift键后再按M键，然后同时放开Ctrl Shilf和M三个键。在实际使用中发现，不需要Shift键，放开v键之后直接按m键即可；</font></div>
<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><span><font size=3>2、&nbsp;</font></span><font size=3>在重定向telnet后台进程的输入时，因为要控制输入内容的速度（要等到出现login以后才能输入用户名），所以不能采用文件中直接保存用户名、密码及所有要执行指令的方式，要求in文件是空的。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><span><font size=3>3、&nbsp;</font><font size=3>在重定向telnet后台进程的输入、输出时，必须使用文件描述符。具体原因还不清楚，但用文件名称进行重定向就不行；</font></span><span><font size=3>&nbsp;</font></span></div>
<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt"><span><font size=3>4、&nbsp;</font></span><font size=3>在用户输入quit或exit后，需要退出后台telnet进程以及tail &#8211;f进程。脚本中采用kill进程的方式实现这一目标。因为kiill进程时需要一些参数，因此在脚本的开始处记录了tty的类型等信息；</font></div>
<div><font size=3>对于脚本中具体指令的解释，参加如下列表中的注释</font></div>
<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 492.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=657>
            <div><span style="FONT-SIZE: 10pt; COLOR: black">#!/bin/bash<br><br>tmptty=`tty` &nbsp;&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">取得当前的</span><span style="FONT-SIZE: 10pt; COLOR: blue">tty</span><span style="FONT-SIZE: 10pt; COLOR: blue">值</span><span style="FONT-SIZE: 10pt; COLOR: black"><br></span><span style="FONT-SIZE: 10pt; COLOR: black">tmptty=`basename $tmptty`&nbsp;&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">去掉</span><span style="FONT-SIZE: 10pt; COLOR: blue">tty</span><span style="FONT-SIZE: 10pt; COLOR: blue">的绝对路径</span><span style="FONT-SIZE: 10pt; COLOR: black"><br></span><span style="FONT-SIZE: 10pt; COLOR: black">tmpname=`whoami`&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 10pt; COLOR: blue">&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: blue">取得当前执行程序的用户名</span><span style="FONT-SIZE: 10pt; COLOR: black"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">以上信息在最后</span><span style="FONT-SIZE: 10pt; COLOR: blue">kill</span><span style="FONT-SIZE: 10pt; COLOR: blue">进程时作为筛选条件使用</span></div>
            <div><span style="FONT-SIZE: 10pt; COLOR: black">ip=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">10.22.33.44</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: blue">目标主机地址<br></span><span style="FONT-SIZE: 10pt; COLOR: black">inp1=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ABC^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: blue">主机的用户名。注意</span><span style="FONT-SIZE: 10pt; COLOR: blue">^M</span><span style="FONT-SIZE: 10pt; COLOR: blue">必须在</span><span style="FONT-SIZE: 10pt; COLOR: blue">UNIX</span><span style="FONT-SIZE: 10pt; COLOR: blue">下重装用以下方法输入才能用！！</span><span style="FONT-SIZE: 10pt; COLOR: black"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">方法为按住</span><span style="FONT-SIZE: 10pt; COLOR: blue">ctrl</span><span style="FONT-SIZE: 10pt; COLOR: blue">键按</span><span style="FONT-SIZE: 10pt; COLOR: blue">v</span><span style="FONT-SIZE: 10pt; COLOR: blue">键，不放</span><span style="FONT-SIZE: 10pt; COLOR: blue">ctrl</span><span style="FONT-SIZE: 10pt; COLOR: blue">键，再按</span><span style="FONT-SIZE: 10pt; COLOR: blue">shift</span><span style="FONT-SIZE: 10pt; COLOR: blue">键和</span><span style="FONT-SIZE: 10pt; COLOR: blue">m</span><span style="FONT-SIZE: 10pt; COLOR: blue">键，完成后全部放开<br><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">经过实际使用，不比按</span><span style="FONT-SIZE: 10pt; COLOR: blue">shilf</span><span style="FONT-SIZE: 10pt; COLOR: blue">键也可以</span><span style="FONT-SIZE: 10pt; COLOR: black"><br></span><span style="FONT-SIZE: 10pt; COLOR: black">inp2=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ABC^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">主机的密码，注意必须有</span><span style="FONT-SIZE: 10pt; COLOR: blue">^M<br></span><span style="FONT-SIZE: 10pt; COLOR: black">inp3=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">ls^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><span style="FONT-SIZE: 10pt; COLOR: black">&nbsp;</span><span style="FONT-SIZE: 10pt; COLOR: blue">#</span><span style="FONT-SIZE: 10pt; COLOR: blue">其他进入后的命令，可无或用</span><span style="FONT-SIZE: 10pt; COLOR: blue">ls</span><span style="FONT-SIZE: 10pt; COLOR: blue">之类的命令代替，注意必须有</span><span style="FONT-SIZE: 10pt; COLOR: blue">^M</span><span style="FONT-SIZE: 10pt; COLOR: black"><br>inp4=</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">pwd^M</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><span style="FONT-SIZE: 10pt; COLOR: blue">&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: blue">命令</span><span style="FONT-SIZE: 10pt; COLOR: blue">4</span><span style="FONT-SIZE: 10pt; COLOR: blue">，同上<br></span><span style="FONT-SIZE: 10pt; COLOR: black">#--------------------------<br><br>inputfile=in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">将命令导入后台telnet进程用的管道文件名称<br></span><span style="FONT-SIZE: 10pt; COLOR: black">outputfile=out.log &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">包含</span><span style="FONT-SIZE: 10pt; COLOR: black">telnet</span><span style="FONT-SIZE: 10pt; COLOR: black">后台进程输入的文件名称</span><span style="FONT-SIZE: 10pt; COLOR: black"> <br></span><span style="FONT-SIZE: 10pt; COLOR: black">rm -fr $inputfile &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>rm -fr $outputfile &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>mknod $inputfile p &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">建立管道文件</span><span style="FONT-SIZE: 10pt; COLOR: black"><br>touch $outputfile &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">建立输出文件</span><span style="FONT-SIZE: 10pt; COLOR: black"><br><br></span><span style="FONT-SIZE: 10pt; COLOR: black"><br></span><span style="FONT-SIZE: 10pt; COLOR: black">exec 7&lt;&gt;$outputfile &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">将文件描述符</span><span style="FONT-SIZE: 10pt; COLOR: black">7</span><span style="FONT-SIZE: 10pt; COLOR: black">分配给</span><span style="FONT-SIZE: 10pt; COLOR: black">outputfile<br>exec 8&lt;&gt;$inputfile &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">将文件描述符</span><span style="FONT-SIZE: 10pt; COLOR: black">8</span><span style="FONT-SIZE: 10pt; COLOR: black">分配给</span><span style="FONT-SIZE: 10pt; COLOR: black">inputfile<br><br>telnet $ip &lt;&amp;8 &gt;&amp;7 &amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">后台运行</span><span style="FONT-SIZE: 10pt; COLOR: black">telent</span><span style="FONT-SIZE: 10pt; COLOR: black">，同时重定向输入、输出</span><span style="FONT-SIZE: 10pt; COLOR: black"><br><br>sleep 2; echo $inp1 &gt;&gt; $inputfile&nbsp;&nbsp;#2</span><span style="FONT-SIZE: 10pt; COLOR: black">秒后输入用户名</span><span style="FONT-SIZE: 10pt; COLOR: black"><br></span><span style="FONT-SIZE: 10pt; COLOR: black">sleep 2; echo $inp2 &gt;&gt; $inputfile &nbsp;&nbsp;#2</span><span style="FONT-SIZE: 10pt; COLOR: black">秒后输入密码</span><span style="FONT-SIZE: 10pt; COLOR: black"><br>sleep 2; echo $inp3 &gt;&gt; $inputfile &nbsp;&nbsp;#2</span><span style="FONT-SIZE: 10pt; COLOR: black">秒后输入命令</span><span style="FONT-SIZE: 10pt; COLOR: black">inp3</span><span style="FONT-SIZE: 10pt; COLOR: black"><br></span><span style="FONT-SIZE: 10pt; COLOR: black">sleep 2; echo $inp4 &gt;&gt; $inputfile &nbsp;&nbsp;#2</span><span style="FONT-SIZE: 10pt; COLOR: black">秒后输入命令</span><span style="FONT-SIZE: 10pt; COLOR: black">inp3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 10pt; COLOR: black">＃这里面</span><span style="FONT-SIZE: 10pt; COLOR: black">inp3</span><span style="FONT-SIZE: 10pt; COLOR: black">和</span><span style="FONT-SIZE: 10pt; COLOR: black">inp4</span><span style="FONT-SIZE: 10pt; COLOR: black">只是一个说明，对自动登录实际上没有什么作用</span></div>
            <div><span style="FONT-SIZE: 10pt; COLOR: black">tail -f $outputfile &amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="FONT-SIZE: 10pt; COLOR: black">＃</span><span style="FONT-SIZE: 10pt; COLOR: black">强制在屏幕上显示任何输入输出<br></span><span style="FONT-SIZE: 10pt; COLOR: black"><br>while true &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">正常情况下已经进入目标主机了，可以输入任何命令，所有的一切输入输出都会被记录</span><span style="FONT-SIZE: 10pt; COLOR: black"> <br>do <br>read str <br>if [[ $str = </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">quit</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> || $str = </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">exit</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> ]] <br>then echo $str &gt;&gt; $inputfile exit &nbsp;&nbsp;#</span><span style="FONT-SIZE: 10pt; COLOR: black">这里的</span><span style="FONT-SIZE: 10pt; COLOR: black">exit</span><span style="FONT-SIZE: 10pt; COLOR: black">实际上是从循环中退出</span><span style="FONT-SIZE: 10pt; COLOR: black"><br>else echo $str &gt;&gt; $inputfile <br>fi <br>done <br><br>#</span><span style="FONT-SIZE: 10pt; COLOR: black">退出时自动杀掉相关进程<br></span><span style="FONT-SIZE: 10pt; COLOR: black">ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">{print </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> kill -9</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">, $2}</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> | sh<br>ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">{print </span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> kill -9</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">"</span></strong><span style="FONT-SIZE: 10pt; COLOR: black">, $2}</span><strong><span style="FONT-SIZE: 9pt; COLOR: black">'</span></strong><span style="FONT-SIZE: 10pt; COLOR: black"> | sh</span></div>
            </td>
        </tr>
    </tbody>
</table>
<div>&nbsp;</div>
<div><font size=3>明白了这个脚本的原理，我们可以做一个试验，用另外一种更加明显的方式来做输入输出的重定向。</font></div>
<div>&nbsp;</div>
<div><font size=3>1、新建1个普通文件<span>&nbsp;&nbsp;&nbsp; touch out.log</span></font></div>
<div><font size=3>2、新建一个管道文件:<span>&nbsp;&nbsp; mknod commands p</span></font></div>
<div><font size=3>3、为日志文件分配文件描述符7 ：&nbsp;exec 7&lt;&gt;out.log</font></div>
<div><font size=3>4、为管道文件分配文件描述符8：<span>&nbsp;&nbsp; exec 8&lt;&gt;commands</span></font></div>
<div><font size=3>5、后台方式启动telnet:<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; telnet 136.30.75.102 &lt;&amp;8 &gt;&amp;7 &amp;</span></font></div>
<div><font size=3>6、实时刷新输出信息：<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tail &#8211;f out.log</span></font></div>
<div><font size=3>7、另外启动一个终端，输入信息：</font><font size=3>&nbsp;echo &#8220;root^M&#8221; &gt;&gt;commands<br><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &#8220;password^M&#8221;&gt;&gt;commands<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo &#8220;pwd^M&#8221; &gt;&gt; commands<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;.</span></font></div>
<div><font size=3>8、观察tail &#8211;f的输出，可以看到输入命令的执行结果。</font></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><font size=3>在这个脚本的基础上，可以实现自动telnet到一个主机上并执行一些列command的功能。脚本如下：</font></div>
<div align=center>
<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=1>
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 426.1pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" vAlign=top width=568>
            <div><font size=3>#!/bin/bash</font></div>
            <div>&nbsp;</div>
            <div><font size=3>tmptty=`tty`</font></div>
            <div><font size=3>tmptty=`basename $tmptty`</font></div>
            <div><font size=3>tmpname=`whoami`</font></div>
            <div><font size=3>ip="136.39.75.102"</font></div>
            <div><font size=3>inp1="root^M"</font></div>
            <div><font size=3>inp2="Easy2get^M"</font></div>
            <div><font size=3>#####################################################################</font></div>
            <div><font size=3>#you may add as many commands as you want</font></div>
            <div><font size=3>#NOTE:every command should end with ^M, which is input under UNIX </font></div>
            <div><font size=3>#<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>方法为按住ctrl键按v键，不放ctrl键，再按shift键和m键，完成后全部放开</font></div>
            <div><font size=3>#####################################################################</font></div>
            <div><font size=3>inp3="ls^M"</font></div>
            <div><font size=3>inp4="echo 'hello,TeMIP users' &gt;&gt; hello.txt^M"</font></div>
            <div>&nbsp;</div>
            <div><font size=3>#--------------------------</font></div>
            <div>&nbsp;</div>
            <div><font size=3>inputfile=in</font></div>
            <div><font size=3>outputfile=out.log</font></div>
            <div><font size=3>rm -fr $inputfile</font></div>
            <div><font size=3>rm -fr $outputfile</font></div>
            <div><font size=3>mknod $inputfile p</font></div>
            <div><font size=3>touch $outputfile</font></div>
            <div>&nbsp;</div>
            <div>&nbsp;</div>
            <div><font size=3>exec 7&lt;&gt;$outputfile</font></div>
            <div><font size=3>exec 8&lt;&gt;$inputfile</font></div>
            <div>&nbsp;</div>
            <div><font size=3>telnet $ip &lt;&amp;8 &gt;&amp;7 &amp;</font></div>
            <div>&nbsp;</div>
            <div><font size=3>sleep 2; echo $inp1 &gt;&gt; $inputfile</font></div>
            <div><font size=3>sleep 2; echo $inp2 &gt;&gt; $inputfile</font></div>
            <div>&nbsp;</div>
            <div><font size=3>echo "executing command $inp3"</font></div>
            <div><font size=3>sleep 2; echo $inp3 &gt;&gt; $inputfile</font></div>
            <div><font size=3>echo "executing $inp4"</font></div>
            <div><font size=3>sleep 2; echo $inp4 &gt;&gt; $inputfile</font></div>
            <div><font size=3>echo "exiting"</font></div>
            <div><font size=3>sleep 2; echo "exit^M" &gt;&gt; $inputfile</font></div>
            <div>&nbsp;</div>
            <div>&nbsp;</div>
            <div><font size=3>rm $inputfile</font></div>
            <div><font size=3>rm $outputfile</font></div>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div>&nbsp;</div>
<div style="MARGIN: 13pt 0cm"><strong><font size=4><font size=5>附录：Shell中的输入/输出</font></font></strong></div>
<div><font size=3>（摘自HP-UX 参考手册 用户命令 ksh）</font></div>
<div><font size=3>命令执行之前，其输入和输出可以使用专用表示法重定向由Shell 解释。下列内容可以出现在简单命令内的任何位置，或在命令之前之后，并且不传递给调用命令。命令和参数替换发生在使用word 或digit 之前，除非如下所示。文件名生成仅出现在模式匹配单一文件且不执行空白解释时。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&lt;word 使用文件word 作为标准输入（文件描述符0 ）。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&gt;word 使用文件word 作为标准输出（文件描述符1 ）。如果不存在该文件，将另行创建。如果文件存在，并且使用noclobber 选项，则发生错误；否则文件被截断为零长度。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&gt;|word 与&gt; 相同，区别在于覆盖noclobber 选项。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&gt;&gt;word 使用文件word 作为标准输出。如果文件存在，追加输出到其中（通过首先搜索文件末尾）；否则，另行创建文件。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&lt;&gt;word 打开文件word 作为标准输入以进行读取和写入。如果不存在该文件，将另行创建。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&lt;&lt;[ - ]word 读取Shell 输入直至出现行与word 匹配，或者抵达文件末尾。在word 上没有执行参数替换、命令替换或文件名生成。得到的文档称为本文档，作为标准输入。如果引用word 的任意字符，不对文档字符进行解释。否则，发生参数和命令替换，忽略\newline，必须使用\ 引用字符\ 、$ 、&#8216; 和word 的第一个字符。如果- 追加到&lt;&lt; ，则从word 和文档去掉所有前导制表符。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&lt;&amp;digit 从文件描述符复制标准输入digit （请参阅dup(2) ）。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&gt;&amp;digit 标准输出复制到文件描述符digit （请参阅dup(2) ）。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&lt;&amp;- 标准输入关闭。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&gt;&amp;- 标准输出关闭。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&lt;&amp;p 来自联合进程的输入移动到标准输入。</font></div>
<div style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt"><span><font size=3>l</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><font size=3>&gt;&amp;p 到联合进程去的输出移动到标准输出。</font></div>
<div><font size=3>如果上述一项有数字前导，文件描述符号引用由该数字指定（取代缺省的0 或1 ）。例如：</font></div>
<div><font size=3>... 2&gt;&amp;1</font></div>
<div><font size=3>意味着文件描述符2 打开，作为文件描述符1 的副本用于写入。重定向顺序很重要，因为Shell 根据当前打开文件在计算时与指定文件描述符的关联计算重定向引用文件描述符。例如：</font></div>
<div><font size=3>... 1&gt;fname 2&gt;&amp;1</font></div>
<div><font size=3>首先分配文件描述符1（标准输出）给文件fname ，然后分配文件描述符2（标准错误）给分配给文件描述符1的文件，也就是fname 。另一方面，如果重定向顺序反转如下：</font></div>
<div><font size=3>... 2&gt;&amp;1 1&gt;fname</font></div>
<div><font size=3>文件描述符2 分配给当前标准输出，（用户终端，除非继承了不同的分配）。此时文件描述符1 重新分配给文件fname ，不更改文件描述符2 的分配。</font></div>
<div><font size=3>co-process 的输入和输出可移动到多个文件描述符，允许其他命令使用上述重定向运算符向其中写入和读取。如果当前co-process 输入移动到多个文件描述符，另一个co-process 开始。</font></div>
<div><font size=3>如果命令后跟随&amp; 并且作业控制非活动状态，命令的缺省标准输入为空文件/dev/null 。否则，执行命令的环境包括调用Shell 的文件描述符，通过输入/输出规格修改</font></div>
<a href="http://blog.csdn.net/muyuqing/archive/2007/04/27/1586824.aspx">http://blog.csdn.net/muyuqing/archive/2007/04/27/1586824.aspx</a>
<img src ="http://www.cppblog.com/thronds/aggbug/80393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2009-04-18 21:18 <a href="http://www.cppblog.com/thronds/archive/2009/04/18/80393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu8.10下编译好的程序 到redhat服务器上碰到的问题: glibc_2.4 not found</title><link>http://www.cppblog.com/thronds/archive/2009/03/28/78199.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Sat, 28 Mar 2009 15:01:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2009/03/28/78199.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/78199.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2009/03/28/78199.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/78199.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/78199.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 编译时的小问题`GLIBC_2.4' not found带来的学习。不同linux系统之间的差别，编译时包依赖的问题。&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2009/03/28/78199.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/78199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2009-03-28 23:01 <a href="http://www.cppblog.com/thronds/archive/2009/03/28/78199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Linux和Windows下搭建CVS服务器与CVS客户端的详细配置指南</title><link>http://www.cppblog.com/thronds/archive/2009/03/27/78040.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Fri, 27 Mar 2009 07:34:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2009/03/27/78040.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/78040.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2009/03/27/78040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/78040.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/78040.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本教程包含CVS的入门知识讲解、在linux和windows下CVS服务器与CVS客户端的配置指南，详细介绍了配置过程，可以说是一篇组建CVS开发环境的入门、学习与提高的完美教程。通过本教程你可以在最短的时间里面最快的搭建好CVS服务器与CVS客户端的的开发环境。如有不明之处，请联系飘扬&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2009/03/27/78040.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/78040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2009-03-27 15:34 <a href="http://www.cppblog.com/thronds/archive/2009/03/27/78040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vnc server配置(server&amp;client)詳細</title><link>http://www.cppblog.com/thronds/archive/2009/02/19/74323.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Thu, 19 Feb 2009 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2009/02/19/74323.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/74323.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2009/02/19/74323.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/74323.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/74323.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 由于客户需要充分利用花了N多money购买的服务器，而服务器上运行的是Linux AS,客户又不太会使用文本模式，因此只好采用配置X-server的方式来给每一个用户一个图形终端了，这多亏了X-windows设计的先进性呀。 <br>为了简单，我就使用了Linux自带的vnc-server。 &nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2009/02/19/74323.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/74323.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2009-02-19 20:12 <a href="http://www.cppblog.com/thronds/archive/2009/02/19/74323.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[多图]Ubuntu8.10安装WordPress2.7的详细步骤</title><link>http://www.cppblog.com/thronds/archive/2009/02/17/74085.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Tue, 17 Feb 2009 13:39:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2009/02/17/74085.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/74085.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2009/02/17/74085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/74085.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/74085.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 近日有心为希奥开源改造一个简洁的主题，由于平日的工作大部分都是在Ubuntu下完成的，这样，WordPress主题的测试调试当然也要交给Ubuntu来干了。这也是我写这篇文章的初衷。送给那些需要在本地调试WordPress主题和插件的朋友，当然最重要的是力求简单。<br><br>安装WordPress，不能不考虑到apache、MySQL、PHP的设置问题，一一细化的话肯定相当繁琐，所以笔者想到了可以让新立得软件包管理器把这些活细化设置的话都揽下，目的是免去单独配置apache、MySQL和PHP的烦恼。闲话少说。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2009/02/17/74085.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/74085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2009-02-17 21:39 <a href="http://www.cppblog.com/thronds/archive/2009/02/17/74085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Linux下安装和使用MySQL</title><link>http://www.cppblog.com/thronds/archive/2009/02/17/74070.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Tue, 17 Feb 2009 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2009/02/17/74070.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/74070.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2009/02/17/74070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/74070.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/74070.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 想使用Linux已经很长时间了，由于没有硬性任务一直也没有系统学习，近日由于工作需要必须使用Linux下的MySQL。本以为有Windows下使用SQL Server的经验，觉得在Linux下安装MySql应该是易如反掌的事，可在真正安装和使用MySQL时走了很多弯路，遇见很多问题，毕竟Linux和Windows本身就有很大区别。为了让和我一样的初学者在学习的过程中少走弯路，尽快入门，写了此文，希望对您有所帮助。本文的Linux环境是Red Hat 9.0，MySQL是4.0.16。&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2009/02/17/74070.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/74070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2009-02-17 20:12 <a href="http://www.cppblog.com/thronds/archive/2009/02/17/74070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Where is Log file in Ubuntu</title><link>http://www.cppblog.com/thronds/archive/2008/12/20/69934.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Sat, 20 Dec 2008 13:58:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2008/12/20/69934.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/69934.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2008/12/20/69934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/69934.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/69934.html</trackback:ping><description><![CDATA[
<span style="color: rgb(42, 42, 42); font-family: 宋体; font-size: 14px; line-height: 21px; ">All logs are stored in /var/log directory under Ubuntu (and other Linux distro).From[1]<h2>Linux Log files and usage</h2><p>=>&#160;<strong>/var/log/messages</strong>&#160;: General log messages</p><p>=>&#160;<strong>/var/log/boot</strong>&#160;: System boot log</p><p>=>&#160;<strong>/var/log/debug</strong>&#160;: Debugging log messages</p><p>=>&#160;<strong>/var/log/auth.log</strong>&#160;: User login and authentication logs</p><p>=>&#160;<strong>/var/log/daemon.log</strong>&#160;: Running services such as squid, ntpd and others log message to this file</p><p>=>&#160;<strong>/var/log/dmesg</strong>&#160;: Linux kernel ring buffer log</p><p>=>&#160;<strong>/var/log/dpkg.log</strong>&#160;: All binary package log includes package installation and other information</p><p>=>&#160;<strong>/var/log/faillog</strong>&#160;: User failed login log file</p><p>=>&#160;<strong>/var/log/kern.log</strong>&#160;: Kernel log file</p><p>=>&#160;<strong>/var/log/lpr.log</strong>&#160;: Printer log file</p><p>=>&#160;<strong>/var/log/mail.*</strong>&#160;: All mail server message log files</p><p>=>&#160;<strong>/var/log/mysql.*</strong>&#160;: MySQL server log file</p><p>=>&#160;<strong>/var/log/user.log</strong>&#160;: All userlevel logs</p><p>=>&#160;<strong>/var/log/xorg.0.log</strong>&#160;: X.org log file</p><p>=>&#160;<strong>/var/log/apache2/*</strong>&#160;: Apache web server log files directory</p><p>=>&#160;<strong>/var/log/lighttpd/*</strong>&#160;: Lighttpd web server log files directory</p><p>=>&#160;<strong>/var/log/fsck/*</strong>&#160;: fsck command log</p><p>=>&#160;<strong>/var/log/apport.log</strong>&#160;: Application crash report / log file</p><h2>To view log files at shell prompt</h2><p>Use tail, more, less and grep command.<br><code>tail -f /var/log/apport.log<br>more /var/log/xorg.0.log<br>cat /var/log/mysql.err<br>less /var/log/messages<br>grep -i fail /var/log/boot</code></p><h2>View log files using GUI tools using the GNOME System Log Viewer</h2><p>System Log Viewer is a graphical, menu-driven viewer that you can use to view and monitor your system logs. System Log Viewer comes with a few functions that can help you manage your logs, including a calendar, log monitor and log statistics display. System Log Viewer is useful if you are new to system administration because it provides an easier, more user-friendly display of your logs than a text display of the log file. It is also useful for more experienced administrators, as it contains a calendar to help you locate trends and track problems, as well as a monitor to enable you to continuously monitor crucial logs.</p><p>You can start System Log Viewer in the following ways:</p><p>Click on System menu > Choose Administration > System Log<br><img src="http://www.cppblog.com/images/cppblog_com/thronds/gnome-ubuntu-system-log.jpg" id="" width="573" height="379" vspace="0" hspace="0" border="" align="baseline" alt="" longdesc=""></p><p>(The GNOME System Log Viewer)</p><p>Note you can start the GNOME System Log Viewer from a shell prompt, by entering the following command:<br><code>$ gnome-system-log &amp;</code></p><p><span  style="font-family: -webkit-monospace;"><span  style="color: rgb(0, 128, 0); font-family: arial; font-size: 13px; line-height: normal; ">[1]www.cyberciti.biz/faq/ubuntu-linux-gnome-system-<strong>log</strong>-viewer/</span><br></span></p></span><img src ="http://www.cppblog.com/thronds/aggbug/69934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2008-12-20 21:58 <a href="http://www.cppblog.com/thronds/archive/2008/12/20/69934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Bonfire: 单网卡在Linux下用squid代理上网（简易设置)(推荐)</title><link>http://www.cppblog.com/thronds/archive/2008/12/17/69681.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Wed, 17 Dec 2008 13:48:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2008/12/17/69681.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/69681.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2008/12/17/69681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/69681.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/69681.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在windows下有方便的ccproxy，傻瓜级的配置，非常好用。转到linux，也想寻找一个类似的软件，但google到结果推荐的是squid。于是就配置了squid，我暂时的使用只是最低级别的，只是为了能让我的另一台机子能用代理上网。如果用squid专门搭建一个强大的专业代理服务器，会有什么反应呢？&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2008/12/17/69681.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/69681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2008-12-17 21:48 <a href="http://www.cppblog.com/thronds/archive/2008/12/17/69681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不能make,找不到makefile,安装编译环境的过程.</title><link>http://www.cppblog.com/thronds/archive/2008/12/17/69651.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Wed, 17 Dec 2008 08:36:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2008/12/17/69651.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/69651.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2008/12/17/69651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/69651.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/69651.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天在安装gftp2.0.19的时候./configure后，缺少相应的包，以至于不能 make。也就是找不到makefile文件了，明明文件在那呢，为什么找不到呢？因为缺少了编译的环境，下文就我在安装gftp里出现的问题，查找了网络上的方法，下面的过程几乎跟我遇到的问题很像，不过我到安装libgtk2.0-dev之后就可以通过了。这个依赖于个人的系统内已经安装了的包相关。&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2008/12/17/69651.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/69651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2008-12-17 16:36 <a href="http://www.cppblog.com/thronds/archive/2008/12/17/69651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下安装Eclipse</title><link>http://www.cppblog.com/thronds/archive/2008/12/10/69061.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Wed, 10 Dec 2008 06:23:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2008/12/10/69061.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/69061.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2008/12/10/69061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/69061.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/69061.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 看到一个写的很详细的linux下如何安装eclipse的教程，就顺手转过来。因为在各个版本的linux系统下安装eclipse的过程基本相似，所以下面的内容可以通用于Linux下安装Eclipse的参考。自己在Redhat Enterprise 4下试验过。但现在喜欢上ubuntu，打算在ubuntu上再装个试试。而且我想要的是它的C++支持。后面部分是在ubuntu上安装eclipse 的过程。同时也推荐了另一个linux下不粗的C++开发IDE。&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2008/12/10/69061.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/69061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2008-12-10 14:23 <a href="http://www.cppblog.com/thronds/archive/2008/12/10/69061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux与Windows文件互通！</title><link>http://www.cppblog.com/thronds/archive/2008/12/07/68691.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Sun, 07 Dec 2008 08:55:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2008/12/07/68691.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/68691.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2008/12/07/68691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/68691.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/68691.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 需求：在linux下访问局域网络中另一台计算机的共享资源，另一台计算机的系统可能为 windows或者linux。我首先想到的是用mount命令挂载共享资源，后经群里朋友提醒，直接用samba更方便。另外windows访问 linux资源也需要运用samba。Linux/Unix之间的文件互访用NFS网络文件系统。&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2008/12/07/68691.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/68691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2008-12-07 16:55 <a href="http://www.cppblog.com/thronds/archive/2008/12/07/68691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu系统下的ssh服务器端搭建</title><link>http://www.cppblog.com/thronds/archive/2008/11/17/67153.html</link><dc:creator>thronds</dc:creator><author>thronds</author><pubDate>Mon, 17 Nov 2008 15:01:00 GMT</pubDate><guid>http://www.cppblog.com/thronds/archive/2008/11/17/67153.html</guid><wfw:comment>http://www.cppblog.com/thronds/comments/67153.html</wfw:comment><comments>http://www.cppblog.com/thronds/archive/2008/11/17/67153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thronds/comments/commentRss/67153.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thronds/services/trackbacks/67153.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 实验室有台已经搭建好的服务器，我也就是用ssh简单连接过去使用。最近自己装了ubuntu系统，使用起来很爽，但还脱离不了windows，用ssh 客户端连接不上这台刚装好的ubuntu。原来是因为ubuntu默认安装中，没有ssh的服务器端。下面用apt-get安装ssh server。以下部分是来自istef.info.(zz)&nbsp;&nbsp;<a href='http://www.cppblog.com/thronds/archive/2008/11/17/67153.html'>阅读全文</a><img src ="http://www.cppblog.com/thronds/aggbug/67153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thronds/" target="_blank">thronds</a> 2008-11-17 23:01 <a href="http://www.cppblog.com/thronds/archive/2008/11/17/67153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>