【发布时间】:2014-06-18 16:26:05
【问题描述】:
我需要实现一个脚本,通过 SFTP 将文件传输到远程服务器。我已经使用 paramiko 库在 Python 中实现了脚本。我可以从家里的计算机上直接连接,没有问题,但在工作中我需要通过代理服务器进行连接,这就是我卡住的地方。
我发现了一篇有用的帖子 Python ssh using Tor proxy,我认为它很好地解释了实现,但我无法创建 ProxyCommand,因此我被卡住了。
我的(伪)代码:
import paramiko
cmd = 'ssh proxy.server nc %h %p'
proxy = paramiko.ProxyCommand(cmd)
try:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('remote.server', username='ABC', password='123', sock=proxy)
client.close()
except Exception as e:
print(str(e))
finally:
client.close()
代码在创建 ProxyCommand(第 3 行)时终止,原因是 FileNotFoundError 具有以下回溯:
Traceback (most recent call last):
File "C:\Users\zzz\Documents\SFTPtest.py", line 3, in <module>
proxy = paramiko.ProxyCommand(cmd)
File "C:\Python33\lib\site-packages\paramiko-1.14.0-py3.3.egg\paramiko\proxy.py", line 49, in __init__
self.process = Popen(self.cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
File "C:\Python33\lib\subprocess.py", line 820, in __init__
restore_signals, start_new_session)
File "C:\Python33\lib\subprocess.py", line 1112, in _execute_child
raise WindowsError(*e.args)
FileNotFoundError: [WinError 2] The system cannot find the file specified
谁能告诉我我可能做错了什么?实际命令是错误的还是我的配置中缺少某些内容?我在 Windows 7 上运行 Python 3.3.2。
【问题讨论】:
标签: python proxy sftp paramiko