Paramiko改变远程机器的IP

时间:2012-06-04 13:07:23

标签: python paramiko

我必须更改运行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,但出于某种原因无法在代码中执行此操作。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

通过网络重新启动网络是一件危险的事情。这里发生的是,在命令/etc/init.d/net.eth0 restart中停止网络接口后,脚本会收到一条HANGUP信号,表明连接已关闭,并在启动网络接口之前停止。

要避免此问题,您可以使用nohup,“运行命令免受挂断”。