前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >110-并行批量管理远程服务器

110-并行批量管理远程服务器

作者头像
凯茜的老爸
发布2018-09-11 15:06:48
1.2K0
发布2018-09-11 15:06:48
举报
文章被收录于专栏:python百例python百例

脚本名为remote_comm.py,执行方式如下:

代码语言:javascript
复制
python3 remote_comm.py  服务器IP地址文件  "在远程服务器上要执行的命令"

如:

代码语言:javascript
复制
# python3 remote_comm.py  serverips.txt  "useradd zhangsan"

远程服务器的密码以交互方式获得

代码语言:javascript
复制
import sys
import getpass
import paramiko
import threading
import os

def remote_comm(host, pwd, command):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=host, username='root', password=pwd)
    stdin, stdout, stderr = ssh.exec_command(command)
    out = stdout.read()
    error = stderr.read()
    if out:
        print('[%s] OUT:\n%s' % (host, out.decode('utf8')))
    if error:
        print('[%s] ERROR:\n%s' % (host, error.decode('utf8')))
    ssh.close()

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('Usage: %s ipaddr_file "command"' % sys.argv[0])
        exit(1)
    if not os.path.isfile(sys.argv[1]):
        print('No such file:', sys.argv[1])
        exit(2)
    fname = sys.argv[1]
    command = sys.argv[2]
    pwd = getpass.getpass()
    with open(fname) as fobj:
        ips = [line.strip() for line in fobj]

    for ip in ips:
        t = threading.Thread(target=remote_comm, args=(ip, pwd, command))
        t.start()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档