2012-08-13 49 views
-1

當我在Unix中執行下面給出的腳本時,它工作正常。如何使用perl執行telnet登錄?

 #!/usr/bin/expect -f 
     spawn telnet 10.123.9.111 
     expect login {send username\r} 
     expect password {send password\r} 
     interact; 

當我執行在Windows相同的腳本,它顯示爲無法執行的/ usr/bin中/期望在我已經從perl package manager.

安裝expect example.pl是否有任何的方式來增加它的Windows上的等效動態鏈接庫?

或者,我如何在Windows上使用perl腳本進行telnet登錄?

+1

該腳本不是Perl,它是一個完全不同的語言和完全不同的項目。您從PPM安裝的Expect.pm與*不是同一件事。在http://expect.sourceforge.net/上有關於獲得Windows預期的說明 - 其中一個選項是ActiveState ActiveTcl(注意:*不是* ActivePerl)。 – hobbs 2012-08-13 06:44:17

+0

如何使usin perl腳本成爲可能?可能嗎 ? – 2012-08-13 07:00:17

+0

期待'!='Perl。他們是**兩種不同的語言**。 – 2012-08-13 07:01:42

回答

0

#!/ usr/bin/expect -f在Windows上不起作用。

你必須給出一個類似Windows的路徑來告訴預期的位置。

喜歡的東西(實際上取決於Windows中的路徑),

"C:\strawberry\perl/bin/expect" 

或者只是#!perl的,如果Perl是在你的環境路徑。

+0

@ Ahmed:謝謝你。但我嘗試過它(「C:\ Perl64 /站點/ lib /捆綁)早些時候再次相同的錯誤。 – 2012-08-13 06:25:29

+0

這可能有所幫助:http://www.perlmonks.org/?node_id=662535 – Ahmed 2012-08-15 22:13:48

1

使用Perl(不指望)從Windows遠程登錄可以使用Net :: Telnet完成。

+0

我也試過,但我無法消除此錯誤:模式匹配在filename.pl超時(指示密碼行) 使用Net :: Telnet; $ telnet = new Net :: Telnet(Timeout => 10, Errmode => ''''; $ telnet-> open('10 .100.1.111'); $ telnet-> waitfor('/ login:$/i'); $ telnet-> print('xbcnfhkrj'); $ telnet-> waitfor('/ password:$/i'); $ telnet-> print('dfdghrhrktit'); – 2012-08-13 11:41:55