Python pypdsh 并行管理工具:向 Linux 服务器批量下发命令

我叫GTD · 2020年02月10日 · 1133 次阅读

在做性能测试的时候会创建很多虚机作为压力发射机,最初使用的 pdsh 这个工具,用起来不是很顺手,就用 python 写一个工具。
与 pdsh 相比,pypdsh 方便之处在于:

  • 不需要提前设置 ssh 秘钥建立信任;
  • 只需要在管理主机上安装好 pypdsh,可以向客户机发送文件或拉取文件;

与 pdsh 相比缺少的功能:

  • 没有命令交互模式,只能向客户机发送命令

源码

https://github.com/GuoTengda1993/pypdsh

安装

pip install pypdsh

使用介绍

-h, --help           显示帮助信息
-i IP, --ip=IP       单个IP地址或使用如下格式的IP组“192.168.1.[1-10,16,19,30-40]”
-I IP, --IP=IP       CSV格式的文件,文件内容分三列:ip,username,password
-c COMMAND, --command=COMMAND           单条命令,或将命令写在TXT文件中
-f FILE, --file=FILE                    向每个客户端发送文件
-g LOCALPATH, --get=LOCALPATH           从客户端获取文件并保存在LOCALPATH中,必须配合-d参数使用,获取到的文件会以各个客户端的IP作为区分
-d DESTINATION, --destination=DESTINATION        从客户端获取文件的路径,路径必须存在于每个客户端中
-p PASSWORD, --password=PASSWORD        客户端后台密码,此方式会在history中留下后台密码,如介意请使用-I参数,所有密码从CSV文件中获取,或不填写此参数,会提示输入密码,此时输入密码不会在history中留下密码信息
-u USERNAME, --username=USERNAME        客户端后台用户名,默认为root
--log-level=LOG_LEVEL                   控制台输出的日志等级,可输入INFO或ERROR,默认为INFO
-v, --version        pypdsh版本

使用示例:

#向ip段192.168.1.[1-10,20-30,35,38,40-50]发送“ifconfig ens33”的命令,并在控制台仅获取ERROR级别的输出(日志默认保存到当前目录,且INFO以上级别)
pypdsh -i 192.168.1.[1-10,20-30,35,38,40-50] -c "ifconfig ens33" --log-level=error
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册