我正在尝试使用 python 来 sftp 文件,并且代码在交互式 shell 中运行良好——甚至可以一次将其粘贴。
当我尝试导入文件(只是为了编译它)时,代码挂起,没有异常或明显错误。
我如何让代码编译,或者是否有人有通过其他方法完成 sftp 的工作代码?
此代码挂在 ssh.connect() 语句中:
""" 问题演示.py
从 paramiko 演示文件中删除。
此代码在 shell 中有效,但在我尝试导入时挂起!
"""
从时间导入睡眠
导入操作系统
进口帕拉米科
sOutputFilename = "redacted.htm" #-- 有效负载文件
主机名 = "redacted.com"
#### - 警告!嵌入式密码!尽快删除。
sUsername = "已编辑"
sPassword = "已编辑"
sTargetDir = "已编辑"
#-- 获取主机密钥,如果我们知道的话。
主机键类型 = 无
主机键 = 无
主机键 = {}
尝试:
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
除了 IOError:
尝试:
# 也试试 ~/ssh/,因为 windows 不能有一个名为 ~/.ssh/ 的文件夹
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
除了 IOError:
print '*** 无法打开主机密钥文件'
主机键 = {}
如果 host_keys.has_key(主机名):
hostkeytype = host_keys[主机名].keys()[0]
hostkey = host_keys[hostname][hostkeytype]
print '使用类型为 %s 的主机密钥' % hostkeytype
ssh = paramiko.Transport((主机名, 22))
ssh.connect(username=sUsername, password=sPassword, hostkey=hostkey)
sftp = paramiko.SFTPClient.from_transport(ssh)
sftp.chdir(目标目录)
sftp.put (sOutputFilename, sOutputFilename)
ssh.close()