Python简单版Ansible批量操作linux主机

695 阅读2分钟

这是我参与更文挑战的第12天,活动详情查看: 更文挑战

batchcmd批量操作linux主机

支持持续交互对多个主机操作Shell,支持口令和私钥模式,支持文件上传和下载,整体实现了常用的批量操作,轻量级Ansible。对于持续输出命令,例如top等命令,需要-c指定输出次数,否则会无限输出不会结束。喜欢记得点个关注哦。

Github

batchCmd源码 欢迎star~

运行环境

需要python3.0+,如需要二进制运行还需要安装pyinstaller

安装

  1. clone到本地,修改根目录.cfg配置文件,运行batchCMD.py
  2. clone到本地,安装pyinstaller,执行 pyinstaller -f batchCMD.py ,会生成二进制文件在同级目录下放入.cfg配置文件即可

配置文件

支持口令和秘钥两种方式

  1. 密码格式:172.16.3.131 -p 密码
  2. 私钥模式:172.16.3.131 -key 私钥绝对路径
  3. 默认为root,修改用户名:172.16.3.131 -u tyy -p 密码
  4. ssh端口使用为22,暂无配置,需要修改可改源码。

启动命令

命令说明
-h帮助
-i开启持续交互式
-g指定配置文件的主机组名称
-cshell命令(top等持续输出命令请加输出次数否则会不显示 )
-fun指定函数,目前支持put和get分别为sftp上传下载
-form配合fun的put或get使用,指定原始文件目录
-to配合fun的put或get使用,指定目标文件目录
交互中输入 cc等同于【ctrl + c】

源码模式:

python3 bashCMD.py  -g web -i -c 'ls'
python3 bashCMD.py -g web -fun put -form /home/123.txt -to /home/123.txt
python3 bashCMD.py -g web -fun get -form /home/123.txt -to /home/123.txt

二进制模式:

./bashCMD -g web -i -c 'ls'
./bashCMD -g web -fun put -form /home/123.txt -to /home/123.txt
./bashCMD -g web -fun get -form /home/123.txt -to /home/123.txt