Python Paramiko模块 2022_12_14

1、Paramiko模块简介

Paramiko是一个第三方模块,需要额外安装使用,该模块通过SSHv2协议登陆网络设备。有很多的模块在使用SSH和SCP功能的时候,都会依赖于这个模块,比如我们熟知的Ansible、Nornir、Netmiko等。

2、Paramiko官方链接

http://www.paramio.org/

3、SSHClient()

实例化

4、方法

set_missing_host_key_policy(self, policy)

  • 默认拒绝:RejectPolicy
  • 自动添加:AutoAddpolicy
  • 告警:WarningPolicy

connect()

  • hostname
  • port=22
  • username
  • password
  • look_for_keys=True:默认是False。如果python环境运行在Linux下,建议关闭(look_for_keys=False),否则报错AuthenticationException:Authentication failed
  • allow_agent=True:用于使用密钥,agent管理用户名和密码。仅用户名和密码登陆,可关闭。

exec_command()

执行一条命令,执行完成之后就关闭channel。返回一个三元组:stdin、stdout、stderr。

invoke_shell()

与服务器交互式会话。
默认参数:

  • term=‘vt100’
  • width=80
  • height=24

send()

发送命令。每send一次,后面最好加time.sleep()。

close()

关闭SSH连接。

5、ssh_exception

  1. SSHException():SSHv2协商或是逻辑问题
  2. AuthenticationException():认证失败
  3. PasswordRequiredException():需要私钥文件
  4. BadAuthenticationType():认证类型不对;远端可能支持public-key方式
  5. PartialAuthentication():部分身份验证情况下引发的内部异常
  6. ChannelException():尝试打开新通道引发的异常
  7. BadHostKeyException(SSHException):双方host-key不匹配
  8. ProxyCommandFailure(SSHException):查找ProxyCommand失败
  9. NoValidConnectionError(socket.error):不可用的连接
  10. CouldNotCanonicalize(SSHException):hostname canonicalization fails & fallback is disabled
  11. ConfigParseError(SSHException):解析SSH Config data错误

6、安装paramiko模块

pip install paramiko		# 第三方模块需要通过pip安装

安装paramiko时报错:
WARNING: You are using pip version 22.0.4; however, version 22.3.1 is available.
You should consider upgrading via the ‘D:\program\Python310\python.exe -m pip install --upgrade pip’ command.

使用pip install --upgrade pip升级pip时,报错:ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: ‘D:\program\Python310\~cripts\pip.exe’。不用理会该错误,使用pip -V命令查看,pip已经升级至22.3.1版本。

再次使用pip install paramiko命令安装paramiko模块成功。

PS D:\code> pip install paramiko
Collecting paramiko
  Downloading paramiko-2.12.0-py2.py3-none-any.whl (213 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 213.1/213.1 KB 12.1 kB/s eta 0:00:00
Collecting bcrypt>=3.1.3
  Downloading bcrypt-4.0.1-cp36-abi3-win_amd64.whl (152 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 152.9/152.9 KB 14.4 kB/s eta 0:00:00
Collecting cryptography>=2.5
  Downloading cryptography-38.0.4-cp36-abi3-win_amd64.whl (2.4 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 15.7 kB/s eta 0:00:00
Collecting pynacl>=1.0.1
  Downloading PyNaCl-1.5.0-cp36-abi3-win_amd64.whl (212 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 212.1/212.1 KB 10.8 kB/s eta 0:00:00
Collecting six
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting cffi>=1.12
  Downloading cffi-1.15.1-cp310-cp310-win_amd64.whl (179 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 179.1/179.1 KB 15.7 kB/s eta 0:00:00
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     ━━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 30.7/118.7 KB 3.2 kB/s eta 0:00:28
ERROR: Exception:
Traceback (most recent call last):
  File "D:\program\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 438, in _error_catcher
    yield
  File "D:\program\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 519, in read
    data = self._fp.read(amt) if not fp_closed else b""
  File "D:\program\Python310\lib\site-packages\pip\_vendor\cachecontrol\filewrapper.py", line 90, in read
    data = self.__fp.read(amt)
  File "D:\program\Python310\lib\http\client.py", line 465, in read
    s = self.fp.read(amt)
  File "D:\program\Python310\lib\socket.py", line 705, in readinto
    return self._sock.recv_into(b)
  File "D:\program\Python310\lib\ssl.py", line 1274, in recv_into
    return self.read(nbytes, buffer)
  File "D:\program\Python310\lib\ssl.py", line 1130, in read
    return self._sslobj.read(len, buffer)
TimeoutError: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\program\Python310\lib\site-packages\pip\_internal\cli\base_command.py", line 167, in exc_logging_wrapper
    status = run_func(*args)
  File "D:\program\Python310\lib\site-packages\pip\_internal\cli\req_command.py", line 205, in wrapper
    return func(self, options, args)
  File "D:\program\Python310\lib\site-packages\pip\_internal\commands\install.py", line 339, in run
    requirement_set = resolver.resolve(
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 94, in resolve
    result = self._result = resolver.resolve(
  File "D:\program\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 481, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "D:\program\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 373, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
  File "D:\program\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 213, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
  File "D:\program\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 204, in _get_updated_criteria
    self._add_to_criteria(criteria, requirement, parent=candidate)
  File "D:\program\Python310\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 172, in _add_to_criteria
    if not criterion.candidates:
  File "D:\program\Python310\lib\site-packages\pip\_vendor\resolvelib\structs.py", line 151, in __bool__
    return bool(self._sequence)
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 155, in __bool__
    return any(self)
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\found_candidates.py", line 47, in _iter_built
    candidate = func()
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\factory.py", line 215, in _make_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 288, in __init__
    super().__init__(
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 158, in __init__
    self.dist = self._prepare()
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 227, in _prepare
    dist = self._prepare_distribution()
  File "D:\program\Python310\lib\site-packages\pip\_internal\resolution\resolvelib\candidates.py", line 299, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
  File "D:\program\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 487, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
  File "D:\program\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 532, in _prepare_linked_requirement
    local_file = unpack_url(
  File "D:\program\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 214, in unpack_url
    file = get_http_url(
  File "D:\program\Python310\lib\site-packages\pip\_internal\operations\prepare.py", line 94, in get_http_url
    from_path, content_type = download(link, temp_dir.path)
  File "D:\program\Python310\lib\site-packages\pip\_internal\network\download.py", line 146, in __call__
    for chunk in chunks:
  File "D:\program\Python310\lib\site-packages\pip\_internal\cli\progress_bars.py", line 304, in _rich_progress_bar
    for chunk in iterable:
  File "D:\program\Python310\lib\site-packages\pip\_internal\network\utils.py", line 63, in response_chunks
    for chunk in response.raw.stream(
  File "D:\program\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 576, in stream
    data = self.read(amt=amt, decode_content=decode_content)
  File "D:\program\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 512, in read
    with self._error_catcher():
  File "D:\program\Python310\lib\contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "D:\program\Python310\lib\site-packages\pip\_vendor\urllib3\response.py", line 443, in _error_catcher
    raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
WARNING: You are using pip version 22.0.4; however, version 22.3.1 is available.
You should consider upgrading via the 'D:\program\Python310\python.exe -m pip install --upgrade pip' command.
PS D:\code> 
PS D:\code> pip install --upgrade pip
Requirement already satisfied: pip in d:\program\python310\lib\site-packages (22.0.4)
Collecting pip
  Downloading pip-22.3.1-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 1.9 MB/s eta 0:00:00
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 22.0.4
    Uninstalling pip-22.0.4:
      Successfully uninstalled pip-22.0.4
ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: 'D:\\program\\Python310\\~cripts\\pip.exe'
Consider using the `--user` option or check the permissions.

PS D:\code> pip -V
pip 22.3.1 from D:\program\Python310\lib\site-packages\pip (python 3.10)
PS D:\code> pip install paramiko                 
Collecting paramiko
  Using cached paramiko-2.12.0-py2.py3-none-any.whl (213 kB)
Collecting pynacl>=1.0.1
  Using cached PyNaCl-1.5.0-cp36-abi3-win_amd64.whl (212 kB)
Collecting six
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting cryptography>=2.5
  Using cached cryptography-38.0.4-cp36-abi3-win_amd64.whl (2.4 MB)
Collecting bcrypt>=3.1.3
  Using cached bcrypt-4.0.1-cp36-abi3-win_amd64.whl (152 kB)
Collecting cffi>=1.12
  Using cached cffi-1.15.1-cp310-cp310-win_amd64.whl (179 kB)
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.7/118.7 kB 407.7 kB/s eta 0:00:00
Installing collected packages: six, pycparser, bcrypt, cffi, pynacl, cryptography, paramiko
Successfully installed bcrypt-4.0.1 cffi-1.15.1 cryptography-38.0.4 paramiko-2.12.0 pycparser-2.21 pynacl-1.5.0 six-1.16.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值