![]() |
用 Telnet 對 兩台 FTP Server 進行 PASV Mode 傳檔案 去年也寫了一個沒有續傳,有給 purk, 但是我自己去年寫的不見了, 這個是昨天寫的我還加了續傳. 一個檔傳輸如果超過十分鐘下面的 Timeout 改大一點就可以了. #! c:\perl\bin\perl.exe -w print "Content-type: text/html \n\n"; use Net::Telnet (); $username="bx2aa"; $passwd="test"; $username2="bx2aa"; $passwd2="test"; $port=21; $port2=21; $secs=10; $host="192.168.1.2"; $host2="192.168.1.2"; $|=1; $srcpath="user"; $destpath="./"; $filename="USER.rar"; #CLIENT FTP 1 $t = new Net::Telnet (Host => $host,Port => $port,Timeout => $secs); $lines = $t->getline; print $lines."\n"; $lines = $t->print("USER $username"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; $lines = $t->print("PASS $passwd"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; $lines = $t->print("syst"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; $lines = $t->print("type a"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; $lines = $t->print("pwd"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; $lines = $t->print("type i"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; $lines = $t->print("pasv"); print $lines."\n"; $lines = $t->getline; print $pasv = $lines; $lines = $t->print("cwd $srcpath"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; #CLIENT FTP 2 $t2 = new Net::Telnet (Host => $host2,Port => $port2,Timeout => $secs); print $lines."\n"; $lines = $t2->getline; $lines = $t2->print("USER $username2"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("PASS $passwd2"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("syst"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("type a"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("pwd"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("pasv"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("cwd $destpath"); $lines = $t2->getline; print $lines."\n"; $lines = $t2->print("SIZE $filename"); print $lines."\n"; $lines = $t2->getline; $lines =~ s/.* (.*)$/\1/g; print $rest=$lines."\n"; $lines = $t2->print("type i"); print $lines."\n"; $pasv = $1 if $pasv=~ m/.*\((.*?)\).*/s; print $size=$lines."\n"; $lines = $t2->print("port $pasv"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; if ($rest ne "0") { $lines = $t2->print("rest $rest"); print $lines."\n"; $lines = $t2->getline; print $lines."\n"; } $lines = $t2->print("stor $filename"); print $lines."\n"; #CLIENT FTP 1 if ($rest ne "0") { $lines = $t->print("rest $rest"); print $lines."\n"; $lines = $t->getline; print $lines."\n"; } $lines = $t->print("retr $filename"); print $lines."\n"; #CLIENT FTP 2 $lines = $t2->getline(Timeout => "600"); print $lines."\n"; #CLIENT FTP 1 $lines = $t->getline(Timeout => "600"); print $lines."\n"; #CLIENT FTP 2 $lines = $t2->waitfor(Match => '/226/', Timeout => "600"); print $lines."\n"; #CLIENT FTP 1 $lines = $t->waitfor(Match => '/226/', Timeout => "600"); print $lines."\n"; $t->close; #CLIENT FTP 2 $t2->close; 也可以放到 Apache Web Server 上 Run 使用方法 放到 Apache 的 CGI 目錄內 [url]http://192.168.1.2/cgi-bin/Telnet.cgi[/url] 或是 C:\>perl Telnet.cgi |
| 所有時間均為 +8。現在的時間是 12:18 AM。 |
| XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。