私は 3 台のサーバー [ Linux ] を管理しており、これらのサーバーで 6 時間ごとにスクリプトをオンにする必要があります
そのため、それぞれにログインするのに少し時間がかかります..だから私はこのコードを作りました
import paramiko
import os
ZI1={"ip":"192.168.1.2","pass":"server-1"}
ZI2={"ip":"192.168.1.3","pass":"Server-2"}
ZI3={"ip":"192.168.1.4","pass":"server-3"}
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
SPAM=1
while SPAM==3:
ssh.connect(ZI1["ip"],username='root', password=ZI1["pass"])
stdin, stdout, stderr = ssh.exec_command('perl Register.pl')
print stdout.readlines()
SPAM+=1
ssh.connect(ZI2["ip"],username='root', password=ZI2["pass"])
stdin, stdout, stderr = ssh.exec_command('perl Register.pl')
print stdout.readlines()
SPAM+=1
ssh.connect(ZI2["ip"],username='root', password=ZI2["pass"])
stdin, stdout, stderr = ssh.exec_command('perl Register.pl')
print stdout.readlines()
ssh.close()
SPAM+=1
まあ、それもうまくいきません;(接続を閉じたりスクリプトを終了したりせずに、それぞれを入力してスクリプトを実行し、別のサーバーに移動したいので、助けてください。
編集後
今、私はそれを編集し、新しい問題が発生しました
私はこれを私のコードに追加します:
import paramiko
import os
ZI1={"ip":"192.168.1.2","pass":"server-1"}
ZI2={"ip":"192.168.1.3","pass":"Server-2"}
ZI3={"ip":"192.168.1.4","pass":"server-3"}
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
for F1 in ZI1:
ssh.connect(ZI1["ip"],username='root', password=ZI1["pass"])
stdin, stdout, stderr = ssh.exec_command('uname -a')
print stdout.readlines()
ssh.close()
for F2 in ZI2:
ssh.connect(ZI2["ip"],username='root', password=ZI2["pass"])
ssh.exec_command('ls -la')
print stdout.readlines()
ssh.close()
for F3 in ZI3:
ssh.connect(ZI2["ip"],username='root', password=ZI2["pass"])
ssh.exec_command('pwd')
print stdout.readlines()
ssh.close()
そして、それぞれに異なるコマンドを与えて、それが機能するかどうかを確認すると、非常に奇妙な出力が得られました
['Linux xxxx 2.6.18-028stab070.14 #1 SMP Thu Nov 18 16:04:02 MSK 2010 x
86_64 x86_64 x86_64 GNU/Linux\n']
['Linux xxxx 2.6.18-028stab070.14 #1 SMP Thu Nov 18 16:04:02 MSK 2010 x
86_64 x86_64 x86_64 GNU/Linux\n']
[]
[]
[]
[]
私は、最初のサーバーがコマンドuname -a
を実行し、2 番目のls -la
サーバーがコマンドを実行すると言いましたが、同じコマンドを一緒に与えます 3 番目のサーバーは何も実行しません