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

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()
'''
我们可以测试一下

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