我使用此方法将文件发送到远程服务器:
def runSendArchive(host, port, username, password, remote_directory, archive):
try:
s = paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(host, username, password, port)
sftp = s.open_sftp()
sftp.put(archive, remote_directory)
print "3 - The file was uploaded via SSH!"
except (BadHostKeyException, AuthenticationException, SSHException, socket.error) as e:
print "4 - Error! The file was not uploaded: ", e
它给我一个例外:
except (BadHostKeyException, AuthenticationException, SSHException, socket.error) as e: NameError: global name
' BadHostKeyException'未定义
如何正确使用此库?
现在我收到以下错误:
File "run.py", line 65, in runSendArchive
sftp.put(archive, remote_directory)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 721, in put
return self.putfo(fl, remotepath, file_size, callback, confirm)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 677, in putfo
with self.file(remotepath, 'wb') as fr:
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 338, in open
t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 774, in _request
return self._read_response(num)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 826, in _read_response
self._convert_status(msg)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 859, in _convert_status
raise IOError(text)
IOError: Failure
65行是sftp.put(archive, remote_directory)
答案 0 :(得分:3)
从行判断
paramiko.SSHClient()
您正在呼叫import paramiko
由于BadHostKeyException
位于paramiko.ssh_exception
,您需要添加
from paramiko.ssh_exception import BadHostKeyException, AuthenticationException, SSHException
请参阅http://docs.paramiko.org/en/2.3/api/ssh_exception.html
驻留在该模块中。
对于示例代码段,您需要在runSendArchive
函数
import socket
import paramiko
from paramiko.ssh_exception import BadHostKeyException, AuthenticationException, SSHException