Python 在Paramiko中的Windows SSH服务器上执行命令(pg_dump)之前设置环境变量(PGPASSWORD)
我想通过SSH连接到Windows服务器为我的postgres数据库创建备份。我使用paramikopython库来实现这一点,但不幸的是,sql文件不包含任何数据(文件大小为0,文件无法删除,因为它们仍然在cmd中打开)。 因此,我怀疑我的命令还没有执行完。。。 这是我的职责:Python 在Paramiko中的Windows SSH服务器上执行命令(pg_dump)之前设置环境变量(PGPASSWORD),python,windows,postgresql,ssh,paramiko,Python,Windows,Postgresql,Ssh,Paramiko,我想通过SSH连接到Windows服务器为我的postgres数据库创建备份。我使用paramikopython库来实现这一点,但不幸的是,sql文件不包含任何数据(文件大小为0,文件无法删除,因为它们仍然在cmd中打开)。 因此,我怀疑我的命令还没有执行完。。。 这是我的职责: def ssh_server(server, username, password, pg_pass, ps_user, database): client = paramiko.SSHClient()
def ssh_server(server, username, password, pg_pass, ps_user, database):
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=server, username=username, password=password)
stdin_2, stdout_2, stderr_2 = client.exec_command("SET PGPASSWORD=secret_pw")
stdin, stdout, stderr = client.exec_command(
"pg_dump -U {} {} > kp_{}.sql\n".format(
ps_user, database, ts_str), get_pty=True)
client.close()
顺便说一句:在PuTTY中执行命令会产生所需的输出。
有人知道如何解决这个问题吗?谢谢你的帮助 基本上就是这个问题:
唯一的区别是,您在Windows上,
set
甚至包括变量值的训练空间。因此,请确保密码和&&
之间没有空格:
SET PGPASSWORD=secret_pw&&pw_dump