Я пытаюсь использовать python для sftp файла, и код отлично работает в интерактивной оболочке - даже вставляя его сразу.
Когда я пытаюсь импортировать файл (просто для его компиляции), код зависает без исключений и явных ошибок.
Как мне получить код для компиляции, или у кого-то есть рабочий код, который выполняет sftp другим методом?
Этот код висит прямо в операторе ssh.connect ():
""" ProblemDemo.py
Chopped down from the paramiko demo file.
This code works in the shell but hangs when I try to import it!
"""
from time import sleep
import os
import paramiko
sOutputFilename = "redacted.htm" #-- The payload file
hostname = "redacted.com"
####-- WARNING! Embedded passwords! Remove ASAP.
sUsername = "redacted"
sPassword = "redacted"
sTargetDir = "redacted"
#-- Get host key, if we know one.
hostkeytype = None
hostkey = None
host_keys = {}
try:
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
except IOError:
try:
# try ~/ssh/ too, because windows can't have a folder named ~/.ssh/
host_keys = paramiko.util.load_host_keys(os.path.expanduser('~/ssh/known_hosts'))
except IOError:
print '*** Unable to open host keys file'
host_keys = {}
if host_keys.has_key(hostname):
hostkeytype = host_keys[hostname].keys()[0]
hostkey = host_keys[hostname][hostkeytype]
print 'Using host key of type %s' % hostkeytype
ssh = paramiko.Transport((hostname, 22))
ssh.connect(username=sUsername, password=sPassword, hostkey=hostkey)
sftp = paramiko.SFTPClient.from_transport(ssh)
sftp.chdir (sTargetDir)
sftp.put (sOutputFilename, sOutputFilename)
ssh.close()