SSHClient paramiko Python?

时间:2017-11-13 22:14:47

标签: python ssh module

我使用此方法将文件发送到远程服务器:

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)

1 个答案:

答案 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

  • paramiko.ssh_exception.BadHostKeyException
  • paramiko.ssh_exception.AuthenticationException
  • paramiko.ssh_exception.SSHException

驻留在该模块中。

对于示例代码段,您需要在runSendArchive函数

之前添加以下内容
import socket
import paramiko
from paramiko.ssh_exception import BadHostKeyException, AuthenticationException, SSHException