python基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 paramiko transport = paramiko.Transport((‘192.168.1.108‘,22)) transport.connect(username=‘root‘,password=‘123456‘) ssh = paramiko.SSHClient() ssh._transport = transport stdin,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 paramiko private_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 paramiko private_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 = transport stdin,stdout,stderr = ssh.exec_command(‘df -h‘) print(stdout.read().decode()) transport.close()
2) SFTPClient
用于连接远程服务器并执行上传下载
import paramiko transport = 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 paramiko private_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基础的主要内容,如果未能解决你的问题,请参考以下文章