我需要TCP连接(客户端 - 服务器模型)。我使用" sftp"将我的服务器程序放在远程机器上。现在我需要在远程机器上执行(侦听...)这个服务器程序,之后我可以在我的机器上运行客户端程序来建立连接。请建议一种通过ssh连接远程执行服务器的方法。我尝试过ssh.exec_command(" sudo python server.py",shell = True)并将此命令写入bash脚本并运行该bash脚本,但程序运行一段时间(毫秒)然后作为父代码移动到" ssh.exec_command(...)"旁边的行。 (或者你可以说,只要它执行ssh_client.close()行)终端运行服务器就会关闭。因此,运行client.py"连接拒绝错误"退回。我还尝试过很多其他的东西,例如在后台运行程序,使用' nohup'请不要建议我使用ssh完成所有任务。
答案 0 :(得分:0)
截至目前,我仍然无法找到合法的方式来完成任务,但我猜到了一个对我有用的黑客,肯定对任何人都有用。 所以,在父程序中,它就像
client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('python server_program.py')
client.close()
但是上面的代码无法继续运行server_program.py,因为只要执行了行client.close()
,父程序就会结束,子程序也会结束。
但是hack是将上面的代码放在一个新的python程序中说new.py并在time.sleep(A LARGE RANDOM NUMBER)
之前添加一行client.close()
并使用
process = subprocess.Popen(['python new.py'], stdout=PIPE, stderr=PIPE, shell=True)
因此父母会继续跑步,因此会做孩子。最后,当您完成工作后,可以使用process.kill()
终止程序。