NET::SSH 中 关于要对远程执行reboot时的坑爹教训

最近在利用ruby 通过ssh的方式来操作linux机子。遇到了一个问题,就是ruby在ssh端去执行reboot命令的时候,channel断掉了,导致执行exec! (’reboot‘) 之后 就卡死,无法继续执行。然后网上查了写些资料,遂采用了exec的方式,非阻塞模式,但是奇葩的时候,这个exec执行完虽然不卡,一下就执行过,但是问题来了,reboot命令没有被执行啊,设备没有被重启。。。。。 郁闷

对于reboot命令 没有被执行,这个问题具体原因 也没有深究,但我个人感觉是因为采用了非组塞模式后,管道无法达到 ???

 

最后处于无奈啊

经过多次尝试,发现了一个奇葩的解决方式  。。。

在执行完exec('reboot')之后,在执行一个exec!('xxxx')  xxx任何命令都可以。  竟然可以成功了 

 

 

  ssh = Net::SSH.start("200.200.165.139", username, {:password => password , :port => port}) 

 #puts uiui

 puts ssh

 puts ssh.exec!('date') 

         rest = ssh.exec('reboot -f')

  puts ssh.exec!('date')     #加上这句之后,一切都好了

 puts rest

 

 puts "hello end"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值