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 に答える