首页 > 代码库 > python基础(九)
python基础(九)
一、paramiko模块
1.1 简介
paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。
1.2 paramiko简单使用
1)SSHClient:
基于用户名和密码进行连接
import paramiko#创建ssh对象ssh = paramiko.SSHClient()#允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接服务器ssh.connect(hostname=‘192.168.1.108‘,port=22,username=‘root‘,password=‘123456‘)#执行命令stdin,stdout,stderr = ssh.exec_command(‘df -h‘)#获取命令结果result = stdout.read().decode()#打印结果print(result)#关闭连接ssh.close()
显示结果:
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 18G 13G 4.3G 75% /
tmpfs 495M 4.0K 495M 1% /dev/shm
/dev/sda1 190M 48M 133M 27% /boot
SSHClient封装Transport:
import paramikotransport = paramiko.Transport((‘192.168.1.108‘,22))transport.connect(username=‘root‘,password=‘123456‘)ssh = paramiko.SSHClient()ssh._transport = transportstdin,stdout,stderr = ssh.exec_command(‘free -m‘)print(stdout.read().decode())transport.close()
结果显示:
total used free shared buffers cached
Mem: 988 437 551 0 52 77
-/+ buffers/cache: 307 681
Swap: 2047 0 2047
基于公钥密钥连接:
import paramikoprivate_key = paramiko.RSAKey.from_private_key_file(‘C:\id_rsa‘)#创建ssh对象ssh = paramiko.SSHClient()#允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#连接服务器ssh.connect(hostname=‘192.168.1.108‘,port=22,username=‘root‘,pkey=private_key)#执行命令stdin,stdout,stderr = ssh.exec_command(‘df -h‘)#获取命令结果result = stdout.read().decode()print(result)#关闭连接ssh.close()
显示结果:
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 18G 13G 4.3G 75% /
tmpfs 495M 4.0K 495M 1% /dev/shm
/dev/sda1 190M 48M 133M 27% /boot
SSHClient封装transport:
import paramikoprivate_key = paramiko.RSAKey.from_private_key_file(‘C:\id_rsa‘)transport = paramiko.Transport((‘192.168.1.108‘,22))transport.connect(username=‘root‘,pkey=private_key)ssh = paramiko.SSHClient()ssh._transport = transportstdin,stdout,stderr = ssh.exec_command(‘df -h‘)print(stdout.read().decode())transport.close()
2) SFTPClient
用于连接远程服务器并执行上传下载
import paramikotransport = paramiko.Transport((‘192.168.1.108‘,22))transport.connect(username=‘root‘,password=‘123456‘)sftp = paramiko.SFTPClient.from_transport(transport)#本地的id_rsa文件上传至服务器/tmp/下面sftp.put(‘C:\id_rsa‘,‘/tmp/id_rsa‘)#将/tmp下面的nihao下载到本地的C:目录下sftp.get(‘/tmp/nihao‘,‘C:\\nihao‘)transport.close()
基于公钥密钥上传下载
import paramikoprivate_key = paramiko.RSAKey.from_private_key_file(‘C:\id_rsa‘)transport = paramiko.Transport((‘192.168.1.108‘,22))transport.connect(username=‘root‘,pkey=private_key)sftp = paramiko.SFTPClient.from_transport(transport)#本地的id_rsa文件上传至服务器/tmp/下面sftp.put(‘C:\id_rsa‘,‘/tmp/id_rsa‘)#将/tmp下面的nihao下载到本地的C:目录下sftp.get(‘/tmp/nihao‘,‘C:\\nihao‘)transport.close()
python基础(九)