# 此脚本用于在多个机器上批量执行一个命令
import paramiko
# 用于执行远程命令
def exec_remote_cmd(cmd,hostname="",username="root",passwd="redhat",port="22"):
# 创建一个ssh对象
ssh_client=paramiko.SSHClient()
# 如果是第一次通过ip连接,会出现yes或者no,可以解决此问题
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh_client.connect(hostname=hostname,port=port,username=username,password=passwd)
stdin,stdout,stderr=ssh_client.exec_command(cmd)
print(stdout.read().decode('utf-8'))
ssh_client.close()
# exec_remote_cmd('free -h','192.168.204.128','root','redhat','22')
with open(file="host")as f:
for line in f:
line=line.strip()
hostname,username,password,port=line.split(',')
# print(line.split(','))
print(hostname + " cmd result:###############################")
exec_remote_cmd('df -h',hostname,username,password,port)
前提说明:需要在对应目录创建一个存放主机信息的文件,比如host,里面内容如下:中间不要有空格
192.168.204.128,root,redhat,22
192.168.1.8,root,redhat,22
最终执行结果如下: