我必须更改运行Gentoo的远程机器的IP。为此,我使用了一个看起来像
的代码try:
guest.connect("10.22.254.200", username='root',password='root')
except SSHException as detail:
session.flash = detail.message
else:
sftp = guest.open_sftp()
sftp.put('./scripts/change-ip', '/root/change-ip')
sftp.close()
guest.exec_command('chmod +x /root/change-ip')
time.sleep(5)
try:
stdin,stdout,stderr = guest.exec_command('/root/change-ip 10.22.254.200 &')
我的change-ip脚本看起来像
set -x
cp /etc/conf.d/net /etc/conf.d/net.bak
sed "s/10.22.254.200/$1/g" /etc/conf.d/net.bak > /etc/conf.d/net
/etc/init.d/net.eth0 restart
我能够直接ssh并成功执行脚本更改ip,但出于某种原因无法在代码中执行此操作。
非常感谢任何帮助
答案 0 :(得分:2)
通过网络重新启动网络是一件危险的事情。这里发生的是,在命令/etc/init.d/net.eth0 restart
中停止网络接口后,脚本会收到一条HANGUP
信号,表明连接已关闭,并在启动网络接口之前停止。
要避免此问题,您可以使用nohup
,“运行命令免受挂断”。