免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Flying168168
打印 上一主题 下一主题

请教如何用PERL执行SSH命令? [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
11 [报告]
发表于 2006-11-30 08:43 |只看该作者
不要把ls -lA redirect到ls.txt..
看看是不是真的有login 成功并执行ls -lA 得到正确结果....
看不到完整过程....只能猜了.....

1.有可能根本没有login成功....看一下F-secure的log看看是不是真的有登入....
2.有登入成功,但是指令没有执行,有可能是我说的控制码问题..NT的telnet server会回传一堆控制码像
[[0AH[0BH[[02C:[[0A\\
用telnet看不出来.....但是用程序就是会抓到...这时候程序也匹配不到提示符无法执行指令...

3. 你的module没有匹配到ssh的提示符就在等timeout了...

你的问题比较像 3...有空看一下Net::SSH::W32Perl 的source
看看他匹配的提示符跟你实际上的是不是差很多?

论坛徽章:
0
12 [报告]
发表于 2006-11-30 08:46 |只看该作者
原帖由 apile 于 2006-11-30 08:43 发表
不要把ls -lA redirect到ls.txt..
看看是不是真的有login 成功并执行ls -lA 得到正确结果....
看不到完整过程....只能猜了.....

1.有可能根本没有login成功....看一下F-secure的log看看是不是真的有登入.... ...

windows可以redirect

论坛徽章:
0
13 [报告]
发表于 2006-11-30 21:57 |只看该作者
谢谢各位兄弟.
查过日志了,看到了成功登陆,用户认证成功的 信息.

但是命令没有被执行.    单步调试, 命令返回的值都似乎是  undef.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
14 [报告]
发表于 2006-12-01 08:18 |只看该作者
把ls -lA > ls.txt
改成ls -lA...
如果 debug里面没有出现ls -lA的内容..表示prompt没有匹配到...
你要找找他匹配的prompt是什麽...

论坛徽章:
0
15 [报告]
发表于 2006-12-01 12:09 |只看该作者
[root@server1 root]# vi ssh.pl

#!/usr/bin/perl
use Net::SSH::Perl;
my $ssh=Net::SSH::Perl->new("1.1.1.1");
$ssh->login("root","yourpasswd");
my ($stdout,$stderr,$exit)=$ssh->cmd("rm -f /tmp/a");

[root@server1 root]# time ./ssh.pl

[color=Red]real    0m37.322s[/color]
user    0m36.870s
sys     0m0.020s
晕倒呀

[[i] 本帖最后由 jackylau 于 2006-12-1 12:11 编辑 [/i]]

论坛徽章:
0
16 [报告]
发表于 2006-12-01 14:44 |只看该作者
反反复复试验了好多次,
想想这应该算是PERL的BUG了.

不知道应该怎么解决才好.

论坛徽章:
0
17 [报告]
发表于 2006-12-01 16:26 |只看该作者
原帖由 orangetouch 于 2006-11-29 13:24 发表
我这里试验的是没有什么问题的,只是这个模块相当的慢,好几次我都以为死在那里了,但实际上还是在跑的。

不如你多等等?



老兄, 运行你的试验要配置什么样的环境才没问题呀?

论坛徽章:
0
18 [报告]
发表于 2006-12-04 09:40 |只看该作者
兄弟们, 换PYTHON好了.
PERL估计是搞不下去了.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
19 [报告]
发表于 2006-12-04 12:51 |只看该作者
原帖由 Flying168168 于 2006-12-4 09:40 发表

PERL估计是搞不下去了.

FUD

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
20 [报告]
发表于 2006-12-04 13:07 |只看该作者
澄清一下..这不是Perl的bug..这是Module的bug...

http://rt.cpan.org/Public/Dist/Display.html?Name=Net-SSH-Perl
看起来应该是Net::SSH::Perl的bug...
你可以report到上面这里去...
Net::SSH:W32是使用Net::SSH::Perl这个module...
一般要执行command..我都是安装ssh..然後用expect去做...
不过我不在windows下开发Perl...所以没碰过楼主的问题...
要改用Python也行..反正能解决问题就好..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP