PYTHON简易版批量远程运行命令并显示结果

Linux IT敢客 1年前 (2017-11-09) 9125次浏览 已收录 0个评论 扫描二维码

        最近在学习 Python 的过程中,发现 Python 中的 paramiko 真是神器,paramiko 主要有两个功能,一个是 ssh 登录,可以执行命令,一个 sftp 登录,可以传输文件。有了这两个功能,就能实现许多远程管理的功能了,这对于运维而言,无疑是一大神器,即使是现在和诺的 ansible 也是最初基于 paramiko 二次开发的。
        之前用 python 结合 paramiko 写了一个 sftp 上传文件和文件夹的代码,可见之前的文章,https://www.itgank.com/archives/1044 然后最近又写了一个简易版的远程执行命令的脚本,代码内容如下:

import paramiko
import datetime
import os
import sys

port = 22
hosts_file = 'remote_hosts.txt'

def upload(shell):
    with open(hosts_file,encoding='UTF-8') as file_object:
        contents = file_object.readlines()
    for content in contents:
        line=content.rstrip().lstrip().split(';')
        hostip=line[0]
        username=line[1]
        password=line[2]
        hostname=line[3]

        try:
            k = paramiko.SSHClient()
            k.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            k.connect(hostname=hostip, username=username, password=password)
            for s in shell:
                stdin, stdout, stderr = k.exec_command(s)
                print('主机' + hostip + '在 %s' % datetime.datetime.now() + '时刻执行' + s +'命令成功')
                print(stdout.read().decode())
            k.close()
        except Exception as e:
            print(e)


if __name__=='__main__':
    print("功能描述:该小脚本实现从本地输入命令去远程主机执行并打印输出结果!!!")
    print("作者:amber_xu!!!")
    print("Date:2017-11-08")
    print("☆☆使用说明:直接输入命令,然后回车,多条命令不能换行输入,可以在命令后加分号,输入 q 显示结果!!")
    shell = []
    while True:
        s = input('请输入需要执行的远程命令:')
        if s == 'q':
            break
        shell.append(s)
    upload(shell)

然后同级目录下,也要建个 remote_hosts.txt 配置文件,里面内容如下

199.168.4.87;zabbix;zabbix;SS_STC_IMT1;XXX 交易系统;XXX SS STC IMT1
199.168.4.88;zabbix;zabbix;SS_STC_IMT2;XXX 交易系统;XXX SS STC IMT2
199.168.4.89;zabbix;zabbix;SS_STC_FCS1;XXX 交易系统;XXX SS STC FCS1
199.168.4.90;zabbix;zabbix;SS_STC_FCS2;XXX 交易系统;XXX SS STC FCS2

内容说明:每一行代表一个服务器客户端,以半角分号分割开,第一列写远程服务器的 ip,第二列写远程 ssh 登录的用户名,第三列是远程 ssh 登录对应的密码,第四列是及后面的暂时用不着。
尽情体验一把吧


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PYTHON 简易版批量远程运行命令并显示结果
喜欢 (159)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址