介绍 (第一个脚本)
使用方法
1. 将此脚本和 hostsrpms.csv 文件放在同一目录下
2. hostsrpms.csv 里每 1 个 IP 地址和每 1 个 RPM 包名称占用 1 行,并用逗号 “,” 隔开
3. 给此脚本添加执行权限
4. 执行此脚本
5. 此脚本执行完成后,会将运行结果写入当前目录下的 checkout.csv
注意
此脚本执行前必须要先保证执行本脚本的用户能无密码 ssh 远程这些远程服务器
补充
hostsrpms.csv 示例如下:
192.168.100.101,kernel-4.18.0-80.el8.x86_64,other0
192.168.100.102,kernel-4.18.0-80.el8.x86_64,other1
192.168.100.103,kernel-4.11.0-80.el8.x86_64,other2
192.168.100.104,kernel-4.18.0-80.el8.x86_64,other3
192.168.100.105,kernel-4.18.0-80.el8.x86_64,other4
脚本 (第一个脚本)
#!/usr/bin/python3
import csv
import subprocess
checkout=open('checkout.csv','w',encoding='utf-8')
csvfile=open('hostsrpms.csv','r',encoding='utf-8')
writer=csv.writer(checkout)
for lines in csvfile:
lines=lines.strip('\n')
hosts=lines.split(',')[0]
rpms=lines.split(',')[1]
result=subprocess.call('ssh -t %s "rpm -qa | grep %s" &> /dev/null' %(hosts,rpms) , shell=True)
if result==0:
writer.writerow((hosts,rpms,'yes'))
else:
writer.writerow((hosts,rpms,'no'))
csvfile.close()
checkout.close()
介绍 (第二个脚本)
使用方法
1.将此脚本和 hostsrpms.csv 文件放在同一目录下
2.hostsrpms.csv 里每 1 个 IP 地址和每 1 个 RPM 包名称占用 1 行
3.给此脚本增加执行权限
4.执行此脚本
5.此脚本执行完成后,会将运行结果写入当前目录下的 checkout.csv
脚本 (第二个脚本)
#!/usr/bin/python3
import os
import paramiko
import re
import csv
port = 22
user = 'root'
password = ""
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
checkout = open('checkout.csv','w',encoding='utf-8')
with open('hostsrpms.csv','r',encoding='utf-8') as csvfile:
for lines in csvfile:
lines=lines.strip('\n')
hosts=lines.split(',')[0]
rpms=lines.split(',')[1]
ssh.connect(hosts,port,user,password,timeout = 30)
cmd="rpm -qa | grep "
excute = cmd+rpms
stdin,stdout,stderr = ssh.exec_command(excute)
result = stdout.read()
match=re.findall(rpms,result.decode('utf-8'))
if match !=[]:
checkout.write(hosts+','+rpms+',yes'+'\n')
else:
checkout.write(hosts+','+rpms+',no'+'\n')
ssh.close()
checkout.close()