2012-08-13 75 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