クライアントにsshしてクライアントからbashを実行することになっているpythonスクリプトがあります。テスト シナリオとして、接続に 1 台のマシンのみを使用していますが、目的は複数のクライアントに接続し、それらのマシンから bash スクリプトを実行することです。
私のPythonコード:
import os
import subprocess
import time
def ssh_login_execute():
if device['PWD'] != "":
run=('sshpass -p %s ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -t -p %s %s@%s' % (device['PWD'], device['PORT'], device['USER'], device['IP']))
else:
run=('ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -t -p %s %s@%s' % (device['PORT'], device['USER'], device['IP']))
cmd = ('cd %s' % (script_path))
run2=run.split()
run2.append(cmd)
t=subprocess.Popen(run2, stdout=subprocess.PIPE, stderr=open(os.devnull, 'w'))
print "I am in 192.168.1.97"
execute_tg()
return t
def execute_tg():
path = "/home/"
os.chdir(path)
print os.getcwd()
cmd=("sh my_script.sh")
t=subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if __name__ == "__main__":
device = {}
device['PORT']=22
device['PWD']= "abcd"
device['USER']= "root"
device['IP']= "192.168.1.97"
script_path= "/home/"
ssh_login_execute()
コード「python script.py」を実行すると、次のような出力が表示されます。
I am in 192.168.1.97
/home/
Output is sh: 0: Can't open my_script.sh
「my_script.sh」は192.168.1.97の/homeディレクトリにありますが。この問題を解決すると同時に、複数のクライアントに ssh して bash を実行できるように拡張するにはどうすればよいですか。