最新消息:

Python的Paramiko模块介绍

IT技术 ipcpu 73浏览

Python的Paramiko模块介绍.md

概述

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输。

一、paramiko模块的安装

直接使用pip安装即可

 pip3 install paramiko 

二、使用paramiko创建SSH连接

使用paramiko模块有两种连接方式,一种是通过paramiko.SSHClient()函数,另外一种是通过paramiko.Transport()函数。我们以SSHClient()举例:

import paramiko
import socket

hostname = '10.140.12.45'
port = 22222
username = 'root'
password = 'sohu.com'

#key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
s = paramiko.SSHClient()
s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
    #s.connect(hostname=hostname, port=port, username=username, pkey=key)
    s.connect(hostname=hostname, port=port, username=username, password=password)
    stdin, stdout, stderr = s.exec_command('/bin/bash /tmp/publish81.sh', timeout=10)
    #超时参数不太好使,需要确保脚本容错性和超时设置。
    ret =  stdout.read()
    status = stdout.channel.recv_exit_status()
    print(status,ret)
except (paramiko.BadHostKeyException, paramiko.AuthenticationException, paramiko.SSHException,socket.error ) as e:
    print(e)

s.close()

三、使用paramiko传文件

Paramiko除了执行命令之外,还可以用来上传下载文件。一般选择SCP或者SFTP。

import paramiko

hostname = '10.140.12.45'
port = 22222
username = 'root'
password = 'sohu.com'

scp = paramiko.Transport((hostname, port))  # 1
scp.connect(username=username, password=password)  # 2
sftp = paramiko.SFTPClient.from_transport(scp)  # 3
#sftp.get('/.ssh/authorized_keys', '/usr/li/authorized_keys')
sftp.put('mmp.py', '/tmp/lili')
sftp.close()

四、paramiko发起的shell的类型

Paramiko发起的shell类型是non-interactive和login,因此不会载入常见的环境变量配置文件,如下。

网上有使用paramiko开启交互式shell的方法,大家可以自行查找。

转载请注明:IPCPU-网络之路 » Python的Paramiko模块介绍