我正在使用Paramiko将ssh命令发送到远程Windows Server,它可以工作,但我需要首先设置一个环境变量,它为主命令设置密码。 因此,在Windows Server命令行中,我使用:
$ set ASPERA_SCP_PASS=passwordToUse
$ ascp -d --src-base=//DirectoryToSend //DirectoryToSend username@123.23.34.1:/
这将设置一个在passwordToUse
命令中使用的环境变量ascp
。
但我无法与Paramiko合作。运行以下脚本时,我得到exit status: 0
,但命令不在远程服务器上运行。
import sys
import paramiko
nbytes = 4096
hostname = '10.0.0.1'
port = 22
username = 'remoteUsername'
password = 'remotePassword'
command1 = 'set ASPERA_SCP_PASS={}'.format('passwordToUse')
command2 = 'ascp -d --src-base=//DirectoryToSend //DirectoryToSend username@123.23.34.1:/'
command3 = command1 + ", " + command2
client = paramiko.Transport((hostname, port))
client.connect(username=username, password=password)
stdout_data = []
stderr_data = []
session = client.open_channel(kind='session')
session.exec_command(command3)
while True:
if session.recv_ready():
stdout_data.append(session.recv(nbytes))
if session.recv_stderr_ready():
stderr_data.append(session.recv_stderr(nbytes))
if session.exit_status_ready():
break
print 'exit status: ', session.recv_exit_status()
print ''.join(stdout_data)
print ''.join(stderr_data)
session.close()
client.close()
答案 0 :(得分:1)
这样的事情?
command1 = 'set ASPERA_SCP_PASS={}'.format(os.environ['ASPERA_SCP_PASS'])