希望运行命令:ssh user@some_host "echo 'some_sql' |/usr/bin/mysql -u some_args"
我如何使用 Popen 执行此操作?
p1 = sp.Popen(["ssh", "user@some_host", "echo \"%s\"" % sql], stdout=sp.PIPE)
p2 = sp.Popen(["/usr/bin/mysql", "-u some_args"], stdin=p1.stdout, stdout=sp.PIPE)
返回“OSError: [Errno 2] No such file or directory”,因为它正在本地机器上寻找/usr/bin/mysql。
请您参考如下方法:
我根本不会使用 Popen;使用 paramiko相反
import paramiko
ssh_client = paramiko.SSHClient()
ssh_client.load_system_host_keys()
ssh_client.connect('www.somehost.com', username='user')
ssh_client.exec_command(' "echo 'some_sql' | /usr/bin/mysql -u some_args"')
