首页 > 代码库 > 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基础(九)