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"
相关推荐
projava 2020-11-14
WanKaShing 2020-11-12
airfish000 2020-09-11
tryfind 2020-09-14
yegen00 2020-09-10
kkaazz 2020-09-03
风语者 2020-09-02
BraveWangDev 2020-08-19
lichuanlong00 2020-08-15
gsl 2020-08-15
pandaphinex 2020-08-09
yhuihon 2020-08-09
CheNorton 2020-08-02
xiangqiao 2020-07-28
hpujsj 2020-07-26
hpujsj 2020-07-26
sshong 2020-07-19
BraveWangDev 2020-07-19
annan 2020-07-18