您的位置:首页 > 编程语言 > Python开发

python通过 paramiko模块批量执行多台机器的命令

2020-08-10 16:10 916 查看

背景:比如我们在公司测试环境需要统计100台机器的磁盘使用情况,我们可以通过自动化工具ansible或者salt进行批量扫描查看
假如我们在之前没有安装这些自动化工具,有这个需求就比较费事了,需要一台一台登录上去查看这样就比较费事了
今天我们就解决一下这个问题,通过python的模块 paramiko来实现

'''

#!/usr/bin/pythonls

-- coding: UTF-8 --

import paramiko
def name():
while True:
cmd = input('>>>')
queren = input('请再次确认是否要执行该命令,请输入>> y/yes|n/no :').upper().lower().strip()
if cmd =='quit' or cmd == 'exit':
break

elif queren == 'y' or queren == 'Y' or queren == 'yes' or queren == 'YES':
print('接下来开始执行命令!!')
elif queren == 'n' or queren == 'N' or queren == 'no' or queren == 'NO':
print('不执行该命令,请重新输入!!')
continue
a=['IP地址','ip地址']
# def aa(hostname):
for hostname in  a:
hostname
username = 'root' # 这些机器 的账号和密码要一致才行
password = 'xxxxxxx'

host='主机%s执行\n' %(hostname)
print('\033[1;32;40m%s\033[0m' % host)
paramiko.util.log_to_file('paramiko.log')
s = paramiko.SSHClient()
# s.load_system_host_keys()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname=hostname, username=username, password=password)
stdin, stdout, stderr = s.exec_command(cmd)
# print(stdout.read().decode('utf-8'))
res=stdout.read()
res=res.decode('utf-8')
print(res)

name()
'''
我们可以测试一下


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: