锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品亚洲专一区二区三区,亚洲伦理一二三四,亚洲一级毛片免费看http://m.tkk7.com/weidagang2046/category/8050.html鐗╂牸鑰屽悗鐭ヨ嚧zh-cnWed, 28 Feb 2007 02:01:36 GMTWed, 28 Feb 2007 02:01:36 GMT60緇熻宸ョ▼鐨勬簮浠g爜琛屾暟http://m.tkk7.com/weidagang2046/articles/81406.htmlweidagang2046weidagang2046Wed, 15 Nov 2006 15:56:00 GMThttp://m.tkk7.com/weidagang2046/articles/81406.htmlhttp://m.tkk7.com/weidagang2046/comments/81406.htmlhttp://m.tkk7.com/weidagang2046/articles/81406.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/81406.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/81406.html

$pattern_h = ' D:/work/ChineseChess/*.h ' ;
$pattern_cpp = ' D:/work/chineseChess/*.cpp ' ;

$count = 0 ;

@h = glob ( $pattern_h );
@cpp = glob ( $pattern_cpp );

foreach $file 聽( @h )
{
聽聽聽聽
open (FILE , $file );
聽聽聽聽
聽聽聽聽
while 聽( $line = < FILE > )
聽聽聽聽{
聽聽聽聽聽聽聽聽
$count ++ ;
聽聽聽聽}
}

foreach $file 聽( @cpp )
{
聽聽聽聽
open (FILE , $file );
聽聽聽聽
聽聽聽聽
while 聽( $line = < FILE > )
聽聽聽聽{
聽聽聽聽聽聽聽聽
$count ++ ;
聽聽聽聽}
}

print $count , " \n " ;聽


weidagang2046 2006-11-15 23:56 鍙戣〃璇勮
]]>
Perl eval鍑芥暟鎺㈣http://m.tkk7.com/weidagang2046/articles/66028.htmlweidagang2046weidagang2046Sun, 27 Aug 2006 13:03:00 GMThttp://m.tkk7.com/weidagang2046/articles/66028.htmlhttp://m.tkk7.com/weidagang2046/comments/66028.htmlhttp://m.tkk7.com/weidagang2046/articles/66028.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/66028.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/66028.html 2006-8-27

Perl 浣滀負(fù)涓縐嶈剼鏈璦鍙互瀹炴椂鍦扮敓鎴愬拰鎵ц浠g爜銆傝繖縐嶇壒鎬у彲浠ユ妸浠g爜鐨勭紪璇戞帹榪熷埌榪愯鏃訛紝鎵浠ュ張縐頒負(fù)鈥滃姩鎬佷唬鐮佲濄傚彟澶栵紝 Perl 涔熷 Java 銆?/span> C++ 涓鏍鋒彁渚涗簡寮傚父澶勭悊鏈哄埗銆傛湰鏂囧皢鍒濇鎺㈣ Perl 涓疄鐜板姩鎬佷唬鐮佸拰寮傚父澶勭悊鏈哄埗鐨勫嚱鏁幫細(xì) eval 銆傚鏈夐敊璇笉瓚籌紝嬈㈣繋璁ㄨ鍜屾壒璇勬寚姝c?/span>

eval 鍑芥暟鍙互鐪嬩綔鏄?/span> Perl 铏氭嫙鏈猴紝瀹冪殑鍙傛暟灝辨槸涓孌?/span> Perl 浠g爜銆傚埄鐢?/span> 鈥檖erldoc 鈥揻 eval鈥?/font> 鍙互鑾峰彇 eval 鍑芥暟浣跨敤甯姪錛屽叾涓粙緇嶄簡瀹冪殑涓ょ浣跨敤鏂瑰紡錛?/span>

l聽聽聽聽聽聽聽聽 eval EXPR

EXPR 鏄竴涓殑琛ㄨ揪寮忥紝渚嬪錛?/span>

eval "print $a" ;

eval 'print $a' . ', $b' ;

eval 1 + 3 ;

eval 'print ' . '$a + $b, "\n"' ;

eval $command;#$command = 鈥榩rint 鈥渉ello Perl鈥濃?/span>

eval $ARGV[0];

鍦ㄦ墽琛屾椂錛?/span> Perl 瑙i噴鍣ㄤ細(xì)棣栧厛瑙f瀽琛ㄨ揪寮忕殑鍊鹼紝鐒跺悗灝嗚〃杈懼紡鍊間綔涓轟竴鏉?/span> Perl 璇彞鎻掑叆褰撳墠鎵ц涓婁笅鏂囥傛墍浠ワ紝鏂扮敓鎴愮殑璇彞涓?/span> eval 璇彞鏈韓鍏鋒湁鐩稿悓鐨勪笂涓嬫枃鐜銆傝繖縐嶆柟寮忎腑錛屾瘡嬈℃墽琛?/span> eval 璇彞錛岃〃杈懼紡閮戒細(xì)琚В鏋愩傛墍浠ワ紝濡傛灉 eval EXPR 濡傛灉鍑虹幇鍦ㄥ驚鐜腑錛岃〃杈懼紡鍙兘浼?xì)琚В鏋愬娆°?/span> eval 鐨勮繖縐嶆柟寮忎嬌寰?/span> Perl 鑴氭湰紼嬪簭鑳藉疄鏃剁敓鎴愬拰鎵ц浠g爜錛屼粠鑰屽疄鐜頒簡鈥滃姩鎬佷唬鐮佲濄?/span>

l聽聽聽聽聽聽聽聽 eval BLOCK

BLOCK 鏄竴涓唬鐮佸潡錛屼緥濡傦細(xì)

eval {print $a};

eval {$a = 1, $b = 2, $c = $a + $b};

涓庣涓縐嶆柟寮忎笉鍚岋紝 BLOCK 鍙細(xì)琚В鏋愪竴嬈★紝鐒跺悗鏁翠釜鎻掑叆褰撳墠 eval 鍑芥暟鎵鍦ㄧ殑鎵ц涓婁笅鏂囥傜敱浜庤В鏋愪笂鐨勬ц兘鐨勪紭鍔匡紝浠ュ強鍙互鍦ㄧ紪璇戞椂榪涜浠g爜璇硶媯鏌ワ紝榪欑鏂瑰紡閫氬父琚綔涓?/span> Perl 鐢ㄦ潵涓轟竴孌典唬鐮佹彁渚涘紓甯告崟鎹夋満鍒訛紝铏界劧鍓嶄竴縐嶆柟寮忎篃鍙互銆?/span>

鎸夊府鍔╃殑鍚嶇О錛岀О eval 鐨勫弬鏁扮▼搴忎負(fù)鈥滃皬紼嬪簭鈥?/span> (mini-proggram) 銆傚湪涓ょ鏂瑰紡涓紝 eval 鍑芥暟鐨勮繑鍥炲奸兘鏄皬紼嬪簭鐨勬渶鍚庝竴鏉¤鍙ョ殑鍊鹼紝濡傛灉閬囧埌 return 璇彞錛屼笌瀛愪緥紼嬬浉鍚屻?/span>

Script1:

#!/usr/bin/perl -w

push ( @program,'$i = 1;');

push ( @program,'$i = 3; $j = 2; $k = $i + $j');

push ( @program, '$i = 3; return 24; $k = $i + $j');

foreach $exp (@program)

{

聽聽聽 $rtn =eval($exp);

聽聽聽 print $rtn,"\n";

}

Output:

1

5

24

濡傛灉灝忕▼搴忎腑鏈夎娉曢敊璇佽繍琛屾椂閿欒閬囧埌 die 璇彞錛?/span> eval 灝嗚繑鍥?/span> undef 銆傞敊璇爜琚繚瀛樺湪 $@ 涓?/span>

Script2:

#!/usr/bin/perl -w

push ( @program, '$i = 3; die "error message"; $k = $i + $j');

foreach $exp (@program)

{

聽聽聽 $rtn =eval($exp);

聽聽聽 if ( ! defined ( $rtn))

聽聽聽 {

聽聽聽聽聽聽 print "Exception: " , $@,"\n";

聽聽聽 }

聽聽聽 else

聽聽聽 {

聽聽聽聽聽聽 print $rtn,"\n";

聽聽聽 }

} ;

Output:

Exception: error message at (eval 1) line 1.

Script3:

#!/usr/bin/perl -w

# a run-time error

eval '$answer =' ;聽聽 # sets $@

warn $@ if$@;

Output:

syntax error at (eval 1) line 2, at EOF



]]>
濡備綍鎹曟崏CGI紼嬪簭exceptionhttp://m.tkk7.com/weidagang2046/articles/65888.htmlweidagang2046weidagang2046Sat, 26 Aug 2006 01:07:00 GMThttp://m.tkk7.com/weidagang2046/articles/65888.htmlhttp://m.tkk7.com/weidagang2046/comments/65888.htmlhttp://m.tkk7.com/weidagang2046/articles/65888.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/65888.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/65888.html鐢╬erl鍐檆gi紼嬪簭鐨勬椂鍊欙紝濡傛灉鍑虹幇浜嗛棶棰橈紝澶у鏁伴兘蹇呴』鏌ョ湅Web server鐨勬棩蹇楁墠鑳界煡閬撶▼搴忓摢閲屽嚭浜嗛敊璇紝欏甸潰涓鑸彧榪斿洖500鏈嶅姟鍣ㄩ敊璇紝涓嶈兘绔嬪埢鑾峰緱閿欒鐨勫師鍥犮?/p>

浣跨敤php鐨勭▼搴忓憳灝辨病鏈夎繖涓儲鎭鹼紝鍥犱負(fù)php榛樿浼?xì)灏嗛敊璇兘鎵撳嵃鍒皺宓闈笂銆侰GI紼嬪簭閲屽浣曟墠鑳藉仛鍒拌繖涓鐐瑰憿錛?/p>

CGI::Carp榪欎釜妯″潡鏀寔榪欎釜鍔熻兘錛屼互涓嬫槸渚嬪瓙錛?/p>

				
						use CGI::Carp qw(fatalsToBrowser);
die "Bad error here";
		

璇︾粏璇峰弬闃?a >CGI::Crap鐨勫湪綰挎墜鍐?/p>

閭e鏋滄槸鑷繁鍐欑殑綆鍗旵GI紼嬪簭錛屼笉浣跨敤CGI.pm鎬庝箞鍔烇紵浠ヤ笅鏄畝鍗曠殑鏂規(guī)硶......

鍘熺悊綆榪?/h4>Perl 鎻愪緵浜?SIG 榪欎釜鐗規(guī)畩鐨凥ASH錛岄氳繃瀹氫箟淇″彿鍝嶅簲鍑芥暟錛屽彲浠ユ崟鎹塪ie鍙婁竴浜泈arning鐨勪俊鎭紝騫跺皢榪欎簺淇℃伅鎵撳嵃鍒皐eb欏典笂銆備絾涓轟簡灝藉彲鑳芥棭鐨勫姞杞借繖浜涗唬鐮侊紝鏈濂藉皢淇″彿鎹曟崏浠g爜鏀懼埌BEGIN鍧椾腑錛岃繖鏍峰氨鑳戒繚璇佺▼搴忎竴鎵ц灝卞厛鎵ц寮傚父鎹曟崏榪欐浠g爜浜嗐?
BEGIN {
     # fatal handler setting.
     $SIG{__DIE__} = $SIG{__WARN__} = \&some_func;
}

浠g爜渚嬪瓙

浠ヤ笅鏄竴涓畝鍗曠殑渚嬬▼錛屽畾涔変簡涓涓彨handler_fatal澶勭悊鍑芥暟鏉ュ鐞嗘剰澶栭敊璇俊鎭?
#!/usr/bin/perl -wuse strict

BEGIN {
     # fatal handler setting.
     $SIG{__DIE__} = $SIG{__WARN__} = \&handler_fatal;
}
# some perl code goes here
......

sub handler_fatal {
     print "Content-type: text/html\n\n";
     print "@_";
}

涓婇潰榪欐perl紼嬪簭涓紝濡傛灉璋冪敤涓涓悕縐頒負(fù)abc();鐨勫瓙渚嬬▼錛屾祻瑙堝櫒灝嗙湅鍒板涓嬬殑閿欒淇℃伅錛?/p>

Undefined subroutine &main::abc called at /home/hzqbbc/cgi-bin/fatal.cgi line 8.

閫氳繃榪欎釜鏂規(guī)硶灝卞彲浠ュ緢綆渚跨殑榪涜紼嬪簭璋冭瘯浜嗐侲xtmail涓殑CGI.pm灝辨槸浣跨敤綾諱技鐨勬柟娉曪紝鍙互鎹曟崏die(), warn() 絳夊嚱鏁頒駭鐢熺殑閿欒鍙婄郴緇熺殑閿欒鎻愮ず銆?br />
from: http://www.hzqbbc.com/blog/arch/2005/05/aecgicexception.html



]]>
鍒涘緩鎴栧垹闄ょ洰褰?/title><link>http://m.tkk7.com/weidagang2046/articles/65250.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Wed, 23 Aug 2006 04:50:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/65250.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/65250.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/65250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/65250.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/65250.html</trackback:ping><description><![CDATA[ <font face="Verdana"> <font size="2">File::Path module涓殑錛?br /><br /><span id="nrnp9xr" class="i">mkpath</span><span id="3rhjxnn" class="s">(</span><span id="t1nlnbb" class="s">[</span><span id="hht1xjv" class="q">'/foo/bar/baz'</span><span id="xjxlhh1" class="cm">,</span><span id="pnddb9x" class="q">'blurfl/quux'</span><span id="r191ljt" class="s">]</span><span id="7n1vjjh" class="cm">,</span><span id="vnn9t1n" class="n">1</span><span id="rjvrv31" class="cm">,</span><span id="fd1p715" class="n">0711</span><span id="5zh9x1d" class="s">)</span><span id="9rrp93h" class="sc">;</span><br /><span id="znpft71" class="i">rmtree</span><span id="fv9t3d9" class="s">(</span><span id="9d1nj15" class="s">[</span><span id="pdp1hff" class="q">'foo/bar/baz'</span><span id="jbftfrx" class="cm">,</span><span id="b1jzpb9" class="q">'blurfl/quux'</span><span id="pd1nrdd" class="s">]</span><span id="r1pznlx" class="cm">,</span><span id="517pfrl" class="n">1</span><span id="ndrxxxl" class="cm">,</span><span id="vfrttdb" class="n">1</span><span id="tndnrbl" class="s">)</span><span id="vpbzpb3" class="sc">;</span></font> </font> <img src ="http://m.tkk7.com/weidagang2046/aggbug/65250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-08-23 12:50 <a href="http://m.tkk7.com/weidagang2046/articles/65250.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Perl Tips 2006/8/19http://m.tkk7.com/weidagang2046/articles/64542.htmlweidagang2046weidagang2046Sat, 19 Aug 2006 11:39:00 GMThttp://m.tkk7.com/weidagang2046/articles/64542.htmlhttp://m.tkk7.com/weidagang2046/comments/64542.htmlhttp://m.tkk7.com/weidagang2046/articles/64542.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/64542.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/64542.html2聽Perl language tips are met today.

1.聽a code snippet is as follows:

$code[$idx] =~ /^\s*(.+?)\s*$/;
$code[$idx] = $1;

Seem it's to extract the content without leading and tailing white space. But the (.+?) is still not understood.

2. a code snippet is as follows:

my $currentframe;
$currentframe = {
聽_pc_ => 0,
聽_func_ => 'main'
聽};

what's the type of $currentframe? handle to a hashtable?聽


Answer: $currentframe is a reference to聽an anonymous聽hash. Usage: $$currentframe{_pc_} or $currentframe->{_pc_}

weidagang2046 2006-08-19 19:39 鍙戣〃璇勮
]]>鍒犻櫎鐢ㄩ氶厤絎﹀尮閰嶇殑涓綾繪枃浠?/title><link>http://m.tkk7.com/weidagang2046/articles/64224.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Thu, 17 Aug 2006 15:28:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/64224.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/64224.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/64224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/64224.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/64224.html</trackback:ping><description><![CDATA[ <font face="Verdana"> <span style="FONT-SIZE: 13px">unlink 鍙互鐢ㄩ氶厤絎?br /><br />聽聽聽聽聽聽 unlink LIST<br />聽 聽聽 聽 unlink聽聽Deletes a list of files.聽聽Returns the number of files success-<br />聽 聽聽 聽聽 聽聽 聽聽 聽fully deleted.<br /><br />聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽 $cnt = unlink 鈥檃鈥? 鈥檅鈥? 鈥檆鈥?<br />聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽 unlink @goners;<br />聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽 <strong><font color="#cc0000">unlink <*.bak>;</font></strong><br /><br />聽 聽聽 聽聽 聽聽 聽聽 聽Note: "unlink" will not delete directories unless you are supe-<br />聽 聽聽 聽聽 聽聽 聽聽 聽ruser and the -U flag is supplied to Perl.聽聽Even if these con-<br />聽 聽聽 聽聽 聽聽 聽聽 聽ditions are met, be warned that unlinking a directory can<br />聽 聽聽 聽聽 聽聽 聽聽 聽inflict damage on your <font color="#000000">filesystem</font>.聽聽Use "rmdir" instead.<br /><br />聽 聽聽 聽聽 聽聽 聽聽 聽If LIST is omitted, uses $_.</span> </font> <img src ="http://m.tkk7.com/weidagang2046/aggbug/64224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-08-17 23:28 <a href="http://m.tkk7.com/weidagang2046/articles/64224.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍒楀嚭鐩綍涓嬬殑鎵鏈夊瓙鐩綍鍜屾枃浠跺悕http://m.tkk7.com/weidagang2046/articles/63516.htmlweidagang2046weidagang2046Mon, 14 Aug 2006 09:36:00 GMThttp://m.tkk7.com/weidagang2046/articles/63516.htmlhttp://m.tkk7.com/weidagang2046/comments/63516.htmlhttp://m.tkk7.com/weidagang2046/articles/63516.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/63516.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/63516.html # !/usr/bin/perl聽-w

@files = < d :/*> ;

print join ( " \n------\n " , @files );


weidagang2046 2006-08-14 17:36 鍙戣〃璇勮
]]>
perl鑷甫鐨勪粙緇嶅浘褰㈢晫闈㈢殑渚嬪瓙http://m.tkk7.com/weidagang2046/articles/62958.htmlweidagang2046weidagang2046Fri, 11 Aug 2006 04:21:00 GMThttp://m.tkk7.com/weidagang2046/articles/62958.htmlhttp://m.tkk7.com/weidagang2046/comments/62958.htmlhttp://m.tkk7.com/weidagang2046/articles/62958.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/62958.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/62958.html榪愯widget鍛戒護



weidagang2046 2006-08-11 12:21 鍙戣〃璇勮
]]>
windows 涓嬬殑system鍛戒護鐨勫悗鍙拌繍琛屾眰鍔?/title><link>http://m.tkk7.com/weidagang2046/articles/62878.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Thu, 10 Aug 2006 15:04:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/62878.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/62878.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/62878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/62878.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/62878.html</trackback:ping><description><![CDATA[ <div id="1rrtdpz" class="article" id="art31029"> <div id="7dbpjhh" class="article" id="art31029">鍙戜俊浜? cm3 (cm3), 淇″尯: Perl<br />鏍?聽棰? windows 涓嬬殑system鍛戒護鐨勫悗鍙拌繍琛屾眰鍔?br />鍙戜俊绔? 姘存湪紺懼尯 (Thu Aug 10 14:45:04 2006), 绔欏唴<br /><br />鍦╨inux涓嬶紝鍙互鐢╯ystem("abc.exe -s=com1 &");鏉ヨabc.exe鍚庡彴榪愯銆?br />浣嗗湪windows涓嬶紝瀹夎浜哸ctiveperl錛屾庝箞鏉ュ疄鐜扮被浼間笌涓婇潰鐨勫悗鍙拌繍琛岋紵璋簡錛侊紒錛?br /><br />--<br /><br />鈥?鏉ユ簮:路姘存湪紺懼尯 newsmth.net路[FROM: 219.237.6.*]<br /></div> <br /> <div id="9n11xb3" class="tconPager smaller left">[<a ><font color="#002c99">鏈瘒鍏ㄦ枃</font></a>] [<a ><font color="#002c99">鍥炲鏂囩珷</font></a>] [鏈瘒浣滆咃細(xì)<a ><font color="#002c99">qcpassed</font></a>] [<a ><font color="#002c99">鍥炰俊緇欎綔鑰?/font></a>] [<a ><font color="#002c99">榪涘叆璁ㄨ鍖?/font></a>] [<a ><font color="#002c99">榪斿洖欏墮儴</font></a>] <div id="f1hl35d" class="tnum">2</div></div> <div id="fbpdrdn" class="article" id="art31031">鍙戜俊浜? qcpassed (xiaoqiao), 淇″尯: Perl<br />鏍?聽棰? Re: windows 涓嬬殑system鍛戒護鐨勫悗鍙拌繍琛屾眰鍔?br />鍙戜俊绔? 姘存湪紺懼尯 (Thu Aug 10 14:57:43 2006), 绔欏唴<br /><br />鐪嬬湅system("start abc.exe -s=com1 ");琛屼箞<br />銆?鍦?cm3 (cm3) 鐨勫ぇ浣滀腑鎻愬埌: 銆?br /><span id="rrjltr3" class="f006">: 鍦╨inux涓嬶紝鍙互鐢╯ystem("abc.exe -s=com1 &");鏉ヨabc.exe鍚庡彴榪愯銆?/span><br /><span id="1hxpd77" class="f006">: 浣嗗湪windows涓嬶紝瀹夎浜哸ctiveperl錛屾庝箞鏉ュ疄鐜扮被浼間笌涓婇潰鐨勫悗鍙拌繍琛岋紵璋簡錛侊紒錛?/span><br /><br /><br /><br />--<br /><br />鈥?鏉ユ簮:路姘存湪紺懼尯 <a target="_blank"><font color="#002c99">http://newsmth.net</font></a>路[FROM: 159.226.43.*]<br /></div> <br /> <div id="j11phtr" class="tconPager smaller left">[<a ><font color="#002c99">鏈瘒鍏ㄦ枃</font></a>] [<a ><font color="#002c99">鍥炲鏂囩珷</font></a>] [鏈瘒浣滆咃細(xì)<a ><font color="#002c99">cm3</font></a>] [<a ><font color="#002c99">鍥炰俊緇欎綔鑰?/font></a>] [<a ><font color="#002c99">榪涘叆璁ㄨ鍖?/font></a>] [<a ><font color="#002c99">榪斿洖欏墮儴</font></a>] <div id="hxhvjxl" class="tnum">3</div></div> <div id="rr3h13x" class="article" id="art31037">鍙戜俊浜? cm3 (cm3), 淇″尯: Perl<br />鏍?聽棰? Re: windows 涓嬬殑system鍛戒護鐨勫悗鍙拌繍琛屾眰鍔?br />鍙戜俊绔? 姘存湪紺懼尯 (Thu Aug 10 16:32:52 2006), 绔欏唴<br /><br />鍙互錛侀潪甯擱潪甯告劅璋紒錛侊紒<br />銆?鍦?qcpassed (xiaoqiao) 鐨勫ぇ浣滀腑鎻愬埌: 銆?br /><span id="3ftrffr" class="f006">: 鐪嬬湅system("start abc.exe -s=com1 ");琛屼箞</span><br /></div> </div> <img src ="http://m.tkk7.com/weidagang2046/aggbug/62878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-08-10 23:04 <a href="http://m.tkk7.com/weidagang2046/articles/62878.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Perl澶勭悊Unix鍛戒護杈撳嚭http://m.tkk7.com/weidagang2046/articles/62235.htmlweidagang2046weidagang2046Mon, 07 Aug 2006 13:34:00 GMThttp://m.tkk7.com/weidagang2046/articles/62235.htmlhttp://m.tkk7.com/weidagang2046/comments/62235.htmlhttp://m.tkk7.com/weidagang2046/articles/62235.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/62235.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/62235.html # !/usr/bin/perl聽-w

open (聽FILE , " ls聽-l聽| " 聽);

while 聽(聽 $line = < FILE > 聽)
{
聽聽聽聽
chop ( $line );
聽聽聽聽
print $line , " \n " ;
}

close (FILE);


weidagang2046 2006-08-07 21:34 鍙戣〃璇勮
]]>
Perl鏂囦歡鍙婄洰褰曟搷浣?/title><link>http://m.tkk7.com/weidagang2046/articles/61995.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Sat, 05 Aug 2006 14:09:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/61995.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/61995.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/61995.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/61995.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/61995.html</trackback:ping><description><![CDATA[ <font face="Verdana" color="#000000" size="2">澶у鏁扮▼搴忛兘涓嶆槸瀛ょ珛鐨?瀹冧滑涓庡畠浠殑鐜鐩鎬簰浣滅敤銆傚緢澶氱殑紼嬪簭涔熼渶瑕侀氳繃鏂囦歡鎿嶄綔瀹炵幇鏁版嵁鐨勫瓨璐拰浜ゆ崲銆偮犳枃浠跺彞鏌?file聽handle)鏄疨erl紼嬪簭涓負(fù)紼嬪簭鍜屽閮ㄤ笘鐣屾彁渚汭/O榪炴帴鐨勫悕縐般傚緩璁叏閮ㄤ嬌鐢ㄥぇ鍐欏瓧姣嶄互紺轟笌鍙橀噺絳夌殑鍖哄埆銆傜壒鍒湴錛屼篃鍙互灝哠TDIN/STDOUT/STDERR涔熻涓郝犳槸Perl鐨勬枃浠跺彞鏌勶紝鍒嗗埆浠h〃鏍囧噯杈撳叆/鏍囧噯杈撳嚭/鏍囧噯閿欒杈撳嚭銆偮?<br /><br />鎵撳紑鍙婂叧闂枃浠堵?<br /><br />銆銆Perl鐨勬枃浠舵搷浣滀笌C璇█鏋佷負(fù)鐩鎬技銆傚錛毬?<br /><br />open(FILENAME,"abc.txt");聽 <br /><br />銆銆璇ヨ皟鐢ㄤ負(fù)璇繪枃浠舵墦寮錛岃嫢涓哄啓鏂囦歡鑰屾墦寮錛岄渶鍦ㄦ枃浠跺悕鍓嶅姞涓婂ぇ浜庡彿錛毬?<br /><br />open(FILENAME,">abc.txt");聽 <br /><br />銆銆鑻ヨ榪藉姞鑷蟲枃浠跺熬錛屽彲鍦ㄦ枃浠跺悕鍓嶅姞涓婁袱涓ぇ浜庡彿錛毬?<br /><br />open(FILENAME,">>abc.txt");聽 <br /><br />銆銆浠ヤ笂涓夌open()鏍煎紡鍦ㄦ垚鍔熸椂榪斿洖鐪燂紝澶辮觸鏃惰繑鍥炲亣銆備絾紼嬪簭涓氬父娌℃湁鎻愮ず錛屽嚭閿欐椂寰寰浼?xì)琚恨Z滑蹇界暐銆偮犻氬父褰撻渶瑕佺粰鍑哄嚭閿欐彁紺烘椂錛屽彲鍔犲叆die()鍑芥暟銆備緥錛毬?<br /><br />open(OUTFILE,">/tmp/outfile")||聽 <br />die聽"鍑洪敊錛屼笉鑳藉緩绔?tmp/outfile\n";聽 <br /><br />銆銆褰撳彧鏈塷pen澶辮觸鏃訛紝鎵嶄細(xì)鎵цdie緇欏嚭鍑洪敊鎻愮ず銆偮?<br /><br />銆銆瀵規(guī)枃浠跺彞鏌勭殑鎿嶄綔瀹屾垚鍚庯紝鍙互鐢╟lose鎿嶄綔絎﹀叧闂枃浠躲傚錛毬?<br /><br />close(OUTFILE);聽 <br /><br />-x聽鏂囦歡嫻嬭瘯聽 <br /><br />銆銆Perl鐨勬枃浠舵搷浣滀篃鍙互鍏堟祴璇曟枃浠舵槸鍚﹀瓨鍦紝鏄惁鍙鍐欑瓑銆傚錛毬?<br /><br />$x="abc.txt";聽 <br />if(-e聽$x)聽{聽#abc.txt鏄惁瀛樺湪錛熉?<br />#聽瀛樺湪鎿嶄綔聽 <br />}聽else聽{聽 <br />printf聽"鏂囦歡涓嶅瓨鍦ㄣ俓n";聽 <br />}聽 <br /><br />-e鎿嶄綔絎︽祴璇曟枃浠舵垨鐩綍鏄惁瀛樺湪銆偮?<br /><br />銆銆浠ヤ笅涓烘枃浠舵祴璇曟竻鍗曪細(xì)聽 <br /><br /><br /><br />鏂囦歡嫻嬭瘯聽嫻嬭瘯鎿嶄綔絎︽彁渚涚殑淇℃伅聽 <br />-r聽鏂囦歡鎴栫洰褰曞彲璇宦?<br />-w聽鏂囦歡鎴栫洰褰曞彲鍐櫬?<br />-x聽鏂囦歡鎴栫洰褰曟墽琛屄?<br />-o聽鏂囦歡鎴栫洰褰曞綊鐢ㄦ埛鎵鏈壜?<br />-R聽鏂囦歡鎴栫洰褰曞鐪熸鐢ㄦ埛鍙聽 <br />-W聽鏂囦歡鎴栫洰褰曞鐪熸鐢ㄦ埛鍙啓聽 <br />-X聽鏂囦歡鎴栫洰褰曞鐪熸鐢ㄦ埛鎵ц聽 <br />-O聽鏂囦歡鎴栫洰褰曞綊鐪熸鐢ㄦ埛鎵鏈壜?<br />-e聽鏂囦歡鎴栫洰褰曞瓨鍦?<br />-z聽鏂囦歡瀛樺湪涓斿ぇ灝忎負(fù)0聽 <br />-s聽鏂囦歡鎴栫洰褰曞瓨鍦ㄤ笖涓嶄負(fù)0(榪斿洖瀛楄妭鏁?聽 <br />-f聽鏂囦歡涓烘櫘閫氭枃浠堵?<br />-d聽鏂囦歡涓虹洰褰暵?<br />-l聽鏂囦歡涓虹鍙烽摼鎺ヂ?<br />-p聽鏂囦歡涓哄懡鍚嶇閬?FIFO)聽 <br />-S聽鏂囦歡涓轟竴涓鍙?socket)聽 <br />-b聽鏂囦歡涓哄潡鐗規(guī)畩鏂囦歡聽 <br />-c聽鏂囦歡涓哄瓧絎︾壒孌婃枃浠堵?<br />-t聽鎵撳紑tty鎺у埗鍙扮殑鏂囦歡鍙ユ焺聽 <br />-u聽鏂囦歡鎴栫洰褰曟槸璁劇疆鐢ㄦ埛ID鍙仿?<br />-g聽鏂囦歡鎴栫洰褰曟槸璁劇疆鐢ㄦ埛緇処D鍙仿?<br />-k聽鏂囦歡鎴栫洰褰曠殑sticky浣嶇疆浣嵚?<br />-T聽鏂囦歡鏄枃鏈枃浠堵?<br />-B聽鏂囦歡鏄簩榪涘埗鏂囦歡聽 <br />-M聽浠ュぉ涓哄崟浣嶇殑瀛樺湪鏃墮棿聽 <br />-A聽浠ュぉ涓哄崟浣嶈闂椂闂綽?<br />-C聽浠ュぉ涓哄崟浣嶅悓浠g爜鏇存敼鏃墮棿聽 <br /><br /><br />鍒犻櫎鏂囦歡聽 <br /><br />銆銆Perl鐨剈nlink()鎿嶄綔絎﹀彲瀹炵幇鍒犻櫎鏂囦歡銆傚錛毬?<br /><br />unlink("abc.txt");聽#鍒犻櫎abc.txt聽 <br /><br />鏂囦歡閲嶅懡鍚嵚?<br /><br />銆銆Perl鐨剅ename()鎿嶄綔絎﹀彲瀹炵幇鏂囦歡閲嶅懡鍚嶃傚錛毬?<br /><br />rename("abc","zmd")||die聽"鍑洪敊,涓嶈兘鏇村悕";聽 <br /><br />銆銆姝ゆ椂灝哸bc鏇村悕涓簔md錛屾垚鍔熻繑鍥炵湡錛屽惁鍒欑粰鍑哄嚭閿欐彁紺恒偮?<br /><br />鐩綍鎿嶄綔聽 <br /><br />銆銆Perl涓鐞嗙洰褰曢潪甯哥被浼間簬澶勭悊鏂囦歡銆偮?<br /><br />銆銆鎵撳紑鐩綍鍙ユ焺錛毬?<br /><br />opendir(ETC,"/etc")||die聽"鍑洪敊,涓嶈兘鎵撳紑鐩綍";聽 <br /><br />銆銆鍏抽棴鐩綍鍙ユ焺錛毬?<br /><br />closedir(ETC);聽 <br /><br />銆銆鍒涘緩鐩綍錛毬?<br /><br />mkdir("zmd",0777)||die聽"涓嶈兘鍒涘緩zmd鐩綍";聽 <br /><br />銆銆0777涓哄唴閮ㄦ潈闄愭牸寮忋偮?<br /><br />銆銆鍒犻櫎鐩綍錛毬?<br /><br />rmdir("zmd")||die聽"涓嶈兘鍒犻櫎zmd鐩綍"銆?/font> <img src ="http://m.tkk7.com/weidagang2046/aggbug/61995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-08-05 22:09 <a href="http://m.tkk7.com/weidagang2046/articles/61995.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍘繪帀鐗規(guī)畩瀛楃http://m.tkk7.com/weidagang2046/articles/47572.htmlweidagang2046weidagang2046Tue, 23 May 2006 01:09:00 GMThttp://m.tkk7.com/weidagang2046/articles/47572.htmlhttp://m.tkk7.com/weidagang2046/comments/47572.htmlhttp://m.tkk7.com/weidagang2046/articles/47572.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/47572.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/47572.html perl聽 - pi " *.orig " - e聽 " s/[\cM\c@]//g " 聽file


weidagang2046 2006-05-23 09:09 鍙戣〃璇勮
]]>
30 涓瓙榪涚▼鏉ュ茍琛屼笅杞戒笉鍚岀殑閾炬帴http://m.tkk7.com/weidagang2046/articles/47327.htmlweidagang2046weidagang2046Sun, 21 May 2006 12:37:00 GMThttp://m.tkk7.com/weidagang2046/articles/47327.htmlhttp://m.tkk7.com/weidagang2046/comments/47327.htmlhttp://m.tkk7.com/weidagang2046/articles/47327.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/47327.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/47327.html 聽聽 use 聽LWP :: Simple;
聽聽
use 聽Parallel :: ForkManager;

聽聽


聽聽
@links = (聽
聽聽聽聽[
" http://www.foo.bar/rulez.data " , " rulez_data.txt " ] ,
聽聽聽聽[
" http://new.host/more_data.doc " , " more_data.doc " ] ,
聽聽聽聽

聽聽);

聽聽


聽聽
# 聽鍚屾椂浣跨敤聽30聽涓繘紼?/span>
聽聽 my $pm = 聽new聽Parallel :: ForkManager( 30 );聽

聽聽
foreach my $linkarray 聽( @links )聽{
聽聽聽聽
$pm -> start聽and聽 next ;聽 # 聽寮濮嬄爁ork

聽聽聽聽
my 聽( $link , $fn )聽 = 聽@ $linkarray ;
聽聽聽聽
warn " Cannot聽get聽$fn聽from聽$link "
聽聽聽聽聽聽
if 聽getstore( $link , $fn )聽 != 聽RC_OK;

聽聽聽聽
$pm -> finish;聽 # 聽do聽the聽exit聽in聽the聽child聽process
聽聽}
聽聽
$pm -> wait_all_children;

棣栧厛閫氳繃 new 鏉ュ垵濮嬪寲涓涓?ForkManager 瀵硅薄錛屽悓鏃跺繀欏繪爣鏄庢渶澶ц繘紼嬫暟銆傚鏋滀嬌鐢?0 鐨勮瘽灝卞彲浠ラ伩鍏?fork 鏉ヨ揪鍒拌皟璇曠▼搴忕殑浣滅敤銆?/p>

鐒跺悗浣跨敤 $pm->start 鏉ュ紑濮?fork銆?$pm 鍦ㄥ瓙榪涚▼鏃惰繑鍥?0 ,鐖惰繘紼嬫椂榪斿洖瀛愯繘紼嬬殑榪涚▼鍙鳳紙鍏蜂綋璇峰弬闃?Perl 鐨?fork 鏂囨。錛夈傗渁nd next鈥?鐢ㄦ潵璺寵繃鐖惰繘紼嬨傛敞鎰忥細(xì)濡傛灉 fork 澶辮觸鐨勮瘽錛?$pm->start 灝辨彁紺洪敊璇紝紼嬪簭緇撴潫銆?/p>

$pm->finish 緇撴潫瀛愮▼搴忥紙鍋囪鎴戜滑涓寮濮嬩嬌鐢ㄤ簡 start 鏉?fork錛?/p>

娉ㄦ剰錛氬湪瀛愯繘紼嬩腑涓嶈兘浣跨敤 $pm->start銆?濡傛灉浣犳兂鍦ㄥ瓙榪涚▼涓嬌鐢ㄥ彟澶栦竴緇勫瓙榪涚▼錛屼綘蹇呴』鍐嶅垵濮嬪寲涓涓?Parallel::ForkManager 瀵硅薄銆?br />
from: http://www.perlchina.org/archive/archive.php?action=archive&page=44



]]>
ping瀛愮綉鍐呭悇涓繪満鐨勫茍鍙戝疄鐜?/title><link>http://m.tkk7.com/weidagang2046/articles/47326.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Sun, 21 May 2006 12:29:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/47326.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/47326.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/47326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/47326.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/47326.html</trackback:ping><description><![CDATA[ <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #000000">聽聽聽聽</span> <span style="COLOR: #0000ff">sub</span> <span style="COLOR: #000000">聽ping_a_host聽{<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$host</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">shift</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽`ping聽</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">i聽</span> <span style="COLOR: #800000">1</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">-</span> <span style="COLOR: #000000">c聽</span> <span style="COLOR: #800000">1</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$host</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">2</span> <span style="COLOR: #000000">>/</span> <span style="COLOR: #000000">dev</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">null`聽</span> <span style="COLOR: #000000">=~</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #800000">0</span> <span style="COLOR: #000000">聽packets聽rec</span> <span style="COLOR: #000000">/</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">?</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">0</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">:</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">1</span> <span style="COLOR: #000000">;<br />聽聽聽聽}<br /><br />聽聽聽聽</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">%pid_to_host</span> <span style="COLOR: #000000">;<br />聽聽聽聽</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">%host_result</span> <span style="COLOR: #000000">;<br /><br />聽聽聽聽</span> <span style="COLOR: #0000ff">sub</span> <span style="COLOR: #000000">聽wait_for_a_kid聽{<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$pid</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">wait</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">return</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">0</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$pid</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000"><</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">0</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$host</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">delete</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$pid_to_host</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #800080">$pid</span> <span style="COLOR: #000000">}<br />聽聽聽聽聽聽聽聽or聽</span> <span style="COLOR: #0000ff">warn</span> <span style="COLOR: #000000">(</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">Why聽did聽I聽see聽$pid聽($?)\n</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">)</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">next</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">warn</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">reaping聽$pid聽for聽$host\n</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽</span> <span style="COLOR: #800080">$host_result</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #800080">$host</span> <span style="COLOR: #000000">}聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽$</span> <span style="COLOR: #000000">?</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">?</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">0</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">:</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">1</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽</span> <span style="COLOR: #800000">1</span> <span style="COLOR: #000000">;<br />聽聽聽聽}<br /><br />聽聽聽聽</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">@hosts</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">map</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">10.0.1.$_</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">001</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">..</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">254</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><br />聽聽聽聽</span> <span style="COLOR: #0000ff">for</span> <span style="COLOR: #000000">聽(</span> <span style="COLOR: #800080">@hosts</span> <span style="COLOR: #000000">)聽{<br />聽聽聽聽聽聽wait_for_a_kid()聽</span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">keys</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">%pid_to_host</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">></span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800000">10</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">if</span> <span style="COLOR: #000000">聽(</span> <span style="COLOR: #0000ff">my</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$pid</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">fork</span> <span style="COLOR: #000000">)聽{<br />聽聽聽聽聽聽聽聽</span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000">#聽parent聽does<img src="http://m.tkk7.com/images/dot.gif" /></span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span> <span style="COLOR: #800080">$pid_to_host</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #800080">$pid</span> <span style="COLOR: #000000">}聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$_</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">warn</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">$pid聽is聽processing聽$_\n</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">;<br />聽聽聽聽聽聽}聽</span> <span style="COLOR: #0000ff">else</span> <span style="COLOR: #000000">聽{聽</span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000">聽child聽does<br />聽聽聽聽聽聽聽聽##聽child聽does<img src="http://m.tkk7.com/images/dot.gif" /></span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #000000">聽聽聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">exit</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">!</span> <span style="COLOR: #000000">ping_a_host(</span> <span style="COLOR: #800080">$_</span> <span style="COLOR: #000000">);<br />聽聽聽聽聽聽}<br />聽聽聽聽}<br /><br />聽聽聽聽</span> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000">#聽final聽reap:</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #000000">聽聽聽聽</span> <span style="COLOR: #800000">1</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">while</span> <span style="COLOR: #000000">聽wait_for_a_kid();<br /><br />聽聽聽聽</span> <span style="COLOR: #0000ff">for</span> <span style="COLOR: #000000">聽(</span> <span style="COLOR: #0000ff">sort</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">keys</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">%host_result</span> <span style="COLOR: #000000">)聽{<br />聽聽聽聽聽聽</span> <span style="COLOR: #0000ff">print</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">$_聽is聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽(</span> <span style="COLOR: #800080">$host_result</span> <span style="COLOR: #000000">{</span> <span style="COLOR: #800080">$_</span> <span style="COLOR: #000000">}聽</span> <span style="COLOR: #000000">?</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">good</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">:</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">bad</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">)</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">\n</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">;<br />聽聽聽聽}<br /></span> </div> <br />from: <a >http://www.perlchina.org/archive/archive.php?action=archive&page=44</a><img src ="http://m.tkk7.com/weidagang2046/aggbug/47326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-05-21 20:29 <a href="http://m.tkk7.com/weidagang2046/articles/47326.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Perl 妯″潡澶氬鉤鍙頒笅瀹夎鏂規(guī)硶http://m.tkk7.com/weidagang2046/articles/46454.htmlweidagang2046weidagang2046Tue, 16 May 2006 10:01:00 GMThttp://m.tkk7.com/weidagang2046/articles/46454.htmlhttp://m.tkk7.com/weidagang2046/comments/46454.htmlhttp://m.tkk7.com/weidagang2046/articles/46454.html#Feedback1http://m.tkk7.com/weidagang2046/comments/commentRss/46454.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/46454.html

鍑犱釜涓昏鐨?CPAN 绔欑偣鏈夛細(xì)

  • 鍥藉錛?

瀹夎鏂規(guī)硶

鎴戝湪榪欓噷浠嬬粛涓涓嬪悇縐嶅鉤鍙頒笅 perl 妯″潡鐨勫畨瑁呮柟娉曘備互瀹夎DBI妯″潡涓轟緥銆?/p>

Linux/Unix涓嬬殑瀹夎鏂規(guī)硶錛?/strong>

Linux/Unix 涓嬪畨瑁?Perl 妯″潡鏈変袱縐嶆柟娉曪細(xì)鎵嬪伐瀹夎鍜岃嚜鍔ㄥ畨瑁呫傜涓縐嶆柟娉曟槸浠?CPAN 涓婁笅杞芥?zhèn)ㄩ渶瑕佺殑妯″潡錛屾墜宸ョ紪璇戙佸畨瑁呫傜浜岀鏂規(guī)硶鏄嬌鐢?CPAN 妯″潡鑷姩瀹屾垚涓嬭澆銆佺紪璇戙佸畨瑁呯殑鍏ㄨ繃紼嬨?/p>

  • 鎵嬪伐瀹夎鐨勬楠わ細(xì)
  • 浠?CPAN 涓嬭澆浜?DBI 妯″潡 1.13 鐗堢殑鍘嬬緝鏂囦歡 DBI-1.13.tar.gz錛屽亣璁炬斁鍦?/usr/local/src/ 涓嬨?
  • cd /usr/local/src
  • 瑙e帇緙╄繖涓枃浠?榪欐椂浼?xì)鏂板晦Z竴涓狣BI-1.13鐨勭洰褰曘?br />
    tar xvzf DBI-1.13.tar.gz
  • 鎹㈠埌瑙e帇鍚庣殑鐩綍錛?cd DBI-1.13
  • 鐢熸垚 makefile錛?code>perl Makefile.PL
  • 鐢熸垚妯″潡錛?code>make
  • 嫻嬭瘯妯″潡錛堣繖姝ュ彲鏈夊彲鏃狅級錛?make test
    濡傛灉嫻嬭瘯緇撴灉鎶ュ憡鈥渁ll test ok鈥濓紝鎮(zhèn)ㄥ氨鍙互鏀懼績鍦板畨瑁呯紪璇戝ソ鐨勬ā鍧椾簡銆?
  • 瀹夎妯″潡鍓嶏紝鍏堣紜繚鎮(zhèn)ㄥ perl5 瀹夎鐩綍鏈夊彲鍐欐潈闄愶紙閫氬父浠?su 鍛戒護鑾峰緱錛夛紝鎵ц錛?br />
    make install
  • 鐜板湪錛岃瘯璇?DBI 妯″潡鍚с傚鏋滀笅闈㈢殑鍛戒護娌℃湁緇欏嚭浠諱綍杈撳嚭錛岄偅灝辨病闂銆?br />$>perl -MDBI -e1

    涓婅堪姝ラ閫傚悎浜?Linux/Unix 涓嬬粷澶у鏁扮殑 Perl 妯″潡銆傚彲鑳借繕鏈夊皯鏁版ā鍧楃殑瀹夎鏂規(guī)硶鐣ユ湁宸埆錛屾墍浠ユ渶濂藉厛鐪嬬湅瀹夎鐩綍閲岀殑 README 鎴?INSTALL銆?
  • 浣跨敤 CPAN 妯″潡鑷姩瀹夎錛?br />瀹夎鍓嶉渶瑕佸厛鑱斾笂緗戯紝騫朵笖鎮(zhèn)ㄩ渶瑕佸彇寰梤oot鏉冮檺銆?
  • perl -MCPAN -e shell

    鍒濇榪愯CPAN鏃墮渶瑕佸仛涓浜涜緗紝濡傛灉鎮(zhèn)ㄧ殑鏈哄櫒鏄洿鎺ヤ笌鍥犵壒緗戠浉鑱旓紙鎷ㄥ彿涓婄綉銆佷笓綰匡紝etc.錛夛紝閭d箞涓璺洖杞﹀氨琛屼簡錛屽彧闇瑕佸湪鏈鍚庝竴姝ラ変竴涓鎮(zhèn)ㄦ渶榪戠殑 CPAN 闀滃儚绔欑偣銆備緥濡傛垜閫夌殑鏄綅浜庡浗鍐呯殑ftp://mirrors.hknet.com/CPAN 銆傚惁鍒欙紝濡傛灉鎮(zhèn)ㄧ殑鏈哄櫒浣嶄簬闃茬伀澧欎箣鍚庯紝榪橀渶瑕佽緗甪tp浠g悊鎴杊ttp浠g悊銆備笅闈㈡槸甯哥敤 ppm 鍛戒護銆?
  • 鑾峰緱甯姪
    cpan>help
  • 鍒楀嚭CPAN涓婃墍鏈夋ā鍧楃殑鍒楄〃
    cpan>m
  • 瀹夎妯″潡錛岃嚜鍔ㄥ畬鎴怐BI妯″潡浠庝笅杞藉埌瀹夎鐨勫叏榪囩▼銆?br />cpan>install DBI
  • 閫鍑?br />cpan>quit

Win32涓嬬殑瀹夎鏂規(guī)硶錛?/strong>

鍦?Win32 涓嬶紝寤鴻浣跨敤 Active State 鐨?Perl for Win32錛屽嵆Active Perl銆侫ctive Perl 鐨勪富欏靛湪錛?br />http://www.activestate.com/ 銆?br />鍦?Win32 涓嬶紝姣旇緝瀹規(guī)槗鐨勬槸浣跨敤涓撻棬涓?Active Perl? 瀹氬埗鐨?Perl 妯″潡銆傜被浼間簬 CPAN 妯″潡錛?span class="newWikiWord">Active State涔熷紑鍙戜簡涓涓嚜鍔ㄥ畨瑁呭伐鍏峰彨鍋?/span>PPM錛圥erl Package Manager錛夈?/p>

  • 鏈閫氬父鐨勫畨瑁呮柟娉曟槸錛?
  • 棣栧厛鑱斾笂緗戯紝鍦?dos 鍛戒護琛屼笅鍚姩 ppm
    ppm
  • 鑾峰緱甯姪
    PPM>h
  • 鍒楀嚭宸插畨瑁呯殑 DBI 妯″潡淇℃伅
    cpan>query DBI
  • 鎼滅儲 cpan 鎵鏈夊尮閰?DBI 鐨勬ā鍧?br />cpan>search DBI
  • 瀹夎妯″潡錛岃嚜鍔ㄥ畬鎴?DBI 妯″潡浠庝笅杞藉埌瀹夎鐨勫叏榪囩▼銆?br />PPM>install DBI
  • 閫鍑?br />PPM>q
  • 濡傛灉鎮(zhèn)ㄧ殑鏈哄櫒浣嶄簬闃茬伀澧欎箣鍚庯紝閫氳繃 http 浠g悊涓婄綉錛岄偅涔堝彲浠ヤ嬌鐢ㄤ笅闈㈢殑鏂規(guī)硶銆?
  • 璁懼畾鐜鍙橀噺 HTTP_proxy
    C: \ > set HTTP_proxy=http://proxy:8080
    濡傛灉浣犵殑浠g悊闇瑕佺敤鎴峰悕鍜屽瘑鐮侊紝浣犺繕瑕佽瀹氱幆澧冨彉閲? HTTP_proxy_user 鍜?HTTP_proxy_pass
  • 瀹夎 activeperl 涓嶅寘鎷殑妯″潡
    濡傛灉 ppm 娌℃湁鏌愪釜 CPAN 鐨勬ā鍧楋紝鍙榪欎釜妯″潡涓嶉渶瑕佺紪璇戯紙娌℃湁浣跨敤 C 絳夛級閭d綘鍙互鎶婅繖涓ā鍧椾粠 CPAN 涓嬭澆錛岃В鍘嬬劧鍚庢斁鍒頒綘鐨?activeperl 鐨勫簱璺緞閲岋紝 perl -e "print join ' ' @INC" 鏄劇ず鍑?perl 鐨勫簱璺緞銆?
  • activeperl 閲屼笉鍖呮嫭鎵鏈夌殑 CPAN 妯″潡錛屽叾浠栧湴鏂瑰彲鑳芥彁渚涜繖浜涙ā鍧楃殑涓嬭澆錛?
  • 姣斿鍦?activeperl 5.8 鐨?GD 妯″潡瀹夎璇蜂嬌鐢ㄥ涓嬪懡浠わ細(xì)
    >ppm install http://theoryx5.uwinnipeg.ca/ppms/GD.ppd
  • activeperl 5.6 鐨?GD 妯″潡瀹夎璇蜂嬌鐢ㄥ涓嬪懡浠わ細(xì)
    >ppm install http://theoryx5.uwinnipeg.ca/ppmpackages/GD.ppd
  • 鍏朵粬 activeperl 妯″潡涓嬭澆鍦板潃璇峰弬鐓?Perl瀛︿範(fàn)鎸囧崡 銆?

浠ヤ笂杈冧負(fù)璇︾粏鍦版弿榪頒簡鍚勭騫沖彴涓?Perl 妯″潡鐨勫畨瑁呮柟娉曘傚笇鏈涜兘澶熷府鍔╁浗鍐?Perl 鐖卞ソ鑰呬滑閫氳繃浣跨敤鐜版湁澶ч噺浼樼鐨?Perl 妯″潡錛岄伩鍏嶉噸澶嶅姵鍔紝鎻愰珮鏁堢巼錛屾洿濂藉彂鎸?Perl 璇█鐨勫己澶у▉鍔涖?br />
from: http://www.perlchina.org/archive/archive.php?action=archive&page=51



]]>
How can I use Perl interactively?http://m.tkk7.com/weidagang2046/articles/45122.htmlweidagang2046weidagang2046Mon, 08 May 2006 16:35:00 GMThttp://m.tkk7.com/weidagang2046/articles/45122.htmlhttp://m.tkk7.com/weidagang2046/comments/45122.htmlhttp://m.tkk7.com/weidagang2046/articles/45122.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/45122.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/45122.htmlperl -de 0 (The more positive hackers prefer perl -de 1. :-)

Now you can type in any legal Perl code, and it will be immediately evaluated. You can also examine the symbol table, get stack backtraces, check variable values, and if you want to, set breakpoints and do the other things you can do in a symbolic debugger.

from: http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q3.1.html



]]>
ref鍑芥暟鍒ゆ柇鍙橀噺鏄綍縐嶇被鍨嬬殑寮曠敤http://m.tkk7.com/weidagang2046/articles/45119.htmlweidagang2046weidagang2046Mon, 08 May 2006 16:16:00 GMThttp://m.tkk7.com/weidagang2046/articles/45119.htmlhttp://m.tkk7.com/weidagang2046/comments/45119.htmlhttp://m.tkk7.com/weidagang2046/articles/45119.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/45119.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/45119.html聽聽聽 ref EXPR
聽聽聽 ref聽聽聽聽 Returns a non-empty string if EXPR is a reference, the empty
聽聽聽聽聽聽聽聽聽聽聽 string otherwise. If EXPR is not specified, $_ will be used. The
聽聽聽聽聽聽聽聽聽聽聽 value returned depends on the type of thing the reference is a
聽聽聽聽聽聽聽聽聽聽聽 reference to. Builtin types include:

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 SCALAR
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ARRAY
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 HASH
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 CODE
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 REF
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 GLOB
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 LVALUE

聽聽聽聽聽聽聽聽聽聽聽 If the referenced object has been blessed into a package, then
聽聽聽聽聽聽聽聽聽聽聽 that package name is returned instead. You can think of "ref" as
聽聽聽聽聽聽聽聽聽聽聽 a "typeof" operator.

聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (ref($r) eq "HASH") {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 print "r is a reference to a hash.\n";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 unless (ref($r)) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 print "r is not a reference at all.\n";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (UNIVERSAL::isa($r, "HASH")) {聽 # for subclassing
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 print "r is a reference to something that isa hash.\n";
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }

聽聽聽聽聽聽聽聽聽聽聽 See also perlref.



]]>
鍒犻櫎鏌愮洰褰曚笅鏈鍚庝慨鏀規(guī)棩鏈熷ぇ浜嶺澶╃殑鏂囦歡http://m.tkk7.com/weidagang2046/articles/44257.htmlweidagang2046weidagang2046Sun, 30 Apr 2006 16:47:00 GMThttp://m.tkk7.com/weidagang2046/articles/44257.htmlhttp://m.tkk7.com/weidagang2046/comments/44257.htmlhttp://m.tkk7.com/weidagang2046/articles/44257.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/44257.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/44257.html use 聽strict;
use 聽warnings;

@ARGV > 0 || die " Usage:聽perl聽file_checker.pl聽[dir]\n " ;

opendir (DIR , $ARGV [ 0 ])聽 || die " Can't聽open聽directory:聽$!\n " ;

my @file_list = readdir (DIR);

foreach my $file 聽( @file_list )
{
聽聽聽聽
$file = " $ARGV[0]/$file " ;
聽聽聽聽
if ( - f聽 $file )
聽聽聽聽{
聽聽聽聽聽聽聽聽
if ( - M聽 $file > 100 )
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽
print $file , " \n " ;
聽聽聽聽聽聽聽聽聽聽聽聽
unlink $file ;
聽聽聽聽聽聽聽聽}
聽聽聽聽}
}

closedir (DIR);

]]>
k1205 extractorhttp://m.tkk7.com/weidagang2046/articles/44223.htmlweidagang2046weidagang2046Sun, 30 Apr 2006 08:19:00 GMThttp://m.tkk7.com/weidagang2046/articles/44223.htmlhttp://m.tkk7.com/weidagang2046/comments/44223.htmlhttp://m.tkk7.com/weidagang2046/articles/44223.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/44223.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/44223.html $arg_num = @ARGV ;

(
$arg_num == 1 )聽 || die ( " usage:聽perl聽$0聽[file]\n " );

open (FH , $ARGV [ 0 ])聽 || die ( " Failed聽to聽open聽$ARGV[0]\n " );

$flag = 0 ;
$begin_symbol = ' |HEX聽|0聽|1聽|2聽|3聽|4聽|5聽|6聽|7聽|8聽|9聽|A聽|B聽|C聽|D聽|E聽|F聽| ' ;

while ( $line = < FH > )
{
聽聽聽聽
chop ( $line );
聽聽聽聽
if ( 1 != $flag || $line =~ /^\| 0 \ s{ 3 } \|/ )
聽聽聽聽{
聽聽聽聽聽聽聽聽
$flag = 1 ;
聽聽聽聽聽聽聽聽
@bytes = split ( /\|/, $line );
聽聽聽聽聽聽聽聽
for ( $i = 2 ;聽 $i < @bytes ;聽 $i ++ )
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽
push ( @data , $bytes [ $i ]);
聽聽聽聽聽聽聽聽}
聽聽聽聽}
}

# print聽join("聽",聽@data),聽"\n";

$beginOffset = 3 ;
$group = 3 ;

$group = 3 - $group ;

$pattern1 = 0x1 << 聽( 2 * $group );
$pattern2 = 0x2 << 聽( 2 * $group );

$count = 0 ;

for ( $i = $beginOffset ;聽 $i < @data ;聽 $i += 4 )
{
聽聽聽聽
$num = 0 ;
聽聽聽聽
for ( $j = 0 ;聽 $j < 4 ;聽 $j ++ )
聽聽聽聽{
聽聽聽聽聽聽聽聽
$part [ $j ]聽 = 聽(( hex ( $data [ $i + $j ])聽 & 聽( 0x1 << 聽( 2 * $group )))聽 >> 聽( 2 * $group )聽 << 1 )聽 |
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽((
hex ( $data [ $i + $j ])聽 & 聽( 0x2 << 聽( 2 * $group )))聽 >> 聽( 2 * $group )聽 >> 1 );
聽聽聽聽聽聽聽聽
$num = 聽( $num << 2 )聽 | $part [ $j ];
聽聽聽聽}

聽聽聽聽
if ( $num < 16 )
聽聽聽聽{
聽聽聽聽聽聽聽聽
print " 0 " ;
聽聽聽聽}
聽聽聽聽
printf " %x聽 " , $num ;
聽聽聽聽
if ( ++ $count % 16 == 0 )
聽聽聽聽{
聽聽聽聽聽聽聽聽
print " \n " ;
聽聽聽聽}
}

close (FH);

]]>
灝嗘煇鐩綍涓嬶紙鍖呮嫭瀛愮洰褰曪級鐨勬墍鏈?c鏂囦歡閲嶅懡鍚嶄負(fù).cpp鏂囦歡http://m.tkk7.com/weidagang2046/articles/38215.htmlweidagang2046weidagang2046Thu, 30 Mar 2006 03:29:00 GMThttp://m.tkk7.com/weidagang2046/articles/38215.htmlhttp://m.tkk7.com/weidagang2046/comments/38215.htmlhttp://m.tkk7.com/weidagang2046/articles/38215.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/38215.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/38215.html # !/usr/bin/perl聽-w

use 聽File :: Find;

@ARGV > 0 || die " usage:\nperl聽$聽[directory] " ;

$dir = $ARGV [ 0 ];

find(
\& traverse , $dir );

sub 聽traverse
{
聽聽聽聽
print $_ , " \n " ;
聽聽聽聽
if ( - f聽 $_ && $_ =~ / ( .* ) . c$ / )
聽聽聽聽{
聽聽聽聽聽聽聽聽
print " rename聽$_聽to聽$1.cpp " , " \n " ;
聽聽聽聽聽聽聽聽
rename $_ , " $1.cpp " ;
聽聽聽聽}
}


]]>
evalhttp://m.tkk7.com/weidagang2046/articles/37926.htmlweidagang2046weidagang2046Tue, 28 Mar 2006 15:03:00 GMThttp://m.tkk7.com/weidagang2046/articles/37926.htmlhttp://m.tkk7.com/weidagang2046/comments/37926.htmlhttp://m.tkk7.com/weidagang2046/articles/37926.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/37926.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/37926.html # !/usr/bin/perl聽-w

push ( @program , ' $i聽=聽1; ' );
push ( @program , ' print聽"The聽number聽is聽",聽$i; ' );

foreach $exp 聽( @program )
{
聽聽聽聽
eval ( $exp );
}


]]>
鍖歸厤鏌愮洰褰曚笅鎵鏈夋枃浠?/title><link>http://m.tkk7.com/weidagang2046/articles/37487.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Sun, 26 Mar 2006 09:30:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/37487.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/37487.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/37487.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/37487.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/37487.html</trackback:ping><description><![CDATA[ <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <span style="COLOR: #008000">#</span> <span style="COLOR: #008000">!/usr/bin/perl聽-w</span> <span style="COLOR: #008000"> <br /> </span> <span style="COLOR: #000000"> <br /> </span> <span style="COLOR: #800080">$file_pattern</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">'</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">f:/tmp/*.pl</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><br /></span> <span style="COLOR: #800080">@file_list</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #0000ff">glob</span> <span style="COLOR: #000000">(</span> <span style="COLOR: #800080">$file_pattern</span> <span style="COLOR: #000000">);<br /><br /></span> <span style="COLOR: #0000ff">foreach</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$file</span> <span style="COLOR: #000000">聽(</span> <span style="COLOR: #800080">@file_list</span> <span style="COLOR: #000000">)<br />{<br />聽聽聽聽</span> <span style="COLOR: #0000ff">print</span> <span style="COLOR: #000000">聽</span> <span style="COLOR: #800080">$file</span> <span style="COLOR: #000000">,</span> <span style="COLOR: #000000">聽</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">\n</span> <span style="FONT-WEIGHT: bold; COLOR: #000000">"</span> <span style="COLOR: #000000">;<br />}</span> </div> <img src ="http://m.tkk7.com/weidagang2046/aggbug/37487.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-03-26 17:30 <a href="http://m.tkk7.com/weidagang2046/articles/37487.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Expect 鏁欑▼涓枃鐗?/title><link>http://m.tkk7.com/weidagang2046/articles/37412.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Sat, 25 Mar 2006 15:24:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/37412.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/37412.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/37412.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/37412.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/37412.html</trackback:ping><description><![CDATA[[鐗堟潈澹版槑]<br />銆銆<br />銆銆Copyright(c) 1999<br />銆銆銆銆<br />銆銆鏈暀紼嬬敱*钁姦濞?緲昏瘧錛屽茍鍋氫簡閫傚綋鐨勪慨鏀癸紝鍙互鑷敱鐨勭敤浜庨潪鍟嗕笟鐩殑銆?br />銆銆浣哛edistribution鏃跺繀欏繪嫹璐濇湰[鐗堟潈澹版槑]銆傘銆銆銆銆銆<br /><br />[BUG]<br /><br />銆銆鏈変笉灝戦儴鍒嗭紝緲昏瘧鐨勬椂鍊欎笉鑳戒綔鍒扳滀俊錛岃揪鈥濄傚綋鐒朵簡錛屼換浣曟椂鍊欓兘娌℃湁鍋氬埌鈥滈泤鈥濓紝甯屾湜鍚勪綅璋呰В銆?br /><br />[鍘熻憲]<br />銆 <br />銆銆Don Libes: National Institute of Standards and Technology <br />銆銆銆銆libes@cme.nist.gov<br /><br />[鐩綍]<br />銆銆<br />銆銆1.鎽樿<br />銆銆2.鍏抽敭瀛?br />銆銆3.綆浠?br />銆銆4.Expect緇艱堪<br />銆銆5.callback<br />銆銆6.passwd 鍜屼竴鑷存ф鏌?br />銆銆7.rogue 鍜屼吉緇堢<br />銆銆8.ftp<br />銆銆9.fsck<br />銆銆10.澶氳繘紼嬫帶鍒訛細(xì)浣滀笟鎺у埗<br />銆銆11.浜や簰寮忎嬌鐢‥xpect<br />銆銆12.浜や簰寮廍xpect緙栫▼<br />銆銆13.闈炰氦浜掑紡紼嬪簭鐨勬帶鍒?br />銆銆14.Expect鐨勯熷害<br />銆銆15.瀹夊叏鏂歸潰鐨勮冭檻<br />銆銆16.Expect璧勬簮<br />銆銆17.鍙傝冧功綾?br /><br />1.[鎽樿]<br /><br />銆 鐜頒唬鐨凷hell瀵圭▼搴忔彁渚涗簡鏈灝忛檺搴︾殑鎺у埗(寮濮嬶紝鍋滄錛岀瓑絳?錛岃屾妸浜や簰鐨勭壒鎬х暀緇欎簡鐢ㄦ埛銆?榪欐剰鍛崇潃鏈変簺紼嬪簭錛屼綘涓嶈兘闈炰氦浜掔殑榪愯錛屾瘮濡傝passwd銆?鏈変竴浜涚▼搴忓彲浠ラ潪浜や簰鐨勮繍琛岋紝浣嗗湪寰堝ぇ紼嬪害涓婁撫澶變簡鐏墊椿鎬э紝姣斿璇磃sck銆傝繖琛ㄦ槑Unix鐨勫伐鍏鋒瀯閫犻昏緫寮濮嬪嚭鐜伴棶棰樸侲xpect鎭版伆濉ˉ浜嗗叾涓殑涓浜涜鐥曪紝瑙e喅浜嗗湪Unix鐜涓暱鏈熷瓨鍦ㄧ潃鐨勪竴浜涢棶棰樸?br /><br />銆 Expect浣跨敤Tcl浣滀負(fù)璇█鏍稿績銆備笉浠呭姝わ紝涓嶇紼嬪簭鏄氦浜掑拰榪樻槸闈炰氦浜掔殑錛孍xpect閮借兘榪愮敤銆傝繖鏄竴涓皬璇█鍜孶nix鐨勫叾浠栧伐鍏烽厤鍚堣搗鏉ヤ駭鐢熷己澶у姛鑳界殑緇忓吀渚嬪瓙銆?br />銆 <br />銆 鏈儴鍒嗘暀紼嬪茍涓嶆槸鏈夊叧Expect鐨勫疄鐜幫紝鑰屾槸鍏充簬Expect璇█鏈韓鐨勪嬌鐢紝榪欎富瑕佷篃鏄氳繃涓嶅悓鐨勮剼鏈弿榪頒緥瀛愭潵浣撶幇銆傚叾涓殑鍑犱釜渚嬪瓙榪樹緥璇佷簡Expect鐨勫嚑涓柊鐗瑰緛銆?br />銆<br />2.[鍏抽敭瀛梋<br />銆銆<br />銆銆Expect,浜や簰錛孭OSIX,紼嬪簭鍖栫殑瀵硅瘽錛孲hell,Tcl,Unix;<br /><br />3.[綆浠媇<br />銆 <br />銆銆涓涓彨鍋歠sck鐨刄nix鏂囦歡緋葷粺媯鏌ョ▼搴忥紝鍙互浠嶴hell閲岄潰鐢?y鎴栬?n閫夐」鏉ユ墽琛屻傘鍦ㄦ墜鍐孾1]閲岄潰錛?y閫夐」鐨勫畾涔夋槸璞¤繖鏍風(fēng)殑銆?br /><br />銆銆鈥滃浜巉sck鐨勬墍鏈夐棶棰橀兘鍋囧畾涓涓測es鈥濆搷搴旓紱鍦ㄨ繖鏍蜂嬌鐢ㄧ殑鏃跺欙紝蹇呴』鐗瑰埆鐨勫皬蹇冿紝鍥犱負(fù)瀹冨疄闄呬笂鍏佽紼嬪簭鏃犳潯浠剁殑緇х畫榪愯錛屽嵆浣挎槸閬囧埌浜嗕竴浜涢潪甯鎬弗閲嶇殑閿欒鈥?br />銆銆<br />銆銆鐩告瘮涔嬩笅錛?n閫夐」灝卞畨鍏ㄧ殑澶氾紝浣嗗畠瀹為檯涓婂嚑涔庝竴鐐圭敤閮芥病鏈夈傝繖縐嶆帴鍙i潪甯哥殑緋熺硶錛屼絾鏄嵈鏈夎澶氱殑紼嬪簭閮芥槸榪欑椋庢牸銆傘鏂囦歡浼犺緭紼嬪簭ftp鏈変竴涓夐」鍙互紱佹浜や簰寮忕殑鎻愰棶錛屼互渚胯兘浠庝竴涓剼鏈噷闈㈣繍琛屻備絾涓鏃﹀彂鐢熶簡閿欒錛屽畠娌℃湁鎻愪緵鐨勫鐞嗘帾鏂姐?br /><br />銆銆Expect鏄竴涓帶鍒朵氦浜掑紡紼嬪簭鐨勫伐鍏楓備粬瑙e喅浜唂sck鐨勯棶棰橈紝鐢ㄩ潪浜や簰鐨勬柟寮忓疄鐜頒簡鎵鏈変氦浜掑紡鐨勫姛鑳姐侲xpect涓嶆槸鐗瑰埆涓篺sck璁捐鐨勶紝瀹冧篃鑳借繘琛岀被浼糵tp鐨勫嚭閿欏鐞嗐?br /><br />銆銆fsck鍜宖tp鐨勯棶棰樺悜鎴戜滑灞曠ず浜嗚薄sh,csh鍜屽埆鐨勪竴浜泂hell鎻愪緵鐨勭敤鎴鋒帴鍙g殑灞闄愭с傘Shell娌℃湁鎻愪緵浠庝竴涓▼搴忚鍜岃薄涓涓▼搴忓啓鐨勫姛鑳姐傝繖鎰忓懗鐫shell鍙互榪愯fsck浣嗗彧鑳戒互鐗虹壊涓閮ㄥ垎fsck鐨勭伒媧繪у仛浠d環(huán)銆傛湁涓浜涚▼搴忔牴鏈氨涓嶈兘琚墽琛屻傛瘮濡傝錛屽鏋滄病鏈変竴涓敤鎴鋒帴鍙d氦浜掑紡鐨勬彁渚涜緭鍏ワ紝灝辨病娉曡繍琛屼笅鍘匯傚叾浠栬繕鏈夎薄Telnet,crypt,su,rlogin絳夌▼搴忔棤娉曞湪shell鑴氭湰閲岄潰鑷姩鎵ц銆傝繕鏈夊緢澶氬叾浠栫殑搴旂敤紼嬪簭鍦ㄨ璁℃槸涔熸槸瑕佹眰鐢ㄦ埛杈撳叆鐨勩?br /><br />銆銆Expect琚璁℃垚涓撻棬閽堝拰浜や簰寮忕▼搴忕殑浜や簰銆備竴涓狤xpect紼嬪簭鍛樺彲浠ュ啓涓涓剼鏈潵鎻忚堪紼嬪簭鍜岀敤鎴風(fēng)殑瀵硅瘽銆傛帴鐫Expect紼嬪簭鍙互闈炰氦浜掔殑榪愯鈥滀氦浜掑紡鈥濈殑紼嬪簭銆傚啓浜や簰寮忕▼搴忕殑鑴氭湰鍜屽啓闈炰氦浜掑紡紼嬪簭鐨勮剼鏈竴鏍風(fēng)畝鍗曘侲xpect榪樺彲浠ョ敤浜庡瀵硅瘽鐨勪竴閮ㄥ垎榪涜鑷姩鍖栵紝鍥犱負(fù)紼嬪簭鐨勬帶鍒跺彲浠ュ湪閿洏鍜岃剼鏈箣闂磋繘琛屽垏鎹€?br /><br />bes[2]閲岄潰鏈夎緇嗙殑鎻忚堪銆傜畝鍗曠殑璇達紝鑴氭湰鏄敤涓縐嶈В閲婃ц璦鍐欑殑銆?涔熸湁C鍜孋++鐨凟xpect搴撳彲渚涗嬌鐢紝浣嗚繖瓚呭嚭浜嗘湰鏂囩殑鑼冨洿).Expect鎻愪緵浜嗗垱寤轟氦浜掑紡榪涚▼鍜岃鍐欏畠浠殑杈撳叆鍜岃緭鍑虹殑鍛戒護銆傘Expect鏄敱浜庡畠鐨勪竴涓悓鍚嶇殑鍛戒護鑰屽懡鍚嶇殑銆?br /><br />銆銆Expect璇█鏄熀浜嶵cl鐨勩俆cl瀹為檯涓婃槸涓涓瓙紼嬪簭搴擄紝榪欎簺瀛愮▼搴忓簱鍙互宓屽叆鍒扮▼搴忛噷浠庤屾彁渚涜璦鏈嶅姟銆傘鏈緇堢殑璇█鏈夌偣璞′竴涓吀鍨嬬殑Shell璇█銆傞噷闈㈡湁緇欏彉閲忚祴鍊肩殑set鍛戒護錛屾帶鍒剁▼搴忔墽琛岀殑if,for,continue絳夊懡浠わ紝榪樿兘榪涜鏅氱殑鏁板鍜屽瓧絎︿覆鎿嶄綔銆傚綋鐒朵簡錛岃繕鍙互鐢╡xec鏉ヨ皟鐢║nix紼嬪簭銆傛墍鏈夎繖浜涘姛鑳斤紝Tcl閮芥湁銆俆cl鍦ㄥ弬鑰冧功綾?Outerhour[3][4]閲屾湁璇︾粏鐨勬弿榪般?br /><br />銆銆Expect鏄湪Tcl鍩虹涓婂垱寤鴻搗鏉ョ殑錛屽畠榪樻彁渚涗簡涓浜汿cl鎵娌℃湁鐨勫懡浠ゃ俿pawn鍛戒護嬋媧諱竴涓猆nix紼嬪簭鏉ヨ繘琛屼氦浜掑紡鐨勮繍琛屻傘send鍛戒護鍚戣繘紼嬪彂閫佸瓧絎︿覆銆俥xpect鍛戒護絳夊緟榪涚▼鐨勬煇浜涘瓧絎︿覆銆傘expect鏀寔姝h琛ㄨ揪寮忓茍鑳藉悓鏃剁瓑寰呭涓瓧絎︿覆錛屽茍瀵規(guī)瘡涓涓瓧絎︿覆鎵ц涓嶅悓鐨勬搷浣溿俥xpect榪樿兘鐞嗚В涓浜涚壒孌婃儏鍐碉紝濡傝秴鏃跺拰閬囧埌鏂囦歡灝俱?br /><br />銆銆expect鍛戒護鍜孴cl鐨刢ase鍛戒護鐨勯鏍煎緢鐩鎬技銆傞兘鏄敤涓涓瓧絎︿覆鍘誨尮閰嶅涓瓧絎︿覆銆?鍙鏈夊彲鑳斤紝鏂扮殑鍛戒護鎬繪槸鍜屽凡鏈夌殑Tcl鍛戒護鐩鎬技錛屼互浣垮緱璇ヨ璦淇濇寔宸ュ叿鏃忕殑緇ф壙鎬?銆備笅闈㈠叧浜巈xpect鐨勫畾涔夋槸浠庢墜鍐孾5]涓婃憳褰曚笅鏉ョ殑銆?br /><br />銆銆銆銆銆銆expect銆patlist1 action1 patlist2 action2.....<br /><br />銆銆銆銆璇ュ懡浠や竴鐩寸瓑鍒板綋鍓嶈繘紼嬬殑杈撳嚭鍜屼互涓婄殑鏌愪竴涓ā寮忕浉鍖歸厤錛屾垨鑰呯瓑銆銆銆銆鍒版椂闂磋秴榪囦竴涓壒瀹氱殑鏃墮棿闀垮害錛屾垨鑰呯瓑鍒伴亣鍒頒簡鏂囦歡鐨勭粨鏉熶負(fù)姝€?br />銆銆銆銆<br />銆銆銆銆濡傛灉鏈鍚庝竴涓猘ction鏄┖鐨勶紝灝卞彲浠ョ渷鐣ュ畠銆?br /><br />銆銆銆銆姣忎竴涓猵atlist閮界敱涓涓ā寮忔垨鑰呮ā寮忕殑琛?lists)緇勬垚銆傚鏋滄湁涓涓ā寮忓尮閰嶆垚鍔燂紝鐩稿簲鐨刟ction灝辮鎵ц銆傛墽琛岀殑緇撴灉浠巈xpect榪斿洖銆?br />銆銆銆銆琚簿紜尮閰嶇殑瀛楃涓?鎴栬呭綋瓚呮椂鍙戠敓鏃訛紝宸茬粡璇誨彇浣嗘湭榪涜鍖歸厤鐨勫瓧絎︿覆)琚瓨璐湪鍙橀噺expect_match閲岄潰銆傚鏋減atlist鏄痚of鎴栬卼imeout,鍒欏彂鐢熸枃浠剁粨鏉熸垨鑰呰秴鏃舵椂鎵嶆墽琛岀浉搴旂殑action.涓鑸秴鏃剁殑鏃跺兼槸10縐掞紝浣嗗彲浠ョ敤綾諱技"set timeout 30"涔嬬被鐨勫懡浠ゆ妸瓚呮椂鏃跺艱瀹氫負(fù)30縐掋?br />銆銆銆銆<br />銆銆銆銆涓嬮潰鐨勪竴涓▼搴忔鏄粠涓涓湁鍏崇櫥褰曠殑鑴氭湰閲岄潰鎽樺彇鐨勩俛bort鏄湪鑴氭湰鐨勫埆澶勫畾涔夌殑榪囩▼錛岃屽叾浠栫殑action浣跨敤綾諱技涓嶤璇█鐨凾cl鍘熻銆?br /><br />銆銆銆銆銆銆expect "*welcome*"銆銆銆銆銆銆銆銆break 銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆 "*busy*"銆銆銆銆銆銆銆銆{print busy;continue} <br />銆銆銆銆銆銆銆銆銆 "*failed*"銆銆銆銆銆銆銆銆abort銆 <br />銆銆銆銆銆銆銆銆銆 timeout銆銆銆銆銆銆銆銆abort<br /><br />銆銆銆銆妯″紡鏄氬父鐨凜 Shell椋庢牸鐨勬瑙勮〃杈懼紡銆傛ā寮忓繀欏誨尮閰嶅綋鍓嶈繘紼嬬殑浠庝笂涓涓猠xpect鎴栬卛nteract寮濮嬬殑鎵鏈夎緭鍑?鎵浠ョ粺閰嶇*浣跨敤鐨勯潪甯?鐨勬櫘閬嶃備絾鏄紝涓鏃﹁緭鍑鴻秴榪?000涓瓧鑺傦紝鍓嶉潰鐨勫瓧絎﹀氨浼?xì)琚繕璁板Q岃繖鍙互閫氳繃璁懼畾match_max鐨勫兼潵鏀瑰彉銆?br /><br />銆銆expect鍛戒護紜疄浣撶幇浜唀xpect璇█鐨勬渶濂藉拰鏈鍧忕殑鎬ц川銆傜壒鍒槸錛宔xpect鍛戒護鐨勭伒媧繪ф槸浠ョ粡甯稿嚭鐜頒護浜鴻糠鎯戠殑璇硶鍋氫唬浠楓傞櫎浜嗗叧閿瓧妯″紡(姣斿璇磂of,timeout)閭d簺妯″紡琛ㄥ彲浠ュ寘鎷涓ā寮忋傝繖淇濊瘉鎻愪緵浜嗕竴縐嶆柟娉曟潵鍖哄垎浠栦滑銆備絾鏄垎寮榪欎簺琛ㄩ渶瑕侀澶栫殑鎵弿錛屽鏋滄病鏈夋伆褰撶殑鐢╗"]鎷搗鏉ワ紝榪欐湁鍙兘浼?xì)鎶婂拰褰撴垚绌虹櫧瀛椊W︺傜敱浜嶵cl鎻愪緵浜嗕袱縐嶅瓧絎︿覆寮曠敤鐨勬柟娉曪細(xì)鍗曞紩鍜屽弻寮曪紝鎯呭喌鍙樼殑鏇寸碂銆?鍦═cl閲岄潰錛屽鏋滀笉浼?xì)鍑虹庮C簩涔夋ц瘽錛屾病鏈夊繀瑕佷嬌鐢ㄥ紩鍙?銆傚湪expect鐨勬墜鍐岄噷闈紝榪樻湁涓涓嫭绔嬬殑閮ㄥ垎鏉ヨВ閲婅繖縐嶅鏉傛с傚垢榪愮殑鏄細(xì)鏈変竴浜涘緢濂界殑渚嬪瓙浼間箮闃繪浜嗚繖縐嶆姳鎬ㄣ備絾鏄紝榪欎釜澶嶆潅鎬у緢鏈夊彲鑳藉湪灝嗘潵鐨勭増鏈腑鍐嶅害鍑虹幇銆備負(fù)浜嗗寮哄彲璇繪э紝鍦ㄦ湰鏂囦腑錛屾彁渚涚殑鑴氭湰閮藉亣瀹氬弻寮曞彿鏄凍澶熺殑銆?br /><br />銆銆瀛楃鍙互浣跨敤鍙嶆枩鏉犳潵鍗曠嫭鐨勫紩鐢紝鍙嶆枩鏉犱篃琚敤浜庡璇彞鐨勫歡緇紝濡傛灉涓嶅姞鍙嶆枩鏉犵殑璇濓紝璇彞鍒頒竴琛岀殑緇撳熬澶勫氨緇撴潫浜嗐傝繖鍜孴cl涔熸槸涓鑷寸殑銆俆cl鍦ㄥ彂鐜版湁寮鐨勫崟寮曞彿鎴栬呭紑鐨勫弻寮曞彿鏃墮兘浼?xì)鐟艟l壂鎻忋傝屼笖錛屽垎鍙峰彲浠ョ敤浜庡湪涓琛屼腑鍒嗗壊澶氫釜璇彞銆傝繖涔嶅惉璧鋒潵鏈夌偣璁╀漢鍥版儜錛屼絾鏄紝榪欐槸瑙i噴鎬ц璦鐨勯鏍鹼紝浣嗘槸錛岃繖紜疄鏄疶cl鐨勪笉澶紓浜殑閮ㄥ垎銆?br /><br />5.[callback]<br /><br />銆銆浠や漢闈炲父鎯婅鐨勬槸錛屼竴浜涘皬鐨勮剼鏈浣曠殑浜х敓涓浜涙湁鐢ㄧ殑鍔熻兘銆備笅闈㈡槸涓涓嫧鐢?shù)璇濆忥L(fēng)爜鐨勮剼鏈備粬鐢ㄦ潵鎶婃敹璐瑰弽鍚戯紝浠ヤ究浣垮緱闀塊旂數(shù)璇濆璁$畻鏈鴻璐廣傝繖涓剼鏈敤綾諱技鈥渆xpect callback.exp 12016442332鈥濇潵嬋媧匯傚叾涓紝鑴氭湰鐨勫悕瀛椾究鏄痗allback.exp錛岃?1(201)644-2332鏄鎷ㄧ殑鐢?shù)璇濆忥L(fēng)爜銆?br /><br />銆銆銆銆#first give the user some time to logout<br />銆銆銆銆exec sleep 4<br />銆銆銆銆spawn tip modem<br />銆銆銆銆expect "*connected*"<br />銆銆銆銆send "ATD [index $argv 1] "<br />銆銆銆銆#modem takes a while to connect<br />銆銆銆銆set timeout 60<br />銆銆銆銆expect "*CONNECT*"<br /><br />銆銆絎竴琛屾槸娉ㄩ噴錛岀浜岃灞曠ず浜嗗浣曡皟鐢ㄦ病鏈変氦浜掔殑Unix紼嬪簭銆俿leep 4浼?xì)鋴山E嬪簭闃誨4縐掞紝浠ヤ嬌寰楃敤鎴鋒湁鏃墮棿鏉ラ鍑猴紝鍥犱負(fù)modem鎬繪槸浼?xì)鍥炲彨鐢ㄦ埛宸簿l忎嬌鐢ㄧ殑鐢?shù)璇濆忥L(fēng)爜銆?br /><br />銆銆涓嬮潰涓琛屼嬌鐢╯pawn鍛戒護鏉ユ縺媧籺ip紼嬪簭錛屼互渚夸嬌寰梩ip鐨勮緭鍑鴻兘澶熻expect鎵璇誨彇錛屼嬌寰梩ip鑳戒粠send璇昏緭鍏ャ備竴鏃ip璇村畠宸茬粡榪炴帴涓婏紝modem灝變細(xì)瑕佹眰鍘繪嫧鎵撳ぇ鍝ョ數(shù)璇濆彿鐮併?鍋囧畾modem閮芥槸璐烘皬鍏煎鐨勶紝浣嗘槸鏈剼鏈彲浠ュ緢瀹規(guī)槗鐨勪慨鏀規(guī)垚鑳介傚簲鍒殑綾誨瀷鐨刴odem)銆備笉璁哄彂鐢熶簡浠涔堬紝expect閮戒細(xì)緇堟銆傚鏋滃懠鍙け璐ワ紝expect鑴氭湰鍙互璁捐鎴愯繘琛岄噸璇曪紝浣嗚繖閲屾病鏈夈傚鏋滃懠鍙垚鍔燂紝getty浼?xì)鍦╡xpect閫鍑哄悗媯嫻嬪埌DTR錛屽茍涓斿悜鐢ㄦ埛鎻愮ずloging:銆?瀹炵敤鐨勮剼鏈線寰鎻愪緵鏇村鐨勯敊璇嫻?銆?br /><br />銆銆榪欎釜鑴氭湰灞曠ず浜嗗懡浠よ鍙傛暟鐨勪嬌鐢紝鍛戒護琛屽弬鏁板瓨璐湪涓涓彨鍋歛rgv鐨勮〃閲岄潰(榪欏拰C璇█鐨勯鏍煎緢璞?銆傚湪榪欑鎯呭喌涓嬶紝絎竴涓厓绱犲氨鏄數(shù)璇濆彿鐮併傛柟鎷彿浣垮緱琚嫭璧鋒潵鐨勯儴鍒嗗綋浣滃懡浠ゆ潵鎵ц錛岀粨鏋滃氨鏇挎崲琚嫭璧鋒潵鐨勯儴鍒嗐傝繖涔熷拰C Shell鐨勯鏍煎緢璞°?br /><br />銆銆榪欎釜鑴氭湰鍜屼竴涓ぇ綰?0K鐨凜璇█紼嬪簭瀹炵幇鐨勫姛鑳界浉浼箋?br />銆銆銆銆<br /><br />6.[passwd鍜屼竴鑷存ф鏌<br /><br />銆銆鍦ㄥ墠闈紝鎴戜滑鎻愬埌passwd紼嬪簭鍦ㄧ己涔忕敤鎴蜂氦浜掔殑鎯呭喌涓嬶紝涓嶈兘榪愯錛宲asswd浼?xì)蹇界暐I/O閲嶅畾鍚戯紝涔熶笉鑳藉祵鍏ュ埌綆¢亾閲岃竟浠ヤ究鑳戒粠鍒殑紼嬪簭鎴栬呮枃浠墮噷璇誨彇杈撳叆銆傝繖涓▼搴忓潥鎸佽姹傜湡姝g殑涓庣敤鎴瘋繘琛屼氦浜掋傚洜涓哄畨鍏ㄧ殑鍘熷洜錛宲asswd琚璁℃垚榪欐牱錛屼絾緇撴灉瀵艱嚧娌℃湁闈炰氦浜掑紡鐨勬柟娉曟潵媯楠宲asswd銆傝繖鏍蜂竴涓緋葷粺瀹夊叏鑷沖叧閲嶈鐨勭▼搴忕珶鐒舵病鏈夊姙娉曡繘琛屽彲闈犵殑媯楠岋紝鐪熷疄鍏鋒湁璁藉埡鎰忓懗銆?br /><br />銆銆passwd浠ヤ竴涓敤鎴峰悕浣滀負(fù)鍙傛暟錛屼氦浜掑紡鐨勬彁紺鴻緭鍏ュ瘑鐮併備笅闈㈢殑expect鑴氭湰浠ョ敤鎴峰悕鍜屽瘑鐮佷綔涓哄弬鏁拌岄潪浜や簰寮忕殑榪愯銆?br /><br />銆銆銆銆spawn oasswd [index $argv 1]<br />銆銆銆銆set password [index $argv 2]<br />銆銆銆銆expect "*password:"<br />銆銆銆銆send "$password "<br />銆銆銆銆expect "*password:"<br />銆銆銆銆send "$password "<br />銆銆銆銆expect eof<br /><br />銆銆絎竴琛屼互鐢ㄦ埛鍚嶅仛鍙傛暟鍚姩passwd紼嬪簭錛屼負(fù)鏂逛究璧瘋錛岀浜岃鎶婂瘑鐮佸瓨鍒頒竴涓彉閲忛噷闈€傚拰shell綾諱技錛屽彉閲忕殑浣跨敤涔熶笉闇瑕佹彁鍓嶅0鏄庛?br /><br />銆銆鍦ㄧ涓夎錛宔xpect鎼滅儲妯″紡"*password:"錛屽叾涓?鍏佽鍖歸厤浠繪剰杈撳叆錛屾墍浠ュ浜庨伩鍏嶆寚瀹氭墍鏈夌粏鑺傝岃█鏄潪甯告湁鏁堢殑銆?涓婇潰鐨勭▼搴忛噷娌℃湁action,鎵浠xpect媯嫻嬪埌璇ユā寮忓悗灝辯戶緇繍琛屻?br /><br />銆銆涓鏃︽帴鏀跺埌鎻愮ず鍚庯紝涓嬩竴琛屽氨灝辨妸瀵嗙爜閫佺粰褰撳墠榪涚▼銆傝〃鏄庡洖杞︺?瀹為檯涓婏紝鎵鏈夌殑C鐨勫叧浜庡瓧絎︾殑綰﹀畾閮芥敮鎸?銆備笂闈㈢殑紼嬪簭涓湁涓や釜expect-send搴忓垪錛屽洜涓簆asswd涓轟簡瀵硅緭鍏ヨ繘琛岀‘璁わ紝瑕佹眰榪涜涓ゆ杈撳叆銆傚湪闈炰氦浜掑紡紼嬪簭閲岄潰錛岃繖鏄鏃犲繀瑕佺殑錛屼絾鐢變簬鍋囧畾passwd鏄湪鍜岀敤鎴瘋繘琛屼氦浜掞紝鎵浠ユ垜浠殑鑴氭湰榪樻槸榪欐牱鍋氫簡銆?br /><br />銆銆鏈鍚庯紝"expect eof"榪欎竴琛岀殑浣滅敤鏄湪passwd鐨勮緭鍑轟腑鎼滅儲鏂囦歡緇撴潫絎︼紝榪欎竴琛岃鍙ヨ繕灞曠ず浜嗗叧閿瓧鐨勫尮閰嶃傚彟澶栦竴涓叧閿瓧鍖歸厤灝辨槸timeout浜嗭紝timeout琚敤浜庤〃紺烘墍鏈夊尮閰嶇殑澶辮觸鑰屽拰涓孌電壒瀹氶暱搴︾殑鏃墮棿鐩稿尮閰嶃傚湪榪欓噷eof鏄潪甯告湁蹇呰鐨勶紝鍥犱負(fù)passwd琚璁℃垚浼?xì)妫鏌ュ畠鐨勬墍鏈塈/O鏄惁閮芥垚鍔熶簡錛屽寘鎷浜屾杈撳叆瀵嗙爜鏃朵駭鐢熺殑鏈鍚庝竴涓柊琛屻?br /><br />銆銆榪欎釜鑴氭湰宸茬粡瓚沖灞曠ずpasswd鍛戒護鐨勫熀鏈氦浜掓с傚彟澶栦竴涓洿鍔犲畬澶囩殑渚嬪瓙鍥炴鏌ュ埆鐨勪竴浜涜涓恒傛瘮濡傝錛屼笅闈㈢殑榪欎釜鑴氭湰灝辮兘媯鏌asswd紼嬪簭鐨勫埆鐨勫嚑涓柟闈€傛墍鏈夌殑鎻愮ず閮借繘琛屼簡媯鏌ャ傚鍨冨溇杈撳叆鐨勬鏌ヤ篃榪涜浜嗛傚綋鐨勫鐞嗐傝繘紼嬫浜★紝瓚呬箮瀵誨父鐨勬參鍝嶅簲錛屾垨鑰呭埆鐨勯潪棰勬湡鐨勮涓洪兘榪涜浜嗗鐞嗐?br /><br />銆銆銆銆spawn passwd [index $argv 1]<br />銆銆銆銆expect 銆銆銆銆eof銆銆銆銆銆銆銆銆銆銆銆銆{exit 1} 銆銆銆銆<br />銆銆銆銆銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*No such user.*"銆銆銆銆{exit 3}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*New password:"銆銆銆銆<br />銆銆銆銆send銆"[index $argv 2 "<br />銆銆銆銆expect 銆銆銆銆eof銆銆銆銆銆銆銆銆銆銆銆銆{exit 4}銆銆銆銆<br />銆銆銆銆銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Password too long*"銆銆銆銆{exit 5}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Password too short*"銆銆銆銆{exit 5}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Retype ew password:"<br />銆銆銆銆send "[index $argv 3] "<br />銆銆銆銆expect 銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Mismatch*"銆銆銆銆銆銆銆銆{exit 6}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Password unchanged*"銆銆銆銆{exit 7}銆銆銆銆<br />銆銆銆銆銆銆銆銆" "銆銆銆銆銆銆銆銆<br />銆銆銆銆expect銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*"銆銆銆銆銆銆銆銆銆銆銆銆{exit 6}銆銆銆銆<br />銆銆銆銆銆銆銆銆eof<br /><br />銆銆銆<br />銆銆榪欎釜鑴氭湰閫鍑烘椂鐢ㄤ竴涓暟瀛楁潵琛ㄧず鎵鍙戠敓鐨勬儏鍐點?琛ㄧずpasswd紼嬪簭姝e父榪愯錛?琛ㄧず闈為鏈熺殑姝諱骸錛?琛ㄧず閿佸畾錛岀瓑絳夈備嬌鐢ㄦ暟瀛楁槸涓轟簡綆鍗曡搗瑙併俥xpect榪斿洖瀛楃涓插拰榪斿洖鏁板瓧鏄竴鏍風(fēng)畝鍗曠殑錛屽嵆浣挎槸媧劇敓紼嬪簭鑷韓浜х敓鐨勬秷鎭篃鏄竴鏍風(fēng)殑銆傚疄闄呬笂錛屽吀鍨嬬殑鍋氭硶鏄妸鏁翠釜浜や簰鐨勮繃紼嬪瓨鍒頒竴涓枃浠墮噷闈紝鍙湁褰撶▼搴忕殑榪愯鍜岄鏈熶竴鏍風(fēng)殑鏃跺欐墠鎶婅繖涓枃浠跺垹闄ゃ傚惁鍒欒繖涓猯og琚暀寰呬互鍚庤繘涓姝ョ殑媯鏌ャ?br /><br />銆銆榪欎釜passwd媯鏌ヨ剼鏈璁捐鎴愮敱鍒殑鑴氭湰鏉ラ┍鍔ㄣ傝繖絎簩涓剼鏈粠涓涓枃浠墮噷闈㈣鍙栧弬鏁板拰棰勬湡鐨勭粨鏋溿傚浜庢瘡涓涓緭鍏ュ弬鏁伴泦錛屽畠璋冪敤絎竴涓剼鏈茍涓旀妸緇撴灉鍜岄鏈熺殑緇撴灉鐩告瘮杈冦?鍥犱負(fù)榪欎釜浠誨姟鏄潪浜や簰鐨勶紝涓涓櫘閫氱殑鑰佸紡shell灝卞彲浠ョ敤鏉ヨВ閲婄浜屼釜鑴氭湰)銆傛瘮濡傝錛屼竴涓猵asswd鐨勬暟鎹枃浠跺緢鏈夊彲鑳藉氨璞′笅闈竴鏍楓?br /><br />銆銆銆銆passwd.exp銆銆銆銆3銆銆銆銆bogus銆銆銆銆-銆銆銆銆銆銆銆銆-<br />銆銆銆銆passwd.exp銆銆銆銆0銆銆銆銆fred銆銆銆銆abledabl銆銆銆銆abledabl<br />銆銆銆銆passwd.exp銆銆銆銆5銆銆銆銆fred銆銆銆銆abcdefghijklm銆銆銆銆-<br />銆銆銆銆passwd.exp銆銆銆銆5銆銆銆銆fred銆銆銆銆abc銆銆銆銆銆銆銆銆-<br />銆銆銆銆passwd.exp銆銆銆銆6銆銆銆銆fred銆銆銆銆foobar銆銆銆銆銆銆銆銆bar銆銆銆銆<br />銆銆銆銆passwd.exp銆銆銆銆4銆銆銆銆fred銆銆銆銆^C銆銆銆銆銆銆銆銆-<br /><br />銆銆絎竴涓煙鐨勫悕瀛楁槸瑕佽榪愯鐨勫洖褰掕剼鏈傜浜屼釜鍩熸槸闇瑕佸拰緇撴灉鐩稿尮閰嶇殑閫鍑哄箋傜涓変釜鍩熷氨鏄敤鎴峰悕銆傜鍥涗釜鍩熷拰絎簲涓煙灝辨槸鎻愮ず鏃跺簲璇ヨ緭鍏ョ殑瀵嗙爜銆傚噺鍙蜂粎浠呰〃紺洪偅閲屾湁涓涓煙錛岃繖涓煙鍏跺疄緇濆涓嶄細(xì)鐢ㄥ埌銆傚湪絎竴涓涓紝bogus琛ㄧず鐢ㄦ埛鍚嶆槸闈炴硶鐨勶紝鍥犳passwd浼?xì)鍝嶅簲璇村Q氭病鏈夋鐢ㄦ埛銆俥xpect鍦ㄩ鍑烘椂浼?xì)杩斿?錛?鎭板ソ灝辨槸絎簩涓煙銆傚湪鏈鍚庝竴琛屼腑錛宆C灝辨槸琚垏瀹炵殑閫佺粰紼嬪簭鏉ラ獙璇佺▼搴忔槸鍚︽伆褰撶殑閫鍑恒?br /><br />銆銆閫氳繃榪欑鏂規(guī)硶錛宔xpect鍙互鐢ㄦ潵媯楠屽拰璋冭瘯浜や簰寮忚蔣浠訛紝榪欐伆鎭版槸IEEE鐨凱OSIX 1003.2(shell鍜屽伐鍏?鐨勪竴鑷存ф楠屾墍瑕佹眰鐨勩傝繘涓姝ョ殑璇存槑璇峰弬鑰僉ibes[6]銆?br /><br />7.[rogue 鍜屼吉緇堢]<br /><br />銆銆Unix鐢ㄦ埛鑲畾瀵歸氳繃綆¢亾鏉ュ拰鍏朵粬榪涚▼鐩歌仈緋葷殑鏂瑰紡闈炲父鐨勭啛鎮(zhèn)?姣斿璇達細(xì)涓涓猻hell綆¢亾)銆俥xpect浣跨敤浼粓绔潵鍜屾淳鐢熺殑榪涚▼鐩歌仈緋匯備吉緇堢鎻愪緵浜嗙粓绔涔変互渚跨▼搴忚涓轟粬浠鍦ㄥ拰鐪熸鐨勭粓绔繘琛孖/O鎿嶄綔銆?br /><br />銆銆姣斿璇達紝BSD鐨勬帰闄╂父鎴弐ogue鍦ㄧ敓妯″紡涓嬭繍琛岋紝騫跺亣瀹氬湪榪炴帴鐨勫彟涓绔槸涓涓彲瀵誨潃鐨勫瓧絎︾粓绔傚彲浠ョ敤expect緙栫▼錛屼嬌寰楅氳繃浣跨敤鐢ㄦ埛鐣岄潰鍙互鐜╄繖涓父鎴忋?br /><br />銆銆rogue榪欎釜鎺㈤櫓娓告垙棣栧厛鎻愪緵緇欎綘涓涓湁鍚勭鐗╃悊灞炴э紝姣斿璇村姏閲忓鹼紝鐨勮鑹層傚湪澶ч儴鍒嗘椂闂撮噷錛屽姏閲忓奸兘鏄?6錛屼絾鍦ㄥ嚑涔庢瘡20嬈¢噷闈㈠氨浼?xì)鏈変竴涓姏閲忓兼槸18銆傚緢澶氱殑rogue鐜╁閮界煡閬撹繖涓鐐癸紝浣嗘病鏈変漢鎰挎剰鍚姩紼嬪簭20嬈′互鑾峰緱涓涓ソ鐨勯厤緗備笅闈㈢殑榪欎釜鑴氭湰灝辮兘杈懼埌榪欎釜鐩殑銆?br /><br />銆銆銆銆for {} {1} {} {<br />銆銆銆銆銆銆銆銆spawn rogue<br />銆銆銆銆銆銆銆銆expect "*Str:18*"銆銆銆銆break銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆 "*Str:16*"銆銆銆銆<br />銆銆銆銆銆銆銆銆close<br />銆銆銆銆銆銆銆銆wait<br />銆銆銆銆}<br />銆銆銆銆interact<br /><br />銆銆絎竴琛屾槸涓猣or寰幆錛屽拰C璇█鐨勬帶鍒舵牸寮忓緢璞°俽ogue鍚姩鍚庯紝expect灝辨鏌ョ湅鍔涢噺鍊兼槸18榪樻槸16錛屽鏋滄槸16錛岀▼搴忓氨閫氳繃鎵цclose鍜寃ait鏉ラ鍑恒傝繖涓や釜鍛戒護鐨勪綔鐢ㄥ垎鍒槸鍏抽棴鍜屼吉緇堢鐨勮繛鎺ュ拰絳夊緟榪涚▼閫鍑恒俽ogue璇誨埌涓涓枃浠剁粨鏉熺灝辨帹鍑猴紝浠庤屽驚鐜戶緇繍琛岋紝浜х敓涓涓柊鐨剅ogue娓告垙鏉ユ鏌ャ?br /><br />銆銆褰撲竴涓間負(fù)18鐨勯厤緗壘鍒板悗錛屾帶鍒跺氨鎺ㄥ嚭寰幆騫惰煩鍒版渶鍚庝竴琛岃剼鏈俰nteract鎶婃帶鍒惰漿縐葷粰鐢ㄦ埛浠ヤ究浠栦滑鑳藉鐜╄繖涓壒瀹氱殑娓告垙銆?br /><br />銆銆鎯寵薄涓涓嬭繖涓剼鏈殑榪愯銆備綘鎵鑳界湡姝g湅鍒扮殑灝辨槸20鎴栬?0涓垵濮嬬殑閰嶇疆鍦ㄤ笉鍒頒竴縐掗挓鐨勬椂闂撮噷鎺犺繃灞忓箷錛屾渶鍚庣暀緇欎綘鐨勫氨鏄竴涓湁鐫寰堝ソ閰嶇疆鐨勬父鎴忋傚敮涓姣旇繖鏇村ソ鐨勬柟娉曞氨鏄嬌鐢ㄨ皟璇曞伐鍏鋒潵鐜╂父鎴忋?br /><br />銆銆鎴戜滑寰堟湁蹇呰璁よ瘑鍒拌繖鏍蜂竴鐐癸細(xì)rogue鏄竴涓嬌鐢ㄥ厜鏍囩殑鍥懼艦娓告垙銆俥xpect紼嬪簭鍛樺繀欏諱簡瑙e埌錛氬厜鏍囩殑榪愬姩騫朵笉涓瀹氫互涓縐嶇洿瑙傜殑鏂瑰紡鍦ㄥ睆騫曚笂浣撶幇銆傚垢榪愮殑鏄紝鍦ㄦ垜浠繖涓緥瀛愰噷錛岃繖涓嶆槸涓涓棶棰樸傚皢鏉ョ殑瀵筫xpect鐨勬敼榪涘彲鑳戒細(xì)鍖呮嫭涓涓唴宓岀殑鑳芥敮鎸佸瓧絎﹀浘褰㈠尯鍩熺殑緇堢妯℃嫙鍣ㄣ?br /><br />8.[ftp]<br /><br />銆銆鎴戜滑浣跨敤expect鍐欑涓涓剼鏈茍娌℃湁鎵撳嵃鍑?Hello,World"銆傚疄闄呬笂錛屽畠瀹炵幇浜嗕竴浜涙洿鏈夌敤鐨勫姛鑳姐傚畠鑳介氳繃闈炰氦浜掔殑鏂瑰紡鏉ヨ繍琛宖tp銆俧tp鏄敤鏉ュ湪鏀寔TCP/IP鐨勭綉緇滀笂榪涜鏂囦歡浼犺緭鐨勭▼搴忋傞櫎浜嗕竴浜涚畝鍗曠殑鍔熻兘錛屼竴鑸殑瀹炵幇閮借姹傜敤鎴風(fēng)殑鍙備笌銆?br /><br />銆銆涓嬮潰榪欎釜鑴氭湰浠庝竴涓富鏈轟笂浣跨敤鍖垮悕ftp鍙栦笅涓涓枃浠舵潵銆傚叾涓紝涓繪満鍚嶆槸絎竴涓弬鏁般傛枃浠跺悕鏄浜屼釜鍙傛暟銆?br /><br />銆銆銆銆銆銆銆銆spawn銆銆銆銆ftp銆銆銆銆[index $argv 1]<br />銆銆銆銆銆銆銆銆expect銆"*Name*"<br />銆銆銆銆銆銆銆銆send銆銆銆銆銆"anonymous "<br />銆銆銆銆銆銆銆銆expect銆"*Password:*"<br />銆銆銆銆銆銆銆銆send [exec whoami]<br />銆銆銆銆銆銆銆銆expect "*ok*ftp>*"<br />銆銆銆銆銆銆銆銆send "get [index $argv 2] "<br />銆銆銆銆銆銆銆銆expect "*ftp>*"<br /><br />銆銆涓婇潰榪欎釜紼嬪簭琚璁℃垚鍦ㄥ悗鍙拌繘琛宖tp銆傝櫧鐒朵粬浠湪搴曞眰浣跨敤鍜宔xpect綾諱技鐨勬満鍒訛紝浣嗕粬浠殑鍙紪紼嬭兘鍔涚暀寰呮敼榪涖傚洜涓篹xpect鎻愪緵浜嗛珮綰ц璦錛屼綘鍙互瀵瑰畠榪涜淇敼鏉ユ弧瓚充綘鐨勭壒瀹氶渶姹傘傛瘮濡傝錛屼綘鍙互鍔犱笂浠ヤ笅鍔熻兘錛?br /><br />銆銆銆銆錛氬潥鎸侊紞錛嶅鏋滆繛鎺ユ垨鑰呬紶杈撳け璐ワ紝浣犲氨鍙互姣忓垎閽熸垨鑰呮瘡灝忔椂錛岀敋<br />銆銆銆銆銆銆銆銆鑷沖彲浠ユ牴鎹叾浠栧洜绱狅紝姣斿璇寸敤鎴風(fēng)殑璐熻澆錛屾潵榪涜涓嶅畾鏈熺殑<br />銆銆銆銆銆銆銆銆閲嶈瘯銆?br />銆銆銆銆錛氶氱煡錛嶏紞浼犺緭鏃跺彲浠ラ氳繃mail,write鎴栬呭叾浠栫▼搴忔潵閫氱煡浣狅紝鐢氳嚦<br />銆銆銆銆銆銆銆銆鍙互閫氱煡澶辮觸銆?br />銆銆銆銆錛氬垵濮嬪寲錛嶆瘡涓涓敤鎴烽兘鍙互鏈夎嚜宸辯殑鐢ㄩ珮綰ц璦緙栧啓鐨勫垵濮嬪寲鏂囦歡<br />銆銆銆銆銆銆銆銆(姣斿璇達紝.ftprc)銆傝繖鍜孋 shell瀵?cshrc鐨勪嬌鐢ㄥ緢綾諱技銆?br /><br />銆銆expect榪樺彲浠ユ墽琛屽叾浠栫殑鏇村鏉傜殑浠誨姟銆傛瘮濡傝錛屼粬鍙互浣跨敤McGill澶у鐨凙rchie緋葷粺銆侫rchie鏄竴涓尶鍚嶇殑Telnet鏈嶅姟錛屽畠鎻愪緵瀵規(guī)弿榪癐nternet涓婂彲閫氳繃鍖垮悕ftp鑾峰彇鐨勬枃浠剁殑鏁版嵁搴撶殑璁塊棶銆傞氳繃浣跨敤榪欎釜鏈嶅姟錛岃剼鏈彲浠ヨ闂瓵rchie鏌愪釜鐗瑰畾鐨勬枃浠剁殑浣嶇疆錛屽茍鎶婂畠浠巉tp鏈嶅姟鍣ㄤ笂鍙栦笅鏉ャ傝繖涓姛鑳界殑瀹炵幇鍙姹傚湪涓婇潰閭d釜鑴氭湰涓姞涓婂嚑琛屽氨鍙互銆?br /><br />銆銆鐜板湪榪樻病鏈変粈涔堝凡鐭ョ殑鍚庡彴-ftp鑳藉瀹炵幇涓婇潰鐨勫嚑欏瑰姛鑳斤紝鑳戒笉瑕佽鎵鏈夌殑鍔熻兘浜嗐傚湪expect閲岄潰錛屽畠鐨勫疄鐜板嵈鏄潪甯哥殑綆鍗曘傗滃潥鎸佲濈殑瀹炵幇鍙姹傚湪expect鑴氭湰閲岄潰鍔犱笂涓涓驚鐜傗滈氱煡鈥濈殑瀹炵幇鍙鎵цmail鍜寃rite灝卞彲浠ヤ簡銆傗滃垵濮嬪寲鏂囦歡鈥濈殑瀹炵幇鍙互浣跨敤涓涓懡浠わ紝source .ftprc錛屽氨鍙互浜嗭紝鍦?ftprc閲岄潰鍙互鏈変換浣曠殑expect鍛戒護銆?br /><br />銆銆铏界劧榪欎簺鐗瑰緛鍙互閫氳繃鍦ㄥ凡鏈夌殑紼嬪簭閲岄潰鍔犱笂閽╁瓙鍑芥暟灝卞彲浠ワ紝浣嗚繖涔熶笉鑳戒繚璇佹瘡涓涓漢鐨勮姹傞兘鑳藉緱鍒版弧瓚熾傚敮涓鑳藉鎻愪緵淇濊瘉鐨勬柟娉曞氨鏄彁渚涗竴縐嶉氱敤鐨勮璦銆備竴涓緢濂界殑瑙e喅鏂規(guī)硶灝辨槸鎶奣cl鑷韓铻嶅叆鍒癴tp鍜屽叾浠栫殑紼嬪簭涓棿鍘匯傚疄闄呬笂錛岃繖鏈潵灝辨槸Tcl鐨勫垵琛楓傚湪榪樻病鏈夎繖鏍峰仛涔嬪墠錛宔xpect鎻愪緵浜嗕竴涓兘瀹炵幇澶ч儴鍒嗗姛鑳戒絾鍙堜笉闇瑕佷換浣曢噸鍐欑殑鏂規(guī)銆?br /><br />9.[fsck]<br /><br />銆銆fsck鏄彟澶栦竴涓己涔忚凍澶熺殑鐢ㄦ埛鎺ュ彛鐨勪緥瀛愩俧sck鍑犱箮娌℃湁鎻愪緵浠涔堟柟娉曟潵棰勫厛鐨勫洖絳斾竴浜涢棶棰樸備綘鑳藉仛鐨勫氨鏄粰鎵鏈夌殑闂閮藉洖絳?yes"鎴栬呴兘鍥炵瓟"no"銆?br /><br />銆銆涓嬮潰鐨勭▼搴忔灞曠ず浜嗕竴涓剼鏈浣曠殑浣跨殑鑷姩鐨勫鏌愪簺闂鍥炵瓟"yes"錛岃屽鏌愪簺闂鍥炵瓟"no"銆備笅闈㈢殑榪欎釜鑴氭湰涓寮濮嬪厛媧劇敓fsck榪涚▼錛岀劧鍚庡鍏朵腑涓ょ綾誨瀷鐨勯棶棰樺洖絳?yes"錛岃屽鍏朵粬鐨勯棶棰樺洖絳?no"銆?br /><br />銆銆銆銆for {} {1} {} {<br />銆銆銆銆銆銆銆銆expect <br />銆銆銆銆銆銆銆銆銆銆銆銆eof銆銆銆銆銆銆銆銆break銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*UNREF FILE*CLEAR?"銆銆銆銆{send "r "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*BAD INODE*FIX?"銆銆銆銆{send "y "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*?"銆銆銆銆銆銆銆銆銆銆銆銆{send "n "}銆銆銆銆<br />銆銆銆銆}<br /><br />銆銆鍦ㄤ笅闈㈣繖涓増鏈噷闈紝涓や釜闂鐨勫洖絳旀槸涓嶅悓鐨勩傝屼笖錛屽鏋滆剼鏈亣鍒頒簡浠涔堝畠涓嶈兘鐞嗚В鐨勪笢瑗匡紝灝變細(xì)鎵цinteract鍛戒護鎶婃帶鍒朵氦緇欑敤鎴楓傜敤鎴風(fēng)殑鍑婚敭鐩存帴浜ょ粰fsck澶勭悊銆傚綋鎵ц瀹屽悗錛岀敤鎴峰彲浠ラ氳繃鎸?+"閿潵閫鍑烘垨鑰呮妸鎺у埗浜よ繕緇檈xpect銆傚鏋滄帶鍒舵槸浜よ繕緇欒剼鏈簡錛岃剼鏈氨浼?xì)鑷姩鐨勬帶鍒稑q涚▼鐨勫墿浣欓儴鍒嗙殑榪愯銆?br /><br />銆銆銆銆for {} {1} {}{<br />銆銆銆銆銆銆銆銆expect 銆銆銆銆銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆eof銆銆銆銆銆銆銆銆break銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*UNREF FILE*CLEAR?"銆銆銆銆{send "y "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*BAD INODE*FIX?"銆銆銆銆{send "y "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*?"銆銆銆銆銆銆銆銆銆銆銆銆{interact +}銆銆銆銆<br />銆銆銆銆}<br /><br />銆銆濡傛灉娌℃湁expect錛宖sck鍙湁鍦ㄧ壓鐗蹭竴瀹氬姛鑳界殑鎯呭喌涓嬫墠鍙互闈炰氦浜掑紡鐨勮繍琛屻俧sck鍑犱箮鏄笉鍙紪紼嬬殑錛屼絾瀹冨嵈鏄郴緇熺鐞嗙殑鏈閲嶈鐨勫伐鍏楓傝澶氬埆鐨勫伐鍏風(fēng)殑鐢ㄦ埛鎺ュ彛涔熶竴鏍風(fēng)殑涓嶈凍銆傚疄闄呬笂錛屾鏄叾涓殑涓浜涚▼搴忕殑涓嶈凍瀵艱嚧浜唀xpect鐨勮癁鐢熴?br /><br />10.[鎺у埗澶氫釜榪涚▼錛氫綔涓氭帶鍒禲<br /><br /><br />銆 expect鐨勪綔涓氭帶鍒舵蹇電簿宸х殑閬垮厤浜嗛氬父鐨勫疄鐜板洶闅俱傚叾涓寘鎷簡涓や釜闂錛氫竴涓槸expect濡備綍澶勭悊緇忓吀鐨勪綔涓氭帶鍒訛紝鍗沖綋浣犲湪緇堢涓婃寜涓媈Z閿椂expect濡備綍澶勭悊錛涘彟澶栦竴涓氨鏄痚xpect鏄浣曞鐞嗗榪涚▼鐨勩?br /><br />銆 瀵圭涓涓棶棰樼殑澶勭悊鏄細(xì)蹇界暐瀹冦俥xpect瀵圭粡鍏哥殑浣滀笟鎺у埗涓鏃犳墍鐭ャ傛瘮濡傝錛屼綘媧劇敓浜嗕竴涓▼搴忓茍涓斿彂閫佷竴涓猑Z緇欏畠錛屽畠?yōu)兗?xì)鍋滀笅鏉?榪欐槸浼粓绔殑瀹岀編涔嬪)鑰宔xpect灝變細(xì)姘歌繙鐨勭瓑涓嬪幓銆?br /><br />銆 浣嗘槸錛屽疄闄呬笂錛岃繖鏍規(guī)湰灝變笉鎴愪竴涓棶棰樸傚浜庝竴涓猠xpect鑴氭湰錛屾病鏈夊繀瑕佸悜榪涚▼鍙戦乛Z銆備篃灝辨槸璇達紝娌℃湁蹇呰鍋滀笅涓涓繘紼嬫潵銆俥xpect浠呬粎鏄拷鐣ヤ簡涓涓繘紼嬶紝鑰屾妸鑷繁鐨勬敞鎰忓姏杞Щ鍒板叾浠栫殑鍦版柟銆傝繖灝辨槸expect鐨勪綔涓氭帶鍒舵濇兂錛岃繖涓濇兂涔熶竴鐩村伐浣滅殑寰堝ソ銆?br /><br />銆銆浠庣敤鎴風(fēng)殑瑙掑害鏉ョ湅鏄薄榪欐牱鐨勶細(xì)褰撲竴涓繘紼嬮氳繃spawn鍛戒護鍚姩鏃訛紝鍙橀噺spawn_id灝辮璁劇疆鎴愭煇榪涚▼鐨勬弿榪扮銆傜敱spawn_id鎻忚堪鐨勮繘紼嬪氨琚涓烘槸褰撳墠榪涚▼銆?榪欎釜鎻忚堪絎︽伆鎭板氨鏄吉緇堢鏂囦歡鐨勬弿榪扮錛岃櫧鐒剁敤鎴鋒妸瀹冨綋浣滀竴涓笉閫忔槑鐨勭墿浣?銆俥xpect鍜宻end鍛戒護浠呬粎鍜屽綋鍓嶈繘紼嬭繘琛屼氦浜掋傛墍浠ワ紝鍒囨崲涓涓綔涓氭墍闇瑕佸仛鐨勪粎浠呮槸鎶婅榪涚▼鐨勬弿榪扮璧嬬粰spawn_id銆?br /><br />銆銆榪欏効鏈変竴涓緥瀛愬悜鎴戜滑灞曠ず浜嗗浣曢氳繃浣滀笟鎺у埗鏉ヤ嬌涓や釜chess榪涚▼榪涜浜や簰銆傚湪媧劇敓瀹屼袱涓繘紼嬩箣鍚庯紝涓涓繘紼嬭閫氱煡鍏堝姩涓姝ャ傚湪涓嬮潰鐨勫驚鐜噷闈紝姣忎竴姝ュ姩浣滈兘閫佺粰鍙﹀涓涓繘紼嬨傚叾涓紝read_move鍜寃rite_move涓や釜榪囩▼鐣欑粰璇昏呮潵瀹炵幇銆?瀹為檯涓婏紝瀹冧滑鐨勫疄鐜伴潪甯哥殑瀹規(guī)槗錛屼絾鏄紝鐢變簬澶暱浜嗘墍浠ユ病鏈夊寘鍚湪榪欓噷)銆?br /><br />銆銆銆銆spawn chess銆銆銆銆銆銆銆銆銆銆銆銆;# start player one<br />銆銆銆銆set id1銆銆銆銆$spawn_id<br />銆銆銆銆expect "Chess "<br />銆銆銆銆send "first "銆銆銆銆銆銆銆銆銆銆銆銆;# force it to go first<br />銆銆銆銆read_move<br /><br />銆銆銆銆spawn chess銆銆銆銆銆銆銆銆銆銆銆銆;# start player two<br />銆銆銆銆set id2銆銆銆銆$spawn_id<br />銆銆銆銆expect "Chess "<br />銆銆銆銆<br />銆銆銆銆for {} {1} {}{<br />銆銆銆銆銆銆銆銆send_move<br />銆銆銆銆銆銆銆銆read_move<br />銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$id1<br />銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆send_move<br />銆銆銆銆銆銆銆銆read_move<br />銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$id2<br />銆銆銆銆}<br /><br />銆銆 鏈変竴浜涘簲鐢ㄧ▼搴忓拰chess紼嬪簭涓嶅お涓鏍鳳紝鍦╟hess紼嬪簭閲岋紝鐨勪袱涓帺瀹惰疆嫻佸姩銆備笅闈㈣繖涓剼鏈疄鐜頒簡涓涓啋鍏呯▼搴忋傚畠鑳藉鎺у埗涓涓粓绔互渚跨敤鎴瘋兘澶熺櫥褰曞拰姝e父鐨勫伐浣溿備絾鏄紝涓鏃︾郴緇熸彁紺鴻緭鍏ュ瘑鐮佹垨鑰呰緭鍏ョ敤鎴峰悕鐨勬椂鍊欙紝expect灝卞紑濮嬫妸鍑婚敭璁頒笅鏉ワ紝涓鐩村埌鐢ㄦ埛鎸変笅鍥炶濺閿傝繖鏈夋晥鐨勬敹闆嗕簡鐢ㄦ埛鐨勫瘑鐮佸拰鐢ㄦ埛鍚嶏紝榪橀伩鍏嶄簡鏅氱殑鍐掑厖紼嬪簭鐨?Incorrect password-tryagain"銆傝屼笖錛屽鏋滅敤鎴瘋繛鎺ュ埌鍙﹀涓涓富鏈轟笂錛岄偅浜涢澶栫殑鐧誨綍涔熶細(xì)琚褰曚笅鏉ャ?br /><br />銆銆銆銆spawn tip /dev/tty17銆銆銆銆銆銆銆銆;# open connection to<br />銆銆銆銆set tty $spawn_id銆銆銆銆銆銆銆銆;# tty to be spoofed<br /><br />銆銆銆銆spawn login<br />銆銆銆銆set login $spawn_id<br /><br />銆銆銆銆log_user 0<br />銆銆銆銆<br />銆銆銆銆for {} {1} {} {<br />銆銆銆銆銆銆銆銆set ready銆[select $tty $login]<br />銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆case $login in $ready {<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id $login<br />銆銆銆銆銆銆銆銆銆銆銆銆expect 銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆{"*password*" "*login*"}{<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 send_user $expect_match<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 set log 1<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 }銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆銆 "*"銆銆銆銆銆銆銆銆;# ignore everything else<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$tty;<br />銆銆銆銆銆銆銆銆銆銆銆銆send $expect_match<br />銆銆銆銆銆銆銆銆}<br />銆銆銆銆銆銆銆銆case $tty in $ready {<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$tty<br />銆銆銆銆銆銆銆銆銆銆銆銆expect "* *"{<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆if $log {<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 send_user $expect_match<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 set log 0<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆}<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 }銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆"*"銆{<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆send_user $expect_match<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 }<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id 銆銆銆銆$login;<br />銆銆銆銆銆銆銆銆銆銆銆銆send $expect_match<br />銆銆銆銆銆銆銆銆}<br />銆銆銆銆} <br />銆銆銆銆銆銆銆銆<br /><br />銆銆 榪欎釜鑴氭湰鏄繖鏍峰伐浣滅殑銆傞鍏堣繛鎺ュ埌涓涓猯ogin榪涚▼鍜岀粓绔傜己鐪佺殑錛屾墍鏈夌殑瀵硅瘽閮借褰曞埌鏍囧噯杈撳嚭涓?閫氳繃send_user)銆傚洜涓烘垜浠姝ゅ茍涓嶆劅鍏磋叮錛屾墍浠ワ紝鎴戜滑閫氳繃鍛戒護"log_user 0"鏉ョ姝㈣繖涓姛鑳姐?鏈夊緢澶氱殑鍛戒護鏉ユ帶鍒跺彲浠ョ湅瑙佹垨鑰呭彲浠ヨ褰曠殑涓滆タ)銆?br /><br />銆銆 鍦ㄥ驚鐜噷闈紝select絳夊緟緇堢鎴栬卨ogin榪涚▼涓婄殑鍔ㄤ綔錛屽茍涓旇繑鍥炰竴涓瓑寰呰緭鍏ョ殑spawn_id琛ㄣ傚鏋滃湪琛ㄩ噷闈㈡壘鍒頒簡涓涓肩殑璇濓紝case灝辨墽琛屼竴涓猘ction銆傛瘮濡傝錛屽鏋滃瓧絎︿覆"login"鍑虹幇鍦╨ogin榪涚▼鐨勮緭鍑轟腑錛屾彁紺哄氨浼?xì)琚褰曞埌鏍囧噯杈撳囖Z笂錛屽茍涓旀湁涓涓爣蹇楄璁劇疆浠ヤ究閫氱煡鑴氭湰寮濮嬭褰曠敤鎴風(fēng)殑鍑婚敭錛岀洿鑷崇敤鎴鋒寜涓嬩簡鍥炶濺閿傛棤璁烘敹鍒頒粈涔堬紝閮戒細(xì)鍥炴樉鍒扮粓绔笂錛屼竴涓浉搴旂殑action浼?xì)鍦ㄨ剼鏈殑缁堢閭d竴閮ㄥ垎鎵ц銆?br /><br />銆銆 榪欎簺渚嬪瓙鏄劇ず浜唀xpect鐨勪綔涓氭帶鍒舵柟寮忋傞氳繃鎶婅嚜宸辨彃鍏ュ埌瀵硅瘽閲岄潰錛宔xpect鍙互鍦ㄨ繘紼嬩箣闂村垱寤哄鏉傜殑I/O嫻併傚彲浠ュ垱寤哄鎵囧嚭錛屽鐢ㄦ墖鍏ョ殑錛屽姩鎬佺殑鏁版嵁鐩稿叧鐨勮繘紼嬪浘銆?br /><br />銆銆 鐩告瘮涔嬩笅錛宻hell浣垮緱瀹冭嚜宸變竴嬈′竴琛岀殑璇誨彇涓涓枃浠舵樉鐨勫緢鍥伴毦銆俿hell寮鴻揩鐢ㄦ埛鎸変笅鎺у埗閿?姣斿錛宆C,^Z)鍜屽叧閿瓧(姣斿fg鍜宐g)鏉ュ疄鐜頒綔涓氱殑鍒囨崲銆傝繖浜涢兘鏃犳硶浠庤剼鏈噷闈㈠埄鐢ㄣ傜浉浼肩殑鏄細(xì)浠ラ潪浜や簰鏂瑰紡榪愯鐨剆hell騫朵笉澶勭悊鈥滃巻鍙茶褰曗濆拰鍏朵粬涓浜涗粎浠呬負(fù)浜や簰寮忎嬌鐢ㄨ璁$殑鐗瑰緛銆傝繖涔熷嚭鐜頒簡鍜屽墠闈㈠摢涓猵asswd紼嬪簭鐨勭浉浼奸棶棰樸傜浉浼肩殑錛屼篃鏃犳硶緙栧啓鑳藉鍥炲綊鐨勬祴璇晄hell鐨勬煇浜涘姩浣滅殑shell鑴氭湰銆傜粨鏋滃鑷磗hell鐨勮繖浜涙柟闈㈡棤娉曡繘琛屽交搴曠殑嫻嬭瘯銆?br /><br />銆銆 濡傛灉浣跨敤expect鐨勮瘽錛屽彲浠ヤ嬌鐢ㄥ畠鐨勪氦浜掑紡鐨勪綔涓氭帶鍒舵潵椹卞姩shell銆備竴涓淳鐢熺殑shell璁や負(fù)瀹冩槸鍦ㄤ氦浜掔殑榪愯鐫錛屾墍浠ヤ細(xì)姝e父鐨勫鐞嗕綔涓氭帶鍒躲傚畠涓嶄粎鑳藉瑙e喅媯楠屽鐞嗕綔涓氭帶鍒剁殑shell鍜屽叾浠栦竴浜涚▼搴忕殑闂銆傝繕鑳藉鍦ㄥ繀瑕佺殑鏃跺欙紝璁﹕hell浠f浛expect鏉ュ鐞嗕綔涓氥傚彲浠ユ敮鎸佷嬌鐢╯hell椋庢牸鐨勪綔涓氭帶鍒舵潵鏀寔榪涚▼鐨勮繍琛屻傝繖鎰忓懗鐫錛氶鍏堟淳鐢熶竴涓猻hell錛岀劧鍚庢妸鍛戒護閫佺粰shell鏉ュ惎鍔ㄨ繘紼嬨傚鏋滆繘紼嬭鎸傝搗錛屾瘮濡傝錛屽彂閫佷簡涓涓猑Z錛岃繘紼嬪氨浼?xì)鍋滀笅鏉ュQ屽茍鎶婃帶鍒惰繑鍥炵粰shell銆傚浜巈xpect鑰岃█錛屽畠榪樺湪澶勭悊鍚屼竴涓繘紼?鍘熸潵閭d釜shell)銆?br /><br />銆銆expect鐨勮В鍐蟲柟娉曚笉浠呭叿鏈夊緢澶х殑鐏墊椿鎬э紝瀹冭繕閬垮厤浜嗛噸澶嶅凡緇忓瓨鍦ㄤ簬shell涓殑浣滀笟鎺у埗杞歡銆傞氳繃浣跨敤shell錛岀敱浜庝綘鍙互閫夋嫨浣犳兂媧劇敓鐨剆hell錛屾墍浠ヤ綘鍙互鏍規(guī)嵁闇瑕佽幏寰椾綔涓氭帶鍒舵潈銆傝屼笖錛屼竴鏃︿綘闇瑕?姣斿璇存楠岀殑鏃跺?錛屼綘灝卞彲浠ラ┍鍔ㄤ竴涓猻hell鏉ヨ榪欎釜shell浠ヤ負(fù)瀹冩鍦ㄤ氦浜掑紡鐨勮繍琛屻傝繖涓鐐瑰浜庡湪媯嫻嬪埌瀹冧滑鏄惁鍦ㄤ氦浜掑紡鐨勮繍琛屼箣鍚庝細(xì)鏀瑰彉杈撳嚭鐨勭紦鍐茬殑紼嬪簭鏉ヨ涔熸槸寰堥噸瑕佺殑銆?br /><br />銆銆涓轟簡榪涗竴姝ョ殑鎺у埗錛屽湪interact鎵ц鏈熼棿錛宔xpect鎶婃帶鍒剁粓绔?鏄惎鍔╡xpect鐨勯偅涓粓绔紝鑰屼笉鏄吉緇堢)璁劇疆鎴愮敓妯″紡浠ヤ究瀛楃鑳藉姝g‘鐨勪紶閫佺粰媧劇敓鐨勮繘紼嬨傚綋expect鍦ㄦ病鏈夋墽琛宨nteract鐨勬椂鍊欙紝緇堢澶勪簬鐔熸ā寮忎笅錛岃繖鏃跺欎綔涓氭帶鍒跺氨鍙互浣滅敤浜巈xpect鏈韓銆?br /><br />11.[浜や簰寮忕殑浣跨敤expect]<br /><br />銆銆鍦ㄥ墠闈紝鎴戜滑鎻愬埌鍙互閫氳繃interact鍛戒護鏉ヤ氦浜掑紡鐨勪嬌鐢ㄨ剼鏈傚熀鏈笂鏉ヨ錛宨nteract鍛戒護鎻愪緵浜嗗瀵硅瘽鐨勮嚜鐢辮闂紝浣嗘垜浠渶瑕佷竴浜涙洿綺劇粏鐨勬帶鍒躲傝繖涓鐐癸紝鎴戜滑涔熷彲浠ヤ嬌鐢╡xpect鏉ヨ揪鍒幫紝鍥犱負(fù)expect浠庢爣鍑嗚緭鍏ヤ腑璇誨彇杈撳叆鍜屼粠榪涚▼涓鍙栬緭鍏ヤ竴鏍風(fēng)殑綆鍗曘?浣嗘槸錛屾垜浠浣跨敤expect_user鍜宻end_user鏉ヨ繘琛屾爣鍑咺/O錛屽悓鏃朵笉鏀瑰彉spawn_id銆?br /><br />銆銆涓嬮潰鐨勮繖涓剼鏈湪涓瀹氱殑鏃墮棿鍐呬粠鏍囧噯杈撳叆閲岄潰璇誨彇涓琛屻傝繖涓剼鏈彨鍋歵imed_read錛屽彲浠ヤ粠csh閲岄潰璋冪敤錛屾瘮濡傝錛宻et answer="timed_read 30"灝辮兘璋冪敤瀹冦?br /><br />銆銆銆銆#!/usr/local/bin/expect -f<br />銆銆銆銆set timeout [index $argv 1]<br />銆銆銆銆expect_user "* "<br />銆銆銆銆send_user $expect_match<br /><br />銆銆 絎笁琛屼粠鐢ㄦ埛閭i噷鎺ユ敹浠諱綍浠ユ柊琛岀緇撴潫鐨勪換浣曚竴琛屻傛渶鍚庝竴琛屾妸瀹冭繑鍥炵粰鏍囧噯杈撳嚭銆傚鏋滃湪鐗瑰畾鐨勬椂闂村唴娌℃湁寰楀埌浠諱綍閿叆錛屽垯榪斿洖涔熶負(fù)絀恒?br /><br />銆銆 絎竴琛屾敮鎸?#!"鐨勭郴緇熺洿鎺ョ殑鍚姩鑴氭湰銆?濡傛灉鎶婅剼鏈殑灞炴у姞涓婂彲鎵ц灞炴у垯涓嶈鍦ㄨ剼鏈墠闈㈠姞涓奺xpect)銆傚綋鐒朵簡鑴氭湰鎬繪槸鍙互鏄懼紡鐨勭敤"expect scripot"鏉ュ惎鍔ㄣ傚湪-c鍚庨潰鐨勯夐」鍦ㄤ換浣曡剼鏈鍙ユ墽琛屽墠灝辮鎵ц銆傛瘮濡傝錛屼笉瑕佷慨鏀硅剼鏈湰韜紝浠呬粎鍦ㄥ懡浠よ涓婂姞涓?c "trace..."錛岃鑴氭湰鍙互鍔犱笂trace鍔熻兘浜?鐪佺暐鍙瘋〃紺簍race鐨勯夐」)銆?br /><br />銆銆 鍦ㄥ懡浠よ閲屽疄闄呬笂鍙互鍔犱笂澶氫釜鍛戒護錛屽彧瑕佷腑闂翠互";"鍒嗗紑灝卞彲浠ヤ簡銆傛瘮濡傝錛屼笅闈㈣繖涓懡浠よ錛?br /><br />銆銆銆銆expect -c "set timeout 20;spawn foo;expect"<br /><br />銆銆銆涓鏃︿綘鎶婅秴鏃舵椂闄愯緗ソ鑰屼笖紼嬪簭鍚姩涔嬪悗錛宔xpect灝卞紑濮嬬瓑寰呮枃浠剁粨鏉熺鎴栬?0縐掔殑瓚呮椂鏃墮檺銆?濡傛灉閬囧埌浜嗘枃浠剁粨鏉熺(EOF)錛岃紼嬪簭灝變細(xì)鍋滀笅鏉ワ紝鐒跺悗expect榪斿洖銆傚鏋滄槸閬囧埌浜嗚秴鏃剁殑鎯呭喌錛宔xpect灝辮繑鍥炪傚湪榪欎袱涓儏鍐甸噷闈紝閮介殣寮忕殑鏉姝諱簡褰撳墠榪涚▼銆?br /><br />銆銆 濡傛灉鎴戜滑涓嶄嬌鐢╡xpect鑰屾潵瀹炵幇浠ヤ笂涓や釜渚嬪瓙鐨勫姛鑳界殑璇濓紝鎴戜滑榪樻槸鍙互瀛︿範(fàn)鍒板緢澶氱殑涓滆タ鐨勩傚湪榪欎袱涓儏鍐甸噷闈紝閫氬父鐨勮В鍐蟲柟妗堥兘鏄痜ork鍙︿竴涓潯鐪犵殑瀛愯繘紼嬪茍涓旂敤signal閫氱煡鍘熸潵鐨剆hell銆傚鏋滆繖涓繃紼嬫垨鑰呰鍏堝彂鐢熺殑璇濓紝shell灝變細(xì)鏉鍙擱偅涓潯鐪犵殑榪涚▼銆?浼犻抪id鍜岄槻姝㈠悗鍙拌繘紼嬩駭鐢熷惎鍔ㄤ俊鎭槸涓涓闄や簡楂樻墜綰hell紼嬪簭鍛樹箣澶栫殑浜哄ご鐥涚殑浜嬫儏銆傛彁渚涗竴涓氱敤鐨勬柟娉曟潵璞¤繖鏍峰惎鍔ㄥ涓繘紼嬩細(xì)浣縮hell鑴氭湰闈炲父鐨勫鏉傘?鎵浠ュ嚑涔庡彲浠ヨ偗瀹氱殑鏄紝紼嬪簭鍛樹竴鑸兘鐢ㄤ竴涓笓闂–紼嬪簭鏉ヨВ鍐寵繖鏍蜂竴涓棶棰樸?br /><br />銆銆銆expect_user,send_user,send_error(鍚戞爣鍑嗛敊璇粓绔緭鍑?鍦ㄦ瘮杈冮暱鐨勶紝鐢ㄦ潵鎶婁粠榪涚▼鏉ョ殑澶嶆潅浜や簰緲昏瘧鎴愮畝鍗曚氦浜掔殑expect鑴氭湰閲岄潰浣跨敤鐨勬瘮杈冮綣併傚湪鍙傝僛7]閲岄潰錛孡ibs鎻忚堪鎬庢牱鐢ㄨ剼鏈潵瀹夊叏鐨勫寘瑁?wrap)adb錛屾庢牱鎶婄郴緇熺鐞嗗憳浠庨渶瑕佹帉鎻db鐨勭粏鑺傞噷闈㈣В鑴卞嚭鏉ワ紝鍚屾椂澶уぇ鐨勯檷浣庝簡鐢變簬閿欒鐨勫嚮閿屽鑷寸殑緋葷粺宕╂簝銆?br /><br />銆銆銆涓涓畝鍗曠殑渚嬪瓙鑳藉璁ゝtp鑷姩鐨勪粠涓涓浜虹殑甯愬彿閲岄潰鍙栨枃浠躲傚湪榪欑鎯呭喌閲岋紝瑕佹眰鎻愪緵瀵嗙爜銆?鍗充嬌鏂囦歡鐨勮闂槸鍙楅檺鐨勶紝浣犱篃搴旇閬垮厤鎶婂瘑鐮佷互鏄庢枃鐨勬柟寮忓瓨鍌ㄥ湪鏂囦歡閲岄潰銆傛妸瀵嗙爜浣滀負(fù)鑴氭湰榪愯鏃剁殑鍙傛暟涔熸槸涓嶅悎閫傜殑錛屽洜涓虹敤ps鍛戒護鑳界湅鍒板畠浠傛湁涓涓В鍐崇殑鏂規(guī)硶灝辨槸鍦ㄨ剼鏈繍琛岀殑寮濮嬭皟鐢╡xpect_user鏉ヨ鐢ㄦ埛杈撳叆浠ュ悗鍙兘浣跨敤鐨勫瘑鐮併傝繖涓瘑鐮佸繀欏誨彧鑳借榪欎釜鑴氭湰鐭ラ亾錛屽嵆浣夸綘鏄瘡涓皬鏃墮兘瑕侀噸璇昮tp銆?br /><br />銆銆銆鍗充嬌淇℃伅鏄珛鍗寵緭鍏ヨ繘鍘葷殑錛岃繖涓妧宸т篃鏄潪甯告湁鐢ㄣ傛瘮濡傝錛屼綘鍙互鍐欎竴涓剼鏈紝鎶婁綘姣忎竴涓富鏈轟笂涓嶅悓鐨勫笎鍙蜂笂鐨勫瘑鐮侀兘鏀規(guī)帀錛屼笉綆′粬浠嬌鐢ㄧ殑鏄笉鏄悓涓涓瘑鐮佹暟鎹簱銆傚鏋滀綘瑕佹墜宸ヨ揪鍒拌繖鏍蜂竴涓姛鑳界殑璇濓紝浣犲繀欏籘elnet鍒版瘡涓涓富鏈轟笂錛屽茍涓旀墜宸ヨ緭鍏ユ柊鐨勫瘑鐮併傝屼嬌鐢╡xpect,浣犲彲浠ュ彧杈撳叆瀵嗙爜涓嬈¤岃鑴氭湰鏉ュ仛鍏跺畠鐨勪簨鎯呫?br /><br />銆銆銆expect_user鍜宨nteract涔熷彲浠ュ湪涓涓剼鏈噷闈㈡販鍚堢殑浣跨敤銆傝冭檻涓涓嬪湪璋冭瘯涓涓▼搴忕殑寰幆鏃訛紝緇忚繃濂藉姝ヤ箣鍚庢墠澶辮觸鐨勬儏鍐點備竴涓猠xpect鑴氭湰鍙互椹卞姩鍝釜璋冭瘯鍣紝璁劇疆濂芥柇鐐癸紝鎵ц璇ョ▼搴忓驚鐜殑鑻ュ共姝ワ紝鐒跺悗灝嗘帶鍒惰繑鍥炵粰閿洏銆傚畠涔熷彲浠ュ湪榪斿洖鎺у埗涔嬪墠錛屽湪寰幆浣撳拰鏉′歡嫻嬭瘯涔嬮棿鏉ュ洖鐨勫垏鎹€?br /><br />6.[passwd鍜屼竴鑷存ф鏌<br /><br />銆銆鍦ㄥ墠闈紝鎴戜滑鎻愬埌passwd紼嬪簭鍦ㄧ己涔忕敤鎴蜂氦浜掔殑鎯呭喌涓嬶紝涓嶈兘榪愯錛宲asswd<br />浼?xì)蹇界暐I/O閲嶅畾鍚戯紝涔熶笉鑳藉祵鍏ュ埌綆¢亾閲岃竟浠ヤ究鑳戒粠鍒殑紼嬪簭鎴栬呮枃浠墮噷璇誨彇杈?br />鍏ャ傝繖涓▼搴忓潥鎸佽姹傜湡姝g殑涓庣敤鎴瘋繘琛屼氦浜掋傚洜涓哄畨鍏ㄧ殑鍘熷洜錛宲asswd琚璁?br />鎴愯繖鏍鳳紝浣嗙粨鏋滃鑷存病鏈夐潪浜や簰寮忕殑鏂規(guī)硶鏉ユ楠宲asswd銆傝繖鏍蜂竴涓緋葷粺瀹夊叏<br />鑷沖叧閲嶈鐨勭▼搴忕珶鐒舵病鏈夊姙娉曡繘琛屽彲闈犵殑媯楠岋紝鐪熷疄鍏鋒湁璁藉埡鎰忓懗銆?br /><br />銆銆passwd浠ヤ竴涓敤鎴峰悕浣滀負(fù)鍙傛暟錛屼氦浜掑紡鐨勬彁紺鴻緭鍏ュ瘑鐮併備笅闈㈢殑expect鑴?br />鏈互鐢ㄦ埛鍚嶅拰瀵嗙爜浣滀負(fù)鍙傛暟鑰岄潪浜や簰寮忕殑榪愯銆?br /><br />銆銆銆銆spawn oasswd [index $argv 1]<br />銆銆銆銆set password [index $argv 2]<br />銆銆銆銆expect "*password:"<br />銆銆銆銆send "$password "<br />銆銆銆銆expect "*password:"<br />銆銆銆銆send "$password "<br />銆銆銆銆expect eof<br /><br />銆銆絎竴琛屼互鐢ㄦ埛鍚嶅仛鍙傛暟鍚姩passwd紼嬪簭錛屼負(fù)鏂逛究璧瘋錛岀浜岃鎶婂瘑鐮佸瓨鍒?br />涓涓彉閲忛噷闈€傚拰shell綾諱技錛屽彉閲忕殑浣跨敤涔熶笉闇瑕佹彁鍓嶅0鏄庛?br /><br />銆銆鍦ㄧ涓夎錛宔xpect鎼滅儲妯″紡"*password:"錛屽叾涓?鍏佽鍖歸厤浠繪剰杈撳叆錛屾墍<br />浠ュ浜庨伩鍏嶆寚瀹氭墍鏈夌粏鑺傝岃█鏄潪甯告湁鏁堢殑銆?涓婇潰鐨勭▼搴忛噷娌℃湁action,鎵浠?br />expect媯嫻嬪埌璇ユā寮忓悗灝辯戶緇繍琛屻?br /><br />銆銆涓鏃︽帴鏀跺埌鎻愮ず鍚庯紝涓嬩竴琛屽氨灝辨妸瀵嗙爜閫佺粰褰撳墠榪涚▼銆傝〃鏄庡洖杞︺?瀹?br />闄呬笂錛屾墍鏈夌殑C鐨勫叧浜庡瓧絎︾殑綰﹀畾閮芥敮鎸?銆備笂闈㈢殑紼嬪簭涓湁涓や釜expect-send<br />搴忓垪錛屽洜涓簆asswd涓轟簡瀵硅緭鍏ヨ繘琛岀‘璁わ紝瑕佹眰榪涜涓ゆ杈撳叆銆傚湪闈炰氦浜掑紡紼嬪簭<br />閲岄潰錛岃繖鏄鏃犲繀瑕佺殑錛屼絾鐢變簬鍋囧畾passwd鏄湪鍜岀敤鎴瘋繘琛屼氦浜掞紝鎵浠ユ垜浠殑<br />鑴氭湰榪樻槸榪欐牱鍋氫簡銆?br /><br />銆銆鏈鍚庯紝"expect eof"榪欎竴琛岀殑浣滅敤鏄湪passwd鐨勮緭鍑轟腑鎼滅儲鏂囦歡緇撴潫絎︼紝<br />榪欎竴琛岃鍙ヨ繕灞曠ず浜嗗叧閿瓧鐨勫尮閰嶃傚彟澶栦竴涓叧閿瓧鍖歸厤灝辨槸timeout浜嗭紝<br />timeout琚敤浜庤〃紺烘墍鏈夊尮閰嶇殑澶辮觸鑰屽拰涓孌電壒瀹氶暱搴︾殑鏃墮棿鐩稿尮閰嶃傚湪榪欓噷<br />eof鏄潪甯告湁蹇呰鐨勶紝鍥犱負(fù)passwd琚璁℃垚浼?xì)妫鏌ュ畠鐨勬墍鏈塈/O鏄惁閮芥垚鍔熶簡錛?br />鍖呮嫭絎簩嬈¤緭鍏ュ瘑鐮佹椂浜х敓鐨勬渶鍚庝竴涓柊琛屻?br /><br />銆銆榪欎釜鑴氭湰宸茬粡瓚沖灞曠ずpasswd鍛戒護鐨勫熀鏈氦浜掓с傚彟澶栦竴涓洿鍔犲畬澶囩殑渚?br />瀛愬洖媯鏌ュ埆鐨勪竴浜涜涓恒傛瘮濡傝錛屼笅闈㈢殑榪欎釜鑴氭湰灝辮兘媯鏌asswd紼嬪簭鐨勫埆鐨?br />鍑犱釜鏂歸潰銆傛墍鏈夌殑鎻愮ず閮借繘琛屼簡媯鏌ャ傚鍨冨溇杈撳叆鐨勬鏌ヤ篃榪涜浜嗛傚綋鐨勫<br />鐞嗐傝繘紼嬫浜★紝瓚呬箮瀵誨父鐨勬參鍝嶅簲錛屾垨鑰呭埆鐨勯潪棰勬湡鐨勮涓洪兘榪涜浜嗗鐞嗐?br /><br /><br />銆銆銆銆spawn passwd [index $argv 1]<br />銆銆銆銆expect 銆銆銆銆eof銆銆銆銆銆銆銆銆銆銆銆銆{exit 1} 銆銆銆銆<br />銆銆銆銆銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*No such user.*"銆銆銆銆{exit 3}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*New password:"銆銆銆銆<br />銆銆銆銆send銆"[index $argv 2 "<br />銆銆銆銆expect 銆銆銆銆eof銆銆銆銆銆銆銆銆銆銆銆銆{exit 4}銆銆銆銆<br />銆銆銆銆銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Password too long*"銆銆銆銆{exit 5}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Password too short*"銆銆銆銆{exit 5}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Retype ew password:"<br />銆銆銆銆send "[index $argv 3] "<br />銆銆銆銆expect 銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Mismatch*"銆銆銆銆銆銆銆銆{exit 6}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*Password unchanged*"銆銆銆銆{exit 7}銆銆銆銆<br />銆銆銆銆銆銆銆銆" "銆銆銆銆銆銆銆銆<br />銆銆銆銆expect銆銆銆銆timeout銆銆銆銆銆銆銆銆銆銆銆銆{exit 2}銆銆銆銆<br />銆銆銆銆銆銆銆銆"*"銆銆銆銆銆銆銆銆銆銆銆銆{exit 6}銆銆銆銆<br />銆銆銆銆銆銆銆銆eof<br /><br />銆銆銆<br />銆銆榪欎釜鑴氭湰閫鍑烘椂鐢ㄤ竴涓暟瀛楁潵琛ㄧず鎵鍙戠敓鐨勬儏鍐點?琛ㄧずpasswd紼嬪簭姝e父<br />榪愯錛?琛ㄧず闈為鏈熺殑姝諱骸錛?琛ㄧず閿佸畾錛岀瓑絳夈備嬌鐢ㄦ暟瀛楁槸涓轟簡綆鍗曡搗瑙併?br />expect榪斿洖瀛楃涓插拰榪斿洖鏁板瓧鏄竴鏍風(fēng)畝鍗曠殑錛屽嵆浣挎槸媧劇敓紼嬪簭鑷韓浜х敓鐨勬秷鎭?br />涔熸槸涓鏍風(fēng)殑銆傚疄闄呬笂錛屽吀鍨嬬殑鍋氭硶鏄妸鏁翠釜浜や簰鐨勮繃紼嬪瓨鍒頒竴涓枃浠墮噷闈紝鍙?br />鏈夊綋紼嬪簭鐨勮繍琛屽拰棰勬湡涓鏍風(fēng)殑鏃跺欐墠鎶婅繖涓枃浠跺垹闄ゃ傚惁鍒欒繖涓猯og琚暀寰呬互<br />鍚庤繘涓姝ョ殑媯鏌ャ?br /><br />銆銆榪欎釜passwd媯鏌ヨ剼鏈璁捐鎴愮敱鍒殑鑴氭湰鏉ラ┍鍔ㄣ傝繖絎簩涓剼鏈粠涓涓枃<br />浠墮噷闈㈣鍙栧弬鏁板拰棰勬湡鐨勭粨鏋溿傚浜庢瘡涓涓緭鍏ュ弬鏁伴泦錛屽畠璋冪敤絎竴涓剼鏈茍<br />涓旀妸緇撴灉鍜岄鏈熺殑緇撴灉鐩告瘮杈冦?鍥犱負(fù)榪欎釜浠誨姟鏄潪浜や簰鐨勶紝涓涓櫘閫氱殑鑰佸紡<br />shell灝卞彲浠ョ敤鏉ヨВ閲婄浜屼釜鑴氭湰)銆傛瘮濡傝錛屼竴涓猵asswd鐨勬暟鎹枃浠跺緢鏈夊彲鑳?br />灝辮薄涓嬮潰涓鏍楓?br /><br />銆銆銆銆passwd.exp銆銆銆銆3銆銆銆銆bogus銆銆銆銆-銆銆銆銆銆銆銆銆-<br />銆銆銆銆passwd.exp銆銆銆銆0銆銆銆銆fred銆銆銆銆abledabl銆銆銆銆abledabl<br />銆銆銆銆passwd.exp銆銆銆銆5銆銆銆銆fred銆銆銆銆abcdefghijklm銆銆銆銆-<br />銆銆銆銆passwd.exp銆銆銆銆5銆銆銆銆fred銆銆銆銆abc銆銆銆銆銆銆銆銆-<br />銆銆銆銆passwd.exp銆銆銆銆6銆銆銆銆fred銆銆銆銆foobar銆銆銆銆銆銆銆銆bar銆銆銆銆<br />銆銆銆銆passwd.exp銆銆銆銆4銆銆銆銆fred銆銆銆銆^C銆銆銆銆銆銆銆銆-<br /><br />銆銆絎竴涓煙鐨勫悕瀛楁槸瑕佽榪愯鐨勫洖褰掕剼鏈傜浜屼釜鍩熸槸闇瑕佸拰緇撴灉鐩稿尮閰嶇殑<br />閫鍑哄箋傜涓変釜鍩熷氨鏄敤鎴峰悕銆傜鍥涗釜鍩熷拰絎簲涓煙灝辨槸鎻愮ず鏃跺簲璇ヨ緭鍏ョ殑瀵?br />鐮併傚噺鍙蜂粎浠呰〃紺洪偅閲屾湁涓涓煙錛岃繖涓煙鍏跺疄緇濆涓嶄細(xì)鐢ㄥ埌銆傚湪絎竴涓涓?br />錛宐ogus琛ㄧず鐢ㄦ埛鍚嶆槸闈炴硶鐨勶紝鍥犳passwd浼?xì)鍝嶅簲璇村Q氭病鏈夋鐢ㄦ埛銆俥xpect鍦?br />閫鍑烘椂浼?xì)杩斿?錛?鎭板ソ灝辨槸絎簩涓煙銆傚湪鏈鍚庝竴琛屼腑錛宆C灝辨槸琚垏瀹炵殑閫佺粰紼?br />搴忔潵楠岃瘉紼嬪簭鏄惁鎭板綋鐨勯鍑恒?br /><br />銆銆閫氳繃榪欑鏂規(guī)硶錛宔xpect鍙互鐢ㄦ潵媯楠屽拰璋冭瘯浜や簰寮忚蔣浠訛紝榪欐伆鎭版槸IEEE鐨?br />POSIX 1003.2(shell鍜屽伐鍏?鐨勪竴鑷存ф楠屾墍瑕佹眰鐨勩傝繘涓姝ョ殑璇存槑璇峰弬鑰?br />Libes[6]銆?br /><br />7.[rogue 鍜屼吉緇堢]<br /><br />銆銆Unix鐢ㄦ埛鑲畾瀵歸氳繃綆¢亾鏉ュ拰鍏朵粬榪涚▼鐩歌仈緋葷殑鏂瑰紡闈炲父鐨勭啛鎮(zhèn)?姣斿璇達細(xì)<br />涓涓猻hell綆¢亾)銆俥xpect浣跨敤浼粓绔潵鍜屾淳鐢熺殑榪涚▼鐩歌仈緋匯備吉緇堢鎻愪緵浜嗙粓<br />绔涔変互渚跨▼搴忚涓轟粬浠鍦ㄥ拰鐪熸鐨勭粓绔繘琛孖/O鎿嶄綔銆?br /><br />銆銆姣斿璇達紝BSD鐨勬帰闄╂父鎴弐ogue鍦ㄧ敓妯″紡涓嬭繍琛岋紝騫跺亣瀹氬湪榪炴帴鐨勫彟涓绔槸<br />涓涓彲瀵誨潃鐨勫瓧絎︾粓绔傚彲浠ョ敤expect緙栫▼錛屼嬌寰楅氳繃浣跨敤鐢ㄦ埛鐣岄潰鍙互鐜╄繖<br />涓父鎴忋?br /><br />銆銆rogue榪欎釜鎺㈤櫓娓告垙棣栧厛鎻愪緵緇欎綘涓涓湁鍚勭鐗╃悊灞炴э紝姣斿璇村姏閲忓鹼紝鐨?br />瑙掕壊銆傚湪澶ч儴鍒嗘椂闂撮噷錛屽姏閲忓奸兘鏄?6錛屼絾鍦ㄥ嚑涔庢瘡20嬈¢噷闈㈠氨浼?xì)鏈変竴涓姏閲?br />鍊兼槸18銆傚緢澶氱殑rogue鐜╁閮界煡閬撹繖涓鐐癸紝浣嗘病鏈変漢鎰挎剰鍚姩紼嬪簭20嬈′互鑾峰緱涓<br />涓ソ鐨勯厤緗備笅闈㈢殑榪欎釜鑴氭湰灝辮兘杈懼埌榪欎釜鐩殑銆?br /><br />銆銆銆銆for {} {1} {} {<br />銆銆銆銆銆銆銆銆spawn rogue<br />銆銆銆銆銆銆銆銆expect "*Str:18*"銆銆銆銆break銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆 "*Str:16*"銆銆銆銆<br />銆銆銆銆銆銆銆銆close<br />銆銆銆銆銆銆銆銆wait<br />銆銆銆銆}<br />銆銆銆銆interact<br /><br />銆銆絎竴琛屾槸涓猣or寰幆錛屽拰C璇█鐨勬帶鍒舵牸寮忓緢璞°俽ogue鍚姩鍚庯紝expect灝?br />媯鏌ョ湅鍔涢噺鍊兼槸18榪樻槸16錛屽鏋滄槸16錛岀▼搴忓氨閫氳繃鎵цclose鍜寃ait鏉ラ鍑恒?br />榪欎袱涓懡浠ょ殑浣滅敤鍒嗗埆鏄叧闂拰浼粓绔殑榪炴帴鍜岀瓑寰呰繘紼嬮鍑恒俽ogue璇誨埌涓<br />涓枃浠剁粨鏉熺灝辨帹鍑猴紝浠庤屽驚鐜戶緇繍琛岋紝浜х敓涓涓柊鐨剅ogue娓告垙鏉ユ鏌ャ?br /><br />銆銆褰撲竴涓間負(fù)18鐨勯厤緗壘鍒板悗錛屾帶鍒跺氨鎺ㄥ嚭寰幆騫惰煩鍒版渶鍚庝竴琛岃剼鏈?br />interact鎶婃帶鍒惰漿縐葷粰鐢ㄦ埛浠ヤ究浠栦滑鑳藉鐜╄繖涓壒瀹氱殑娓告垙銆?br /><br />銆銆鎯寵薄涓涓嬭繖涓剼鏈殑榪愯銆備綘鎵鑳界湡姝g湅鍒扮殑灝辨槸20鎴栬?0涓垵濮嬬殑閰嶇疆<br />鍦ㄤ笉鍒頒竴縐掗挓鐨勬椂闂撮噷鎺犺繃灞忓箷錛屾渶鍚庣暀緇欎綘鐨勫氨鏄竴涓湁鐫寰堝ソ閰嶇疆鐨勬父鎴?br />銆傚敮涓姣旇繖鏇村ソ鐨勬柟娉曞氨鏄嬌鐢ㄨ皟璇曞伐鍏鋒潵鐜╂父鎴忋?br /><br />銆銆鎴戜滑寰堟湁蹇呰璁よ瘑鍒拌繖鏍蜂竴鐐癸細(xì)rogue鏄竴涓嬌鐢ㄥ厜鏍囩殑鍥懼艦娓告垙銆?br />expect紼嬪簭鍛樺繀欏諱簡瑙e埌錛氬厜鏍囩殑榪愬姩騫朵笉涓瀹氫互涓縐嶇洿瑙傜殑鏂瑰紡鍦ㄥ睆騫曚笂浣?br />鐜般傚垢榪愮殑鏄紝鍦ㄦ垜浠繖涓緥瀛愰噷錛岃繖涓嶆槸涓涓棶棰樸傚皢鏉ョ殑瀵筫xpect鐨勬敼<br />榪涘彲鑳戒細(xì)鍖呮嫭涓涓唴宓岀殑鑳芥敮鎸佸瓧絎﹀浘褰㈠尯鍩熺殑緇堢妯℃嫙鍣ㄣ?br /><br />8.[ftp]<br /><br />銆銆鎴戜滑浣跨敤expect鍐欑涓涓剼鏈茍娌℃湁鎵撳嵃鍑?Hello,World"銆傚疄闄呬笂錛屽畠<br />瀹炵幇浜嗕竴浜涙洿鏈夌敤鐨勫姛鑳姐傚畠鑳介氳繃闈炰氦浜掔殑鏂瑰紡鏉ヨ繍琛宖tp銆俧tp鏄敤鏉ュ湪鏀?br />鎸乀CP/IP鐨勭綉緇滀笂榪涜鏂囦歡浼犺緭鐨勭▼搴忋傞櫎浜嗕竴浜涚畝鍗曠殑鍔熻兘錛屼竴鑸殑瀹炵幇閮?br />瑕佹眰鐢ㄦ埛鐨勫弬涓庛?br /><br />銆銆涓嬮潰榪欎釜鑴氭湰浠庝竴涓富鏈轟笂浣跨敤鍖垮悕ftp鍙栦笅涓涓枃浠舵潵銆傚叾涓紝涓繪満鍚?br />鏄涓涓弬鏁般傛枃浠跺悕鏄浜屼釜鍙傛暟銆?br /><br />銆銆銆銆銆銆銆銆spawn銆銆銆銆ftp銆銆銆銆[index $argv 1]<br />銆銆銆銆銆銆銆銆expect銆"*Name*"<br />銆銆銆銆銆銆銆銆send銆銆銆銆銆"anonymous "<br />銆銆銆銆銆銆銆銆expect銆"*Password:*"<br />銆銆銆銆銆銆銆銆send [exec whoami]<br />銆銆銆銆銆銆銆銆expect "*ok*ftp>*"<br />銆銆銆銆銆銆銆銆send "get [index $argv 2] "<br />銆銆銆銆銆銆銆銆expect "*ftp>*"<br /><br />銆銆涓婇潰榪欎釜紼嬪簭琚璁℃垚鍦ㄥ悗鍙拌繘琛宖tp銆傝櫧鐒朵粬浠湪搴曞眰浣跨敤鍜宔xpect綾?br />浼肩殑鏈哄埗錛屼絾浠栦滑鐨勫彲緙栫▼鑳藉姏鐣欏緟鏀硅繘銆傚洜涓篹xpect鎻愪緵浜嗛珮綰ц璦錛屼綘鍙?br />浠ュ瀹冭繘琛屼慨鏀規(guī)潵婊¤凍浣犵殑鐗瑰畾闇姹傘傛瘮濡傝錛屼綘鍙互鍔犱笂浠ヤ笅鍔熻兘錛?br /><br />銆銆銆銆錛氬潥鎸侊紞錛嶅鏋滆繛鎺ユ垨鑰呬紶杈撳け璐ワ紝浣犲氨鍙互姣忓垎閽熸垨鑰呮瘡灝忔椂錛岀敋<br />銆銆銆銆銆銆銆銆鑷沖彲浠ユ牴鎹叾浠栧洜绱狅紝姣斿璇寸敤鎴風(fēng)殑璐熻澆錛屾潵榪涜涓嶅畾鏈熺殑<br />銆銆銆銆銆銆銆銆閲嶈瘯銆?br />銆銆銆銆錛氶氱煡錛嶏紞浼犺緭鏃跺彲浠ラ氳繃mail,write鎴栬呭叾浠栫▼搴忔潵閫氱煡浣狅紝鐢氳嚦<br />銆銆銆銆銆銆銆銆鍙互閫氱煡澶辮觸銆?br />銆銆銆銆錛氬垵濮嬪寲錛嶆瘡涓涓敤鎴烽兘鍙互鏈夎嚜宸辯殑鐢ㄩ珮綰ц璦緙栧啓鐨勫垵濮嬪寲鏂囦歡<br />銆銆銆銆銆銆銆銆(姣斿璇達紝.ftprc)銆傝繖鍜孋 shell瀵?cshrc鐨勪嬌鐢ㄥ緢綾諱技銆?br /><br />銆銆expect榪樺彲浠ユ墽琛屽叾浠栫殑鏇村鏉傜殑浠誨姟銆傛瘮濡傝錛屼粬鍙互浣跨敤McGill澶у<br />鐨凙rchie緋葷粺銆侫rchie鏄竴涓尶鍚嶇殑Telnet鏈嶅姟錛屽畠鎻愪緵瀵規(guī)弿榪癐nternet涓婂彲<br />閫氳繃鍖垮悕ftp鑾峰彇鐨勬枃浠剁殑鏁版嵁搴撶殑璁塊棶銆傞氳繃浣跨敤榪欎釜鏈嶅姟錛岃剼鏈彲浠ヨ闂?br />Archie鏌愪釜鐗瑰畾鐨勬枃浠剁殑浣嶇疆錛屽茍鎶婂畠浠巉tp鏈嶅姟鍣ㄤ笂鍙栦笅鏉ャ傝繖涓姛鑳界殑瀹?br />鐜板彧瑕佹眰鍦ㄤ笂闈㈤偅涓剼鏈腑鍔犱笂鍑犺灝卞彲浠ャ?br /><br />銆銆鐜板湪榪樻病鏈変粈涔堝凡鐭ョ殑鍚庡彴-ftp鑳藉瀹炵幇涓婇潰鐨勫嚑欏瑰姛鑳斤紝鑳戒笉瑕佽鎵鏈?br />鐨勫姛鑳戒簡銆傚湪expect閲岄潰錛屽畠鐨勫疄鐜板嵈鏄潪甯哥殑綆鍗曘傗滃潥鎸佲濈殑瀹炵幇鍙姹?br />鍦╡xpect鑴氭湰閲岄潰鍔犱笂涓涓驚鐜傗滈氱煡鈥濈殑瀹炵幇鍙鎵цmail鍜寃rite灝卞彲浠?br />浜嗐傗滃垵濮嬪寲鏂囦歡鈥濈殑瀹炵幇鍙互浣跨敤涓涓懡浠わ紝source .ftprc錛屽氨鍙互浜嗭紝<br />鍦?ftprc閲岄潰鍙互鏈変換浣曠殑expect鍛戒護銆?br /><br />銆銆铏界劧榪欎簺鐗瑰緛鍙互閫氳繃鍦ㄥ凡鏈夌殑紼嬪簭閲岄潰鍔犱笂閽╁瓙鍑芥暟灝卞彲浠ワ紝浣嗚繖涔熶笉<br />鑳戒繚璇佹瘡涓涓漢鐨勮姹傞兘鑳藉緱鍒版弧瓚熾傚敮涓鑳藉鎻愪緵淇濊瘉鐨勬柟娉曞氨鏄彁渚涗竴縐?br />閫氱敤鐨勮璦銆備竴涓緢濂界殑瑙e喅鏂規(guī)硶灝辨槸鎶奣cl鑷韓铻嶅叆鍒癴tp鍜屽叾浠栫殑紼嬪簭涓棿<br />鍘匯傚疄闄呬笂錛岃繖鏈潵灝辨槸Tcl鐨勫垵琛楓傚湪榪樻病鏈夎繖鏍峰仛涔嬪墠錛宔xpect鎻愪緵浜嗕竴<br />涓兘瀹炵幇澶ч儴鍒嗗姛鑳戒絾鍙堜笉闇瑕佷換浣曢噸鍐欑殑鏂規(guī)銆?br /><br />9.[fsck]<br /><br />銆銆fsck鏄彟澶栦竴涓己涔忚凍澶熺殑鐢ㄦ埛鎺ュ彛鐨勪緥瀛愩俧sck鍑犱箮娌℃湁鎻愪緵浠涔堟柟娉?br />鏉ラ鍏堢殑鍥炵瓟涓浜涢棶棰樸備綘鑳藉仛鐨勫氨鏄粰鎵鏈夌殑闂閮藉洖絳?yes"鎴栬呴兘鍥炵瓟<br />"no"銆?br /><br />銆銆涓嬮潰鐨勭▼搴忔灞曠ず浜嗕竴涓剼鏈浣曠殑浣跨殑鑷姩鐨勫鏌愪簺闂鍥炵瓟"yes"錛?br />鑰屽鏌愪簺闂鍥炵瓟"no"銆備笅闈㈢殑榪欎釜鑴氭湰涓寮濮嬪厛媧劇敓fsck榪涚▼錛岀劧鍚庡鍏?br />涓袱縐嶇被鍨嬬殑闂鍥炵瓟"yes"錛岃屽鍏朵粬鐨勯棶棰樺洖絳?no"銆?br /><br />銆銆銆銆for {} {1} {} {<br />銆銆銆銆銆銆銆銆expect <br />銆銆銆銆銆銆銆銆銆銆銆銆eof銆銆銆銆銆銆銆銆break銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*UNREF FILE*CLEAR?"銆銆銆銆{send "r "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*BAD INODE*FIX?"銆銆銆銆{send "y "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*?"銆銆銆銆銆銆銆銆銆銆銆銆{send "n "}銆銆銆銆<br />銆銆銆銆}<br /><br />銆銆鍦ㄤ笅闈㈣繖涓増鏈噷闈紝涓や釜闂鐨勫洖絳旀槸涓嶅悓鐨勩傝屼笖錛屽鏋滆剼鏈亣鍒?br />浜嗕粈涔堝畠涓嶈兘鐞嗚В鐨勪笢瑗匡紝灝變細(xì)鎵цinteract鍛戒護鎶婃帶鍒朵氦緇欑敤鎴楓傜敤鎴風(fēng)殑<br />鍑婚敭鐩存帴浜ょ粰fsck澶勭悊銆傚綋鎵ц瀹屽悗錛岀敤鎴峰彲浠ラ氳繃鎸?+"閿潵閫鍑烘垨鑰呮妸<br />鎺у埗浜よ繕緇檈xpect銆傚鏋滄帶鍒舵槸浜よ繕緇欒剼鏈簡錛岃剼鏈氨浼?xì)鑷姩鐨勬帶鍒稑q涚▼鐨?br />鍓╀綑閮ㄥ垎鐨勮繍琛屻?br /><br />銆銆銆銆for {} {1} {}{<br />銆銆銆銆銆銆銆銆expect 銆銆銆銆銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆eof銆銆銆銆銆銆銆銆break銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*UNREF FILE*CLEAR?"銆銆銆銆{send "y "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*BAD INODE*FIX?"銆銆銆銆{send "y "}銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆"*?"銆銆銆銆銆銆銆銆銆銆銆銆{interact +}銆銆銆銆<br />銆銆銆銆}<br /><br />銆銆濡傛灉娌℃湁expect錛宖sck鍙湁鍦ㄧ壓鐗蹭竴瀹氬姛鑳界殑鎯呭喌涓嬫墠鍙互闈炰氦浜掑紡鐨?br />榪愯銆俧sck鍑犱箮鏄笉鍙紪紼嬬殑錛屼絾瀹冨嵈鏄郴緇熺鐞嗙殑鏈閲嶈鐨勫伐鍏楓傝澶氬埆<br />鐨勫伐鍏風(fēng)殑鐢ㄦ埛鎺ュ彛涔熶竴鏍風(fēng)殑涓嶈凍銆傚疄闄呬笂錛屾鏄叾涓殑涓浜涚▼搴忕殑涓嶈凍瀵艱嚧<br />浜唀xpect鐨勮癁鐢熴?br /><br />10.[鎺у埗澶氫釜榪涚▼錛氫綔涓氭帶鍒禲<br /><br /><br />銆 expect鐨勪綔涓氭帶鍒舵蹇電簿宸х殑閬垮厤浜嗛氬父鐨勫疄鐜板洶闅俱傚叾涓寘鎷簡涓や釜闂?br />棰橈細(xì)涓涓槸expect濡備綍澶勭悊緇忓吀鐨勪綔涓氭帶鍒訛紝鍗沖綋浣犲湪緇堢涓婃寜涓媈Z閿椂<br />expect濡備綍澶勭悊錛涘彟澶栦竴涓氨鏄痚xpect鏄浣曞鐞嗗榪涚▼鐨勩?br /><br />銆 瀵圭涓涓棶棰樼殑澶勭悊鏄細(xì)蹇界暐瀹冦俥xpect瀵圭粡鍏哥殑浣滀笟鎺у埗涓鏃犳墍鐭ャ傛瘮<br />濡傝錛屼綘媧劇敓浜嗕竴涓▼搴忓茍涓斿彂閫佷竴涓猑Z緇欏畠錛屽畠?yōu)兗?xì)鍋滀笅鏉?榪欐槸浼粓绔殑<br />瀹岀編涔嬪)鑰宔xpect灝變細(xì)姘歌繙鐨勭瓑涓嬪幓銆?br /><br />銆 浣嗘槸錛屽疄闄呬笂錛岃繖鏍規(guī)湰灝變笉鎴愪竴涓棶棰樸傚浜庝竴涓猠xpect鑴氭湰錛屾病鏈夊繀瑕?br />鍚戣繘紼嬪彂閫乛Z銆備篃灝辨槸璇達紝娌℃湁蹇呰鍋滀笅涓涓繘紼嬫潵銆俥xpect浠呬粎鏄拷鐣ヤ簡<br />涓涓繘紼嬶紝鑰屾妸鑷繁鐨勬敞鎰忓姏杞Щ鍒板叾浠栫殑鍦版柟銆傝繖灝辨槸expect鐨勪綔涓氭帶鍒?br />鎬濇兂錛岃繖涓濇兂涔熶竴鐩村伐浣滅殑寰堝ソ銆?br /><br />銆銆浠庣敤鎴風(fēng)殑瑙掑害鏉ョ湅鏄薄榪欐牱鐨勶細(xì)褰撲竴涓繘紼嬮氳繃spawn鍛戒護鍚姩鏃訛紝鍙橀噺<br />spawn_id灝辮璁劇疆鎴愭煇榪涚▼鐨勬弿榪扮銆傜敱spawn_id鎻忚堪鐨勮繘紼嬪氨琚涓烘槸褰?br />鍓嶈繘紼嬨?榪欎釜鎻忚堪絎︽伆鎭板氨鏄吉緇堢鏂囦歡鐨勬弿榪扮錛岃櫧鐒剁敤鎴鋒妸瀹冨綋浣滀竴涓?br />涓嶉忔槑鐨勭墿浣?銆俥xpect鍜宻end鍛戒護浠呬粎鍜屽綋鍓嶈繘紼嬭繘琛屼氦浜掋傛墍浠ワ紝鍒囨崲涓<br />涓綔涓氭墍闇瑕佸仛鐨勪粎浠呮槸鎶婅榪涚▼鐨勬弿榪扮璧嬬粰spawn_id銆?br /><br />銆銆榪欏効鏈変竴涓緥瀛愬悜鎴戜滑灞曠ず浜嗗浣曢氳繃浣滀笟鎺у埗鏉ヤ嬌涓や釜chess榪涚▼榪涜<br />浜や簰銆傚湪媧劇敓瀹屼袱涓繘紼嬩箣鍚庯紝涓涓繘紼嬭閫氱煡鍏堝姩涓姝ャ傚湪涓嬮潰鐨勫驚鐜噷<br />闈紝姣忎竴姝ュ姩浣滈兘閫佺粰鍙﹀涓涓繘紼嬨傚叾涓紝read_move鍜寃rite_move涓や釜榪?br />紼嬬暀緇欒鑰呮潵瀹炵幇銆?瀹為檯涓婏紝瀹冧滑鐨勫疄鐜伴潪甯哥殑瀹規(guī)槗錛屼絾鏄紝鐢變簬澶暱浜嗘墍<br />浠ユ病鏈夊寘鍚湪榪欓噷)銆?br /><br />銆銆銆銆spawn chess銆銆銆銆銆銆銆銆銆銆銆銆;# start player one<br />銆銆銆銆set id1銆銆銆銆$spawn_id<br />銆銆銆銆expect "Chess "<br />銆銆銆銆send "first "銆銆銆銆銆銆銆銆銆銆銆銆;# force it to go first<br />銆銆銆銆read_move<br /><br />銆銆銆銆spawn chess銆銆銆銆銆銆銆銆銆銆銆銆;# start player two<br />銆銆銆銆set id2銆銆銆銆$spawn_id<br />銆銆銆銆expect "Chess "<br />銆銆銆銆<br />銆銆銆銆for {} {1} {}{<br />銆銆銆銆銆銆銆銆send_move<br />銆銆銆銆銆銆銆銆read_move<br />銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$id1<br />銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆send_move<br />銆銆銆銆銆銆銆銆read_move<br />銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$id2<br />銆銆銆銆}<br /><br />銆銆 鏈変竴浜涘簲鐢ㄧ▼搴忓拰chess紼嬪簭涓嶅お涓鏍鳳紝鍦╟hess紼嬪簭閲岋紝鐨勪袱涓帺瀹?br />杞祦鍔ㄣ備笅闈㈣繖涓剼鏈疄鐜頒簡涓涓啋鍏呯▼搴忋傚畠鑳藉鎺у埗涓涓粓绔互渚跨敤鎴?br />鑳藉鐧誨綍鍜屾甯哥殑宸ヤ綔銆備絾鏄紝涓鏃︾郴緇熸彁紺鴻緭鍏ュ瘑鐮佹垨鑰呰緭鍏ョ敤鎴峰悕鐨勬椂<br />鍊欙紝expect灝卞紑濮嬫妸鍑婚敭璁頒笅鏉ワ紝涓鐩村埌鐢ㄦ埛鎸変笅鍥炶濺閿傝繖鏈夋晥鐨勬敹闆嗕簡<br />鐢ㄦ埛鐨勫瘑鐮佸拰鐢ㄦ埛鍚嶏紝榪橀伩鍏嶄簡鏅氱殑鍐掑厖紼嬪簭鐨?Incorrect password-try<br />again"銆傝屼笖錛屽鏋滅敤鎴瘋繛鎺ュ埌鍙﹀涓涓富鏈轟笂錛岄偅浜涢澶栫殑鐧誨綍涔熶細(xì)琚?br />璁板綍涓嬫潵銆?br /><br />銆銆銆銆spawn tip /dev/tty17銆銆銆銆銆銆銆銆;# open connection to<br />銆銆銆銆set tty $spawn_id銆銆銆銆銆銆銆銆;# tty to be spoofed<br /><br />銆銆銆銆spawn login<br />銆銆銆銆set login $spawn_id<br /><br />銆銆銆銆log_user 0<br />銆銆銆銆<br />銆銆銆銆for {} {1} {} {<br />銆銆銆銆銆銆銆銆set ready銆[select $tty $login]<br />銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆case $login in $ready {<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id $login<br />銆銆銆銆銆銆銆銆銆銆銆銆expect 銆銆銆銆銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆{"*password*" "*login*"}{<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 send_user $expect_match<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 set log 1<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 }銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆銆 "*"銆銆銆銆銆銆銆銆;# ignore everything else<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$tty;<br />銆銆銆銆銆銆銆銆銆銆銆銆send $expect_match<br />銆銆銆銆銆銆銆銆}<br />銆銆銆銆銆銆銆銆case $tty in $ready {<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id銆銆銆銆$tty<br />銆銆銆銆銆銆銆銆銆銆銆銆expect "* *"{<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆if $log {<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 send_user $expect_match<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 set log 0<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆}<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 }銆銆銆銆<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆"*"銆{<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆send_user $expect_match<br />銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆銆 }<br />銆銆銆銆銆銆銆銆銆銆銆銆set spawn_id 銆銆銆銆$login;<br />銆銆銆銆銆銆銆銆銆銆銆銆send $expect_match<br />銆銆銆銆銆銆銆銆}<br />銆銆銆銆} <br />銆銆銆銆銆銆銆銆<br /><br />銆銆 榪欎釜鑴氭湰鏄繖鏍峰伐浣滅殑銆傞鍏堣繛鎺ュ埌涓涓猯ogin榪涚▼鍜岀粓绔傜己鐪佺殑錛?br />鎵鏈夌殑瀵硅瘽閮借褰曞埌鏍囧噯杈撳嚭涓?閫氳繃send_user)銆傚洜涓烘垜浠姝ゅ茍涓嶆劅鍏磋叮錛?br />鎵浠ワ紝鎴戜滑閫氳繃鍛戒護"log_user 0"鏉ョ姝㈣繖涓姛鑳姐?鏈夊緢澶氱殑鍛戒護鏉ユ帶鍒?br />鍙互鐪嬭鎴栬呭彲浠ヨ褰曠殑涓滆タ)銆?br /><br />銆銆 鍦ㄥ驚鐜噷闈紝select絳夊緟緇堢鎴栬卨ogin榪涚▼涓婄殑鍔ㄤ綔錛屽茍涓旇繑鍥炰竴涓?br />絳夊緟杈撳叆鐨剆pawn_id琛ㄣ傚鏋滃湪琛ㄩ噷闈㈡壘鍒頒簡涓涓肩殑璇濓紝case灝辨墽琛屼竴涓?br />action銆傛瘮濡傝錛屽鏋滃瓧絎︿覆"login"鍑虹幇鍦╨ogin榪涚▼鐨勮緭鍑轟腑錛屾彁紺哄氨浼?br />琚褰曞埌鏍囧噯杈撳嚭涓婏紝騫朵笖鏈変竴涓爣蹇楄璁劇疆浠ヤ究閫氱煡鑴氭湰寮濮嬭褰曠敤鎴風(fēng)殑<br />鍑婚敭錛岀洿鑷崇敤鎴鋒寜涓嬩簡鍥炶濺閿傛棤璁烘敹鍒頒粈涔堬紝閮戒細(xì)鍥炴樉鍒扮粓绔笂錛屼竴涓浉<br />搴旂殑action浼?xì)鍦ㄨ剼鏈殑缁堢閭d竴閮ㄥ垎鎵ц銆?br /><br />銆銆 榪欎簺渚嬪瓙鏄劇ず浜唀xpect鐨勪綔涓氭帶鍒舵柟寮忋傞氳繃鎶婅嚜宸辨彃鍏ュ埌瀵硅瘽閲岄潰錛?br />expect鍙互鍦ㄨ繘紼嬩箣闂村垱寤哄鏉傜殑I/O嫻併傚彲浠ュ垱寤哄鎵囧嚭錛屽鐢ㄦ墖鍏ョ殑錛?br />鍔ㄦ佺殑鏁版嵁鐩稿叧鐨勮繘紼嬪浘銆?br /><br />銆銆 鐩告瘮涔嬩笅錛宻hell浣垮緱瀹冭嚜宸變竴嬈′竴琛岀殑璇誨彇涓涓枃浠舵樉鐨勫緢鍥伴毦銆?br />shell寮鴻揩鐢ㄦ埛鎸変笅鎺у埗閿?姣斿錛宆C,^Z)鍜屽叧閿瓧(姣斿fg鍜宐g)鏉ュ疄鐜頒綔涓氱殑<br />鍒囨崲銆傝繖浜涢兘鏃犳硶浠庤剼鏈噷闈㈠埄鐢ㄣ傜浉浼肩殑鏄細(xì)浠ラ潪浜や簰鏂瑰紡榪愯鐨剆hell騫?br />涓嶅鐞嗏滃巻鍙茶褰曗濆拰鍏朵粬涓浜涗粎浠呬負(fù)浜や簰寮忎嬌鐢ㄨ璁$殑鐗瑰緛銆傝繖涔熷嚭鐜頒簡鍜?br />鍓嶉潰鍝釜passwd紼嬪簭鐨勭浉浼奸棶棰樸傜浉浼肩殑錛屼篃鏃犳硶緙栧啓鑳藉鍥炲綊鐨勬祴璇晄hell<br />鐨勬煇浜涘姩浣滅殑shell鑴氭湰銆傜粨鏋滃鑷磗hell鐨勮繖浜涙柟闈㈡棤娉曡繘琛屽交搴曠殑嫻嬭瘯銆?br /><br />銆銆 濡傛灉浣跨敤expect鐨勮瘽錛屽彲浠ヤ嬌鐢ㄥ畠鐨勪氦浜掑紡鐨勪綔涓氭帶鍒舵潵椹卞姩shell銆備竴<br />涓淳鐢熺殑shell璁や負(fù)瀹冩槸鍦ㄤ氦浜掔殑榪愯鐫錛屾墍浠ヤ細(xì)姝e父鐨勫鐞嗕綔涓氭帶鍒躲傚畠涓?br />浠呰兘澶熻В鍐蟲楠屽鐞嗕綔涓氭帶鍒剁殑shell鍜屽叾浠栦竴浜涚▼搴忕殑闂銆傝繕鑳藉鍦ㄥ繀瑕?br />鐨勬椂鍊欙紝璁﹕hell浠f浛expect鏉ュ鐞嗕綔涓氥傚彲浠ユ敮鎸佷嬌鐢╯hell椋庢牸鐨勪綔涓氭帶<br />鍒舵潵鏀寔榪涚▼鐨勮繍琛屻傝繖鎰忓懗鐫錛氶鍏堟淳鐢熶竴涓猻hell錛岀劧鍚庢妸鍛戒護閫佺粰shell<br />鏉ュ惎鍔ㄨ繘紼嬨傚鏋滆繘紼嬭鎸傝搗錛屾瘮濡傝錛屽彂閫佷簡涓涓猑Z錛岃繘紼嬪氨浼?xì)鍋滀笅鏉ュQ屽茍<br />鎶婃帶鍒惰繑鍥炵粰shell銆傚浜巈xpect鑰岃█錛屽畠榪樺湪澶勭悊鍚屼竴涓繘紼?鍘熸潵閭d釜<br />shell)銆?br /><br />銆銆expect鐨勮В鍐蟲柟娉曚笉浠呭叿鏈夊緢澶х殑鐏墊椿鎬э紝瀹冭繕閬垮厤浜嗛噸澶嶅凡緇忓瓨鍦ㄤ簬<br />shell涓殑浣滀笟鎺у埗杞歡銆傞氳繃浣跨敤shell錛岀敱浜庝綘鍙互閫夋嫨浣犳兂媧劇敓鐨剆hell錛?br />鎵浠ヤ綘鍙互鏍規(guī)嵁闇瑕佽幏寰椾綔涓氭帶鍒舵潈銆傝屼笖錛屼竴鏃︿綘闇瑕?姣斿璇存楠岀殑鏃?br />鍊?錛屼綘灝卞彲浠ラ┍鍔ㄤ竴涓猻hell鏉ヨ榪欎釜shell浠ヤ負(fù)瀹冩鍦ㄤ氦浜掑紡鐨勮繍琛屻傝繖涓<br />鐐瑰浜庡湪媯嫻嬪埌瀹冧滑鏄惁鍦ㄤ氦浜掑紡鐨勮繍琛屼箣鍚庝細(xì)鏀瑰彉杈撳嚭鐨勭紦鍐茬殑紼嬪簭鏉ヨ涔?br />鏄緢閲嶈鐨勩?br /><br />銆銆涓轟簡榪涗竴姝ョ殑鎺у埗錛屽湪interact鎵ц鏈熼棿錛宔xpect鎶婃帶鍒剁粓绔?鏄惎鍔?br />expect鐨勯偅涓粓绔紝鑰屼笉鏄吉緇堢)璁劇疆鎴愮敓妯″紡浠ヤ究瀛楃鑳藉姝g‘鐨勪紶閫佺粰<br />媧劇敓鐨勮繘紼嬨傚綋expect鍦ㄦ病鏈夋墽琛宨nteract鐨勬椂鍊欙紝緇堢澶勪簬鐔熸ā寮忎笅錛岃繖鏃?br />鍊欎綔涓氭帶鍒跺氨鍙互浣滅敤浜巈xpect鏈韓銆?br /><br />11.[浜や簰寮忕殑浣跨敤expect]<br /><br />銆銆鍦ㄥ墠闈紝鎴戜滑鎻愬埌鍙互閫氳繃interact鍛戒護鏉ヤ氦浜掑紡鐨勪嬌鐢ㄨ剼鏈傚熀鏈笂<br />鏉ヨ錛宨nteract鍛戒護鎻愪緵浜嗗瀵硅瘽鐨勮嚜鐢辮闂紝浣嗘垜浠渶瑕佷竴浜涙洿綺劇粏鐨勬帶<br />鍒躲傝繖涓鐐癸紝鎴戜滑涔熷彲浠ヤ嬌鐢╡xpect鏉ヨ揪鍒幫紝鍥犱負(fù)expect浠庢爣鍑嗚緭鍏ヤ腑璇誨彇<br />杈撳叆鍜屼粠榪涚▼涓鍙栬緭鍏ヤ竴鏍風(fēng)殑綆鍗曘?浣嗘槸錛屾垜浠浣跨敤expect_user鍜?br />send_user鏉ヨ繘琛屾爣鍑咺/O錛屽悓鏃朵笉鏀瑰彉spawn_id銆?br /><br />銆銆涓嬮潰鐨勮繖涓剼鏈湪涓瀹氱殑鏃墮棿鍐呬粠鏍囧噯杈撳叆閲岄潰璇誨彇涓琛屻傝繖涓剼鏈彨<br />鍋歵imed_read錛屽彲浠ヤ粠csh閲岄潰璋冪敤錛屾瘮濡傝錛宻et answer="timed_read 30"<br />灝辮兘璋冪敤瀹冦?br /><br />銆銆銆銆#!/usr/local/bin/expect -f<br />銆銆銆銆set timeout [index $argv 1]<br />銆銆銆銆expect_user "* "<br />銆銆銆銆send_user $expect_match<br /><br />銆銆 絎笁琛屼粠鐢ㄦ埛閭i噷鎺ユ敹浠諱綍浠ユ柊琛岀緇撴潫鐨勪換浣曚竴琛屻傛渶鍚庝竴琛屾妸瀹?br />榪斿洖緇欐爣鍑嗚緭鍑恒傚鏋滃湪鐗瑰畾鐨勬椂闂村唴娌℃湁寰楀埌浠諱綍閿叆錛屽垯榪斿洖涔熶負(fù)絀恒?br /><br />銆銆 絎竴琛屾敮鎸?#!"鐨勭郴緇熺洿鎺ョ殑鍚姩鑴氭湰銆?濡傛灉鎶婅剼鏈殑灞炴у姞涓婂彲鎵?br />琛屽睘鎬у垯涓嶈鍦ㄨ剼鏈墠闈㈠姞涓奺xpect)銆傚綋鐒朵簡鑴氭湰鎬繪槸鍙互鏄懼紡鐨勭敤<br />"expect scripot"鏉ュ惎鍔ㄣ傚湪-c鍚庨潰鐨勯夐」鍦ㄤ換浣曡剼鏈鍙ユ墽琛屽墠灝辮鎵ц銆?br />姣斿璇達紝涓嶈淇敼鑴氭湰鏈韓錛屼粎浠呭湪鍛戒護琛屼笂鍔犱笂-c "trace..."錛岃鑴氭湰鍙?br />浠ュ姞涓妕race鍔熻兘浜?鐪佺暐鍙瘋〃紺簍race鐨勯夐」)銆?br /><br />銆銆 鍦ㄥ懡浠よ閲屽疄闄呬笂鍙互鍔犱笂澶氫釜鍛戒護錛屽彧瑕佷腑闂翠互";"鍒嗗紑灝卞彲浠ヤ簡銆?br />姣斿璇達紝涓嬮潰榪欎釜鍛戒護琛岋細(xì)<br /><br />銆銆銆銆expect -c "set timeout 20;spawn foo;expect"<br /><br />銆銆銆涓鏃︿綘鎶婅秴鏃舵椂闄愯緗ソ鑰屼笖紼嬪簭鍚姩涔嬪悗錛宔xpect灝卞紑濮嬬瓑寰呮枃浠?br />緇撴潫絎︽垨鑰?0縐掔殑瓚呮椂鏃墮檺銆?濡傛灉閬囧埌浜嗘枃浠剁粨鏉熺(EOF)錛岃紼嬪簭灝變細(xì)鍋?br />涓嬫潵錛岀劧鍚巈xpect榪斿洖銆傚鏋滄槸閬囧埌浜嗚秴鏃剁殑鎯呭喌錛宔xpect灝辮繑鍥炪傚湪榪欎袱<br />涓儏鍐甸噷闈紝閮介殣寮忕殑鏉姝諱簡褰撳墠榪涚▼銆?br /><br />銆銆 濡傛灉鎴戜滑涓嶄嬌鐢╡xpect鑰屾潵瀹炵幇浠ヤ笂涓や釜渚嬪瓙鐨勫姛鑳界殑璇濓紝鎴戜滑榪樻槸鍙?br />浠ュ涔?fàn)鍒板緢澶氱殑涓滆タ鐨勩傚湪榪欎袱涓儏鍐甸噷闈紝閫氬父鐨勮В鍐蟲柟妗堥兘鏄痜ork鍙︿竴涓?br />鐫$湢鐨勫瓙榪涚▼騫朵笖鐢╯ignal閫氱煡鍘熸潵鐨剆hell銆傚鏋滆繖涓繃紼嬫垨鑰呰鍏堝彂鐢熺殑<br />璇濓紝shell灝變細(xì)鏉鍙擱偅涓潯鐪犵殑榪涚▼銆?浼犻抪id鍜岄槻姝㈠悗鍙拌繘紼嬩駭鐢熷惎鍔ㄤ俊鎭?br />鏄竴涓闄や簡楂樻墜綰hell紼嬪簭鍛樹箣澶栫殑浜哄ご鐥涚殑浜嬫儏銆傛彁渚涗竴涓氱敤鐨勬柟娉?br />鏉ヨ薄榪欐牱鍚姩澶氫釜榪涚▼浼?xì)鋴蓅hell鑴氭湰闈炲父鐨勫鏉傘?鎵浠ュ嚑涔庡彲浠ヨ偗瀹氱殑鏄紝<br />紼嬪簭鍛樹竴鑸兘鐢ㄤ竴涓笓闂–紼嬪簭鏉ヨВ鍐寵繖鏍蜂竴涓棶棰樸?br /><br />銆銆銆expect_user,send_user,send_error(鍚戞爣鍑嗛敊璇粓绔緭鍑?鍦ㄦ瘮杈冮暱<br />鐨勶紝鐢ㄦ潵鎶婁粠榪涚▼鏉ョ殑澶嶆潅浜や簰緲昏瘧鎴愮畝鍗曚氦浜掔殑expect鑴氭湰閲岄潰浣跨敤鐨勬瘮杈?br />棰戠箒銆傚湪鍙傝僛7]閲岄潰錛孡ibs鎻忚堪鎬庢牱鐢ㄨ剼鏈潵瀹夊叏鐨勫寘瑁?wrap)adb錛屾庢牱<br />鎶婄郴緇熺鐞嗗憳浠庨渶瑕佹帉鎻db鐨勭粏鑺傞噷闈㈣В鑴卞嚭鏉ワ紝鍚屾椂澶уぇ鐨勯檷浣庝簡鐢變簬閿?br />璇殑鍑婚敭鑰屽鑷寸殑緋葷粺宕╂簝銆?br /><br />銆銆銆涓涓畝鍗曠殑渚嬪瓙鑳藉璁ゝtp鑷姩鐨勪粠涓涓浜虹殑甯愬彿閲岄潰鍙栨枃浠躲傚湪榪?br />縐嶆儏鍐甸噷錛岃姹傛彁渚涘瘑鐮併?鍗充嬌鏂囦歡鐨勮闂槸鍙楅檺鐨勶紝浣犱篃搴旇閬垮厤鎶婂瘑鐮?br />浠ユ槑鏂囩殑鏂瑰紡瀛樺偍鍦ㄦ枃浠墮噷闈€傛妸瀵嗙爜浣滀負(fù)鑴氭湰榪愯鏃剁殑鍙傛暟涔熸槸涓嶅悎閫傜殑錛?br />鍥犱負(fù)鐢╬s鍛戒護鑳界湅鍒板畠浠傛湁涓涓В鍐崇殑鏂規(guī)硶灝辨槸鍦ㄨ剼鏈繍琛岀殑寮濮嬭皟鐢?br />expect_user鏉ヨ鐢ㄦ埛杈撳叆浠ュ悗鍙兘浣跨敤鐨勫瘑鐮併傝繖涓瘑鐮佸繀欏誨彧鑳借榪欎釜鑴?br />鏈煡閬擄紝鍗充嬌浣犳槸姣忎釜灝忔椂閮借閲嶈瘯ftp銆?br /><br />銆銆銆鍗充嬌淇℃伅鏄珛鍗寵緭鍏ヨ繘鍘葷殑錛岃繖涓妧宸т篃鏄潪甯告湁鐢ㄣ傛瘮濡傝錛屼綘鍙?br />浠ュ啓涓涓剼鏈紝鎶婁綘姣忎竴涓富鏈轟笂涓嶅悓鐨勫笎鍙蜂笂鐨勫瘑鐮侀兘鏀規(guī)帀錛屼笉綆′粬浠嬌鐢?br />鐨勬槸涓嶆槸鍚屼竴涓瘑鐮佹暟鎹簱銆傚鏋滀綘瑕佹墜宸ヨ揪鍒拌繖鏍蜂竴涓姛鑳界殑璇濓紝浣犲繀欏?br />Telnet鍒版瘡涓涓富鏈轟笂錛屽茍涓旀墜宸ヨ緭鍏ユ柊鐨勫瘑鐮併傝屼嬌鐢╡xpect,浣犲彲浠ュ彧杈?br />鍏ュ瘑鐮佷竴嬈¤岃鑴氭湰鏉ュ仛鍏跺畠鐨勪簨鎯呫?br /><br />銆銆銆expect_user鍜宨nteract涔熷彲浠ュ湪涓涓剼鏈噷闈㈡販鍚堢殑浣跨敤銆傝冭檻涓涓?br />鍦ㄨ皟璇曚竴涓▼搴忕殑寰幆鏃訛紝緇忚繃濂藉姝ヤ箣鍚庢墠澶辮觸鐨勬儏鍐點備竴涓猠xpect鑴氭湰<br />鍙互椹卞姩鍝釜璋冭瘯鍣紝璁劇疆濂芥柇鐐癸紝鎵ц璇ョ▼搴忓驚鐜殑鑻ュ共姝ワ紝鐒跺悗灝嗘帶鍒?br />榪斿洖緇欓敭鐩樸傚畠涔熷彲浠ュ湪榪斿洖鎺у埗涔嬪墠錛屽湪寰幆浣撳拰鏉′歡嫻嬭瘯涔嬮棿鏉ュ洖鐨勫垏<br />鎹€?<img src ="http://m.tkk7.com/weidagang2046/aggbug/37412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-03-25 23:24 <a href="http://m.tkk7.com/weidagang2046/articles/37412.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏂囨湰鎻愬彇騫惰緭鍑哄埌鏂囦歡http://m.tkk7.com/weidagang2046/articles/37181.htmlweidagang2046weidagang2046Fri, 24 Mar 2006 04:23:00 GMThttp://m.tkk7.com/weidagang2046/articles/37181.htmlhttp://m.tkk7.com/weidagang2046/comments/37181.htmlhttp://m.tkk7.com/weidagang2046/articles/37181.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/37181.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/37181.html # !/usr/bin/perl聽-w

@ARGV > 0 || die " Usage:\nperl聽$0聽[file] " ;

open (INH , " <$ARGV[0] " )聽 || die " Can't聽open聽file聽$ARGV[0]\n " ;
open (OUTH , " >d:/log.txt " )聽 || die " Can't聽open聽file聽d:/log.txt\n " ;

while ( $line = < INH > )
{
聽聽聽聽
if ( $line =~ " GTS聽MS聽FSM " || $line =~ " GTS聽RPM聽PFC " || $line =~ " -> " )
聽聽聽聽{
聽聽聽聽聽聽聽聽
print 聽OUTH聽 $line ;
聽聽聽聽}
}

close (INH);
close (OUTH);

]]>
閫傚簲搴﹁綆楄剼鏈?/title><link>http://m.tkk7.com/weidagang2046/articles/37121.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Thu, 23 Mar 2006 16:06:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/37121.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/37121.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/37121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/37121.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/37121.html</trackback:ping><description><![CDATA[鏁版嵁鏂囦歡鐢變袱鍒楁暟瀛楃粍鎴愶紝鍒楅棿鐢辯┖鏍奸殧寮銆?br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">#</span><span style="COLOR: #008000">!/usr/bin/perl聽-w</span><span style="COLOR: #008000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800080">$arg_num</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">@ARGV</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800080">$arg_num</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">聽</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">die</span><span style="COLOR: #000000">聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">Usage:\nperl聽$0聽[file]\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">open</span><span style="COLOR: #000000">(FH</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">$ARGV</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">])聽</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">die</span><span style="COLOR: #000000">聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">Can't聽open聽file聽$ARGV[0]\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800080">@lines</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">FH</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">foreach</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">$line</span><span style="COLOR: #000000">聽(</span><span style="COLOR: #800080">@lines</span><span style="COLOR: #000000">)<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #0000ff">chomp</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$line</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #800080">@nums</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">split</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="FONT-WEIGHT: bold; COLOR: #000000">聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">$line</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #800080">$fitness</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">abs</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$nums</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000">]聽</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">$nums</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">])聽</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">聽(</span><span style="COLOR: #0000ff">abs</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$nums</span><span style="COLOR: #000000">[</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">])聽</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800000">1e-10</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #800080">$count</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$count</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">></span><span style="COLOR: #000000">聽</span><span style="COLOR: #800000">0</span><span style="COLOR: #000000">)<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #800080">$fitness</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">$count</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">聽</span><span style="COLOR: #800080">$fitness</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />聽聽聽聽</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">聽</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">0\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />}</span></div><img src ="http://m.tkk7.com/weidagang2046/aggbug/37121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-03-24 00:06 <a href="http://m.tkk7.com/weidagang2046/articles/37121.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鑾峰彇緋葷粺瀹氫箟鐨勬墍鏈変俊鍙峰悕http://m.tkk7.com/weidagang2046/articles/36916.htmlweidagang2046weidagang2046Wed, 22 Mar 2006 12:37:00 GMThttp://m.tkk7.com/weidagang2046/articles/36916.htmlhttp://m.tkk7.com/weidagang2046/comments/36916.htmlhttp://m.tkk7.com/weidagang2046/articles/36916.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/36916.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/36916.html use 聽Config;

defined $Config {sig_name}聽 || die " No聽sig?\n " ;

foreach $name 聽( split ( ' ' , $Config {sig_name}))
{
聽聽聽聽
print $name , " \n " ;
}


]]>
榪涘埗杞崲浠ュ強瀛楃涓茶漿鏁存暟http://m.tkk7.com/weidagang2046/articles/35887.htmlweidagang2046weidagang2046Fri, 17 Mar 2006 15:31:00 GMThttp://m.tkk7.com/weidagang2046/articles/35887.htmlhttp://m.tkk7.com/weidagang2046/comments/35887.htmlhttp://m.tkk7.com/weidagang2046/articles/35887.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/35887.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/35887.htmlAuthor: kbe@www.smth.org

Converting聽Between聽Octal聽and聽Hexadecimal

# -----------------------------
$number = hex ( $hexadecimal );聽聽聽聽聽聽聽聽聽 # 聽hexadecimal
$number = oct ( $octal );聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 # 聽octal
#-----------------------------

print " Gimme聽a聽number聽in聽decimal,聽octal,聽or聽hex:聽 " ;
$num = < STDIN > ;
chomp $num ;
exit unless defined $num ;
$num = oct ( $num )聽 if $num =~ /^ 0 / ;聽 # 聽does聽both聽oct聽and聽hex
printf " %d聽%x聽%o\n " , $num , $num , $num ;
# -----------------------------
print " Enter聽file聽permission聽in聽octal:聽 " ;
$permissions = < STDIN > ;
die " Exiting聽\n " unless defined $permissions ;
chomp $permissions ;
$permissions = oct ( $permissions );聽聽聽 # 聽permissions聽always聽octal
print " The聽decimal聽value聽is聽$permissions\n " ;
# -----------------------------


]]>
splithttp://m.tkk7.com/weidagang2046/articles/35848.htmlweidagang2046weidagang2046Fri, 17 Mar 2006 09:45:00 GMThttp://m.tkk7.com/weidagang2046/articles/35848.htmlhttp://m.tkk7.com/weidagang2046/comments/35848.htmlhttp://m.tkk7.com/weidagang2046/articles/35848.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/35848.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/35848.html # !/usr/bin/perl

@strs ;
push ( @strs , " |a聽|b|c| " );
push ( @strs , " a|b|c| " );
push ( @strs , " a|b|c " );

for ( $i = 0 ;聽 $i < @strs ;聽 $i ++ )
{
聽聽聽聽
if ( $strs [ $i ]聽 =~ /^\|/ )
聽聽聽聽{
聽聽聽聽聽聽聽聽
$strs [ $i ]聽 = substr ( $strs [ $i ] , 1 );
聽聽聽聽}
聽聽聽聽
@elems = split ( /\|/, $strs [ $i ]);
聽聽聽聽
print @elems + 0 , " \n " ;
聽聽聽聽
print join ( " , " , @elems );
聽聽聽聽
print " \n " ;
}


]]>
鑷姩FTP鑴氭湰http://m.tkk7.com/weidagang2046/articles/34754.htmlweidagang2046weidagang2046Fri, 10 Mar 2006 16:04:00 GMThttp://m.tkk7.com/weidagang2046/articles/34754.htmlhttp://m.tkk7.com/weidagang2046/comments/34754.htmlhttp://m.tkk7.com/weidagang2046/articles/34754.html#Feedback0http://m.tkk7.com/weidagang2046/comments/commentRss/34754.htmlhttp://m.tkk7.com/weidagang2046/services/trackbacks/34754.htmluse strict;
use Net::FTP;

my $ftp = Net::FTP->new($HOST) or die "Cannot connect to $HOST: $@";
$ftp->login($USER,$PASS) or die "Cannot login ", $ftp->message;
$ftp->ascii;
$ftp->cwd($PATH);

foreach my $file (@file_list) {
    
my $remote_file = $file.'.txt';
    
my $local_file = $LOCAL_PATH."/$remote_file";
    
if ($ftp->size($remote_file)) {
        
$ftp->get($remote_file,$local_file) or die "get failed ", $ftp->message;
    }
}

$ftp->quit;


]]>
鐢╣rep鍑芥暟鎻愬彇鏂囦歡涓鍚堣鍒欑殑琛?/title><link>http://m.tkk7.com/weidagang2046/articles/34407.html</link><dc:creator>weidagang2046</dc:creator><author>weidagang2046</author><pubDate>Thu, 09 Mar 2006 01:19:00 GMT</pubDate><guid>http://m.tkk7.com/weidagang2046/articles/34407.html</guid><wfw:comment>http://m.tkk7.com/weidagang2046/comments/34407.html</wfw:comment><comments>http://m.tkk7.com/weidagang2046/articles/34407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/weidagang2046/comments/commentRss/34407.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/weidagang2046/services/trackbacks/34407.html</trackback:ping><description><![CDATA[鎻愬彇浠D(鍏?瀛楃錛岄瀛楃涓烘暟瀛楋紝鍏朵綑涓変釜瀛楃涓烘暟瀛楁垨瀛楁瘝)錛宑hain鎴杛egion寮濮嬬殑琛岋細(xì)<BR><BR>1i95<BR>complexed with ede, mg, wo2, zn <BR>chain q [62030]  <BR>1e7z <BR>contains C-terminal His tag <BR>complexed with hg <BR>chain a [25318]  <BR>1khi  <BR>region a:103-173 [77409]  <BR>1fgu   <BR>the N-terminal two domains free <BR>region a:181-298 [25296]  <BR>region a:299-426 [25297]  <BR>region b:181-289 [25298]  <BR>region b:298-426 [25299]  <BR>1hnz  <BR>complexed with hyg, mg, zn <BR>chain q [25354]  <BR>1gd7  <BR>chain a [60441]  <BR>chain b [60442]  <BR>chain c [60443]  <BR>chain d [60444]<BR><BR> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #800080">$file</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #800080">$ARGV</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #800000">0</SPAN><SPAN style="COLOR: #000000">];<BR><BR></SPAN><SPAN style="COLOR: #0000ff">open</SPAN><SPAN style="COLOR: #000000">(FH</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #800080">$file</SPAN><SPAN style="COLOR: #000000">) </SPAN><SPAN style="COLOR: #000000">||</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">die</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">"</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">Can not open $file: $!\n</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><BR></SPAN><SPAN style="COLOR: #800080">@lines</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000"><</SPAN><SPAN style="COLOR: #000000">FH</SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000">;<BR><BR></SPAN><SPAN style="COLOR: #800080">@extract</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">grep</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">^\</SPAN><SPAN style="COLOR: #000000">d</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">w{</SPAN><SPAN style="COLOR: #800000">3</SPAN><SPAN style="COLOR: #000000">}$)</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">^</SPAN><SPAN style="COLOR: #000000">(chain</SPAN><SPAN style="COLOR: #000000">|</SPAN><SPAN style="COLOR: #000000">region))</SPAN><SPAN style="COLOR: #000000">/,</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #800080">@lines</SPAN><SPAN style="COLOR: #000000">);<BR><BR></SPAN><SPAN style="COLOR: #0000ff">print</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #800080">@extract</SPAN><SPAN style="COLOR: #000000">;</SPAN></DIV><img src ="http://m.tkk7.com/weidagang2046/aggbug/34407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/weidagang2046/" target="_blank">weidagang2046</a> 2006-03-09 09:19 <a href="http://m.tkk7.com/weidagang2046/articles/34407.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://bjgjjrxy.com" target="_blank">亚洲熟妇av午夜无码不卡</a>| <a href="http://499k.com" target="_blank">久久久久亚洲精品日久生情</a>| <a href="http://ystchem.com" target="_blank">亚洲第一成年免费网站</a>| <a href="http://mtsp2.com" target="_blank">成年人免费网站在线观看</a>| <a href="http://www-006688.com" target="_blank">亚洲精品午夜在线观看</a>| <a href="http://ttvv55.com" target="_blank">18级成人毛片免费观看</a>| <a href="http://345504.com" target="_blank">亚洲精品在线免费观看</a>| <a href="http://woniuzn.com" target="_blank">少妇太爽了在线观看免费视频</a>| <a href="http://vvihh.com" target="_blank">亚洲乱码精品久久久久..</a>| <a href="http://57798b.com" target="_blank">曰批全过程免费视频在线观看无码</a>| <a href="http://hbtelong.com" target="_blank">亚洲一区二区三区国产精品</a>| <a href="http://www-33758.com" target="_blank">特级毛片免费观看视频</a>| <a href="http://hkcdk.com" target="_blank">亚洲精品岛国片在线观看</a>| <a href="http://shrongshan.com" target="_blank">一级做a爰片久久毛片免费陪</a>| <a href="http://xian66.com" target="_blank">亚洲国产精品一区二区第四页</a>| <a href="http://haiwaizhuyun.com" target="_blank">青青免费在线视频</a>| <a href="http://www-456446.com" target="_blank">亚洲一区二区三区乱码A</a>| <a href="http://fsrongxing.com" target="_blank">成人免费无码H在线观看不卡</a>| <a href="http://maopiandao163.com" target="_blank">在线亚洲人成电影网站色www</a>| <a href="http://chandou8.com" target="_blank">免费无码又爽又刺激网站直播</a>| <a href="http://pchbgs.com" target="_blank">久久亚洲精品成人综合</a>| <a href="http://323799.com" target="_blank">在免费jizzjizz在线播</a>| <a href="http://aa7852.com" target="_blank">亚洲粉嫩美白在线</a>| <a href="http://yy6636.com" target="_blank">四虎免费永久在线播放</a>| <a href="http://zqsplc.com" target="_blank">国产免费一级高清淫曰本片</a>| <a href="http://zhaosifuwang.com" target="_blank">国产A在亚洲线播放</a>| <a href="http://moushengguigz.com" target="_blank">67pao强力打造高清免费</a>| <a href="http://yinyinai155.com" target="_blank">国产精品亚洲综合五月天</a>| <a href="http://wo93xyz.com" target="_blank">国产小视频在线观看免费</a>| <a href="http://miya77772.com" target="_blank">国产精品99爱免费视频</a>| <a href="http://www-6209.com" target="_blank">亚洲视频在线观看一区</a>| <a href="http://www-9970.com" target="_blank">成人毛片免费播放</a>| <a href="http://gedebai.com" target="_blank">一级做a爰片久久毛片免费看 </a>| <a href="http://wulegu.com" target="_blank">亚洲夂夂婷婷色拍WW47 </a>| <a href="http://cztbm.com" target="_blank">亚洲国产成人久久精品99</a>| <a href="http://an930.com" target="_blank">你是我的城池营垒免费看</a>| <a href="http://ttooyuyu.com" target="_blank">亚洲国产视频一区</a>| <a href="http://pumanpig.com" target="_blank">亚洲国产精品专区在线观看 </a>| <a href="http://nxjyyj.com" target="_blank">国产特黄一级一片免费</a>| <a href="http://youkabaitiao.com" target="_blank">亚洲精品视频在线免费</a>| <a href="http://kelingdq.com" target="_blank">国产v片免费播放</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>