17、Python之paramikomo

一、简介

    paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

二、准备

    由于paramiko模块不是系统自带的模块,所以需要引入,在pycharm中引入paramiko模块的步骤如下:

三、使用paramiko连接远程服务器

1、基于用户名和密码的连接

 1 import paramiko
 2 #创建SSH对象
 3 ssh = paramiko.SSHClient()
 4 # 允许连接不在know_hosts文件中的主机
 5 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 6 #连接服务器
 7 ssh.connect(hostname="192.168.172.132",port=22,username="root",password="123")
 8 stdin,stdout,stderr = ssh.exec_command("ls")
 9 result = stdout.read()
10 err_result = stderr.read()
11 if result:
12     print(result.decode("utf-8"))
13 elif err_result:
14     print(err_result.decode())
View Code

2、基于公钥秘钥的连接

    1、生成公钥秘钥:在linux中使用命令生成公钥和私钥。命令生成的公钥和私钥在目录下面,将私钥的文件拷贝到客户端,然后就可以通过公钥私钥的方式连接服务器了,代码如下:

1 import paramiko
2 private_key = paramiko.RSAKey.from_private_key_file("rsa.txt") #读取私钥
3 ssh = paramiko.SSHClient()
4 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
5 ssh.connect(hostname="192.168.172.132",port=22,username="root",pkey=private_key)
6 stdin,stdout,stderr = ssh.exec_command("df")
7 result = stdout.read()
8 print(result.decode())
9 ssh.close()
View Code

3、远程文件上传和下载

1 import paramiko
2 
3 transport = paramiko.Transport(("192.168.172.132",22))
4 transport.connect(username="root",password="123")
5 sftp = paramiko.SFTPClient.from_transport(transport)
6 # sftp.put("F:/key.txt","/temp") #上传
7 sftp.get("/home/gwx/.ssh/id_rsa","F:/mywork/ts.txt")#下载
8 transport.close()
View Code
原文地址:https://www.cnblogs.com/win0211/p/8548898.html