paramiko是一个python的模块,用来 免密批量执行命令或者脚本;类似于sshpass,主要应用场景是在 python 运维脚本中。这里先介绍paramiko的安装方法,在这里踩坑有点久。
【安装paramiko模块】
环境介绍:centos 7.5
# 先安装python36
yum -y install epel-release
yum -y install python36
# 核心问题是怎么安装pip,这是一个坑点,建议只用 get-pip.py 文件来安装,不要用其他方法
# 我们这里是安装python3.6,必须要对应下载 get-pip.py 文件,用python3执行
python3 get-pip.py
get-pip36.py文件下载链接:
链接:https://pan.baidu.com/s/1myMlMVnkyUuV6083-h_c_Q
提取码:f1nb
【实例展示】
【实例1】
使用密码登录,这中方式适合于所有机器都是同一个密码的情况:
#! _*_ encoding:utf-8 _*_
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 修改下面这一行的参数,ip地址、端口、用户名、密码
ssh.connect(hostname="192.168.1.66", port=22, username='root', password='123123')
stdin, stdout, stderr = ssh.exec_command("mkdir /tmp/zhangwuji")
print(stdout.read().decode())
ssh.close()
【实例2】
使用秘钥登陆,适合于做了免密登陆的服务器。适合于批量操作服务器。
#! _*_ encoding:utf-8 _*_
import paramiko
ipfile = "/root/ip.txt"
pkey = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
with open(ipfile, 'r') as file:
for i in file.readlines():
ip = i.strip()
print(ip)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip, port=22, username='root', pkey=pkey)
stdin,stdout,stderr = ssh.exec_command("echo 'langyabang' > /tmp/test.txt")
print(stdout.read().decode())
ssh.close()
结果展示: