1

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

任何帮助将不胜感激

4

1 回答 1

2

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

为避免此问题,您可以使用nohup“运行不受挂断影响的命令”。

于 2012-06-04T13:32:31.773 回答