Paramiko
是一个Python实施SSHv2
的协议,提供客户端和服务器的功能。虽然它利用一个Python C扩展低级别加密的paramiko本身就是围绕SSH联网概念的纯Python接口。
Paramiko官网:http://www.paramiko.org/
安装:
pip install paramiko
安装之后进入python解释器导入模块,如果导入成功则安装成功,否则安装失败
使用用户名和密码连接:
import paramiko
ssh = paramiko.SSHClient()
# 如果是一个新主机连接,会出现yes/no,AutoAddPolicy自动填写yes的
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.20.161', port=22, username='root', password='123456')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -h')
"""
stdin:标准输入
stdout:标准输出
stderr:错误输出
"""
# 获取正确的输出
result = stdout.read()
ssh.close()
print(result.decode("utf-8"))
执行结果为:
C:\Users\zxb\venv\测试\Scripts\python.exe D:/pythonfile/测试/三方库/测试.py
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 38G 28G 11G 73% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 13M 476M 3% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/mapper/centos-home 10G 8.6G 1.5G 86% /home
/dev/sda1 197M 109M 88M 56% /boot
/dev/sr0 4.1G 4.1G 0 100% /mnt/cdroom
tmpfs 98M 0 98M 0% /run/user/0
使用公私钥连接:
import paramiko
# 指定私钥位置
private_key = paramiko.RSAKey.from_private_key_file('D:\pythonfile\id_rsa')
# 创建ssh对象
ssh = paramiko.SSHClient()
# 允许连接不在konow_hosts主机中的主机,跳过输入yes/no
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接
ssh.connect(hostname='192.168.20.161', port=22,username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -h')
result = stdout.read()
ssh.close()
print(result.decode("utf-8"))
上传与下载文件
import paramiko
t = paramiko.Transport(('192.168.20.161', 22))
t.connect(username='root', password='123456')
sftp = paramiko.SFTPClient.from_transport(t)
# 远程目录 需要与上传的文件名字一样,否则报错
remotepath = '/home/test/id_rsa'
# 本地文件
localpath = 'D:\pythonfile\id_rsa'
# 上传文件
sftp.put(localpath, remotepath)
# 下载文件
# sftp.get(remotepath, localpath)
t.close()