免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4246 | 回复: 8
打印 上一主题 下一主题

利用Net::SSH2远程连接执行命令后的错误信息如何获取? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-03 18:47 |只看该作者 |倒序浏览
我使用net::ssh2模块,远程连接到主机上执行命令,如何获取出错信息。
如下:
$ssh2->connect("$HostIp") ;
my $chan = $ssh2->channel();
print $chan "su - aaa \n"  ;
print "Line: $_" while <$chan>  ;

aaa用户是不存在的,执行时,是报错的。
但是打印不出错误信息来。

如何处理。

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
2 [报告]
发表于 2014-10-03 20:07 |只看该作者
peso 发表于 2014-10-03 18:47
我使用net::ssh2模块,远程连接到主机上执行命令,如何获取出错信息。
如下:
$ssh2->connect("$HostIp") ...


$ssh2->debug(1);

论坛徽章:
0
3 [报告]
发表于 2014-10-03 22:49 |只看该作者
回复 2# shijiang1130


    开启调试模式,只是将单步的执行解析开,并不能获取chann通道中的STDERR输出。
象su - aaa  这条命令,本身不存在这个用户。
我想要捕获。su: user aaa  does not exist
这句话!

或是执行su 这条命令时,如果用户不存在时的返回码是多少。用以判断是否执行成功。

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
4 [报告]
发表于 2014-10-04 08:20 |只看该作者
peso 发表于 2014-10-03 22:49
回复 2# shijiang1130


你不能直接从channel中获得数据,要么是exec(),要么是shell().

论坛徽章:
0
5 [报告]
发表于 2014-10-04 09:52 |只看该作者
回复 4# shijiang1130

我使用的是shell() .

哪我该如何获取他的出错信息呢!
   

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
6 [报告]
发表于 2014-10-04 10:52 |只看该作者
本帖最后由 shijiang1130 于 2014-10-04 10:58 编辑
  1. -module(test_ssh).
  2. -compile(export_all).

  3. t()->
  4.         init(),
  5.         case ssh:connect("bbs.cu.net",22,[{inet,inet},silently_accept_hosts,{user,"root"},{password,"root"}]) of
  6.                 {ok,Ssh_connection_ref} -> io:format("Connected: ~p~n",[Ssh_connection_ref]),
  7.                         case ssh_connection:session_channel(Ssh_connection_ref,infinity) of
  8.                                 {ok,ChannelId} ->
  9.                                         ssh_connection:exec(Ssh_connection_ref,ChannelId,"su - test",infinity),
  10.                                         loop(Ssh_connection_ref)
  11.                         end;
  12.                 {error,Reason} -> io:format("Error: ~p~n",[Reason])
  13.         end.

  14. init()->
  15.         ssh:start().

  16. loop(Ssh_connection_ref)->
  17.         receive
  18.                 {ssh_cm,Ssh_connection_ref,Msg} ->
  19.                         case Msg of
  20.                                 {closed,_} -> io:format("~nclosed~n");
  21.                                                   _-> io:format("~p~n",[Msg]),loop(Ssh_connection_ref)
  22.                         end
  23.         end.
复制代码

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
7 [报告]
发表于 2014-10-04 10:52 |只看该作者
  1. 6> c(test_ssh).
  2. {ok,test_ssh}
  3. 7> test_ssh:t().
  4. Connected: <0.71.0>
  5. {data,0,1,<<"su: ">>}
  6. {data,0,1,<<"user test does not exist">>}
  7. {data,0,1,<<"\n">>}
  8. {eof,0}
  9. {exit_status,0,125}

  10. closed
  11. ok
  12. 8>
复制代码

论坛徽章:
27
水瓶座
日期:2014-08-22 21:06:34程序设计版块每日发帖之星
日期:2015-11-25 06:20:0015-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:47
8 [报告]
发表于 2014-10-04 10:56 |只看该作者
我有一个erlang版的

论坛徽章:
0
9 [报告]
发表于 2014-10-04 11:02 |只看该作者
回复 8# shijiang1130

erlang 版,没有用过!
我说语法怎么我都看不懂!

我用的是ActivePerl  5.16 .
使用Net::SSH2 0.53  模块!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP