python和自动化运维
在工作中往往会遇到要在几十台甚至几万台服务器上面跑一条命令或者是跑一个脚本,可以使用批量管理软件(ansible、jumpserver、puppet等),如果脚本用来实现的话,基本思路是:需要先登录要操作的服务器,然后再执行命令或者脚本,其中最难的是怎么批量免密登录到服务器(不要说几百台,就是十几台,也会让你很烦躁),方法很多,这里只介绍python的模块:paramiko。
系统:centos 7.6
python环境:python 2.7
1. 安装paramiko模块
pip install pycrypto paramiko #前提是你已经安装pip,如果没有安装pip的话,查看最后,有安装的方式
2. 脚本内容
(1)将所有要批量添加服务器的IP地址存入一个文件
cat /mnt/script/ip.txt
192.168.0.1
192.168.0.2
192.168.0.3
(2)修改和执行脚本
cat tuisong.py #需要修改三个地方,其他的都是固定格式
#! /usr/bin/env python
# -*-coding:utf-8-*-
import paramiko #导入模块
with open('/mnt/script/ip.txt') as f: #服务器的IP地址,注意这里要加上单引号或者双引号
for line in f:
print line
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(line, 22, '用户名','password') #输入远程连接的端口号、登录的用户名和登录用户的密码
stdin, stdout, stderr = ssh.exec_command('要执行的命令') #例如:mkdir /root/test 或者 'sh ifconfig_ip.sh'
print stdin
print stdout
print stderr
python tuisong.py #执行脚本
补充内容:安装pip
yum -y install epel-release
yum -y install python-pip