经常会有一些需要在多台线上服务器执行同样的操作,最近学习到了几个命令可以极大的方便这方面的操作。这几条命令其实都是linux
上批量执行任务的命令,都是python
的pssh
包提供的命令,用法也大同小异,学习起来也很容易,但是用处却是大大的。可以通过pip install pssh
来安装这个python
包,安装完成后会自动提供这几个命令
pssh命令
pssh
是一个可以并行的在多个ip
上执行ssh
命令的程序, 主要用来在多台服务器上执行同样的命令
常用参数
-h host_file
从host_file
指定的文件中读取需要连接的ip
信息。(常用)
-H host
从命令行读取登录主机信息 (常用)
-l user
登录用户名
-p
一次并行执行的机器个数 (常用)
-t
连接机器的超时时间
-o
标准输出打印文件
-e
标准错误打印文件
-i
每个主机执行完毕后显示标准输出和标准错误,默认不会显示。(最常用)
例子
打印ip_list.txt
中每个占用8080
端口的进程, 每次并发连接执行两个主机
pssh -h ip_list.txt -i -p 2 'fuser -n tcp 8080'
输出
[1] 13:58:14 [SUCCESS] 10.1.107.171
14696 14702 14703 14704 14711 14712 14714 14716 14717 14718Stderr: 8080/tcp:
[2] 13:58:16 [SUCCESS] 10.3.13.91
15072 15078 15079 15082 15085 15086 15087 15090 15094 20237Stderr: 8080/tcp:
[3] 13:58:16 [SUCCESS] 10.3.13.42
15204 15210 15211 15212 15215 15216 15221 15222 15223 15224Stderr: 8080/tcp:
[4] 13:58:18 [SUCCESS] 10.1.107.142
6935 6941 6942 6943 6946 6953 6954 6955 6956 6957Stderr: 8080/tcp:
pscp命令
pscp
命令是用来并行的将本地文件拷贝到多台服务器上的命令。参数和pssh
命令基本一致
常用参数
这个命令常用参数基本和pssh
一致,不同的是pssh
命令中的-i
参数此命令不支持,同时多了一个-r
参数,用于递归拷贝文件夹
例子
将本地的hehe.txt
文件拷贝到ip_list.txt
中的所有机器上面的/data/hehe.txt
位置
pscp -h ip_list.txt -p 2 hehe.txt /data/hehe.txt
输出
[1] 14:04:41 [SUCCESS] 10.1.107.171
[2] 14:04:41 [SUCCESS] 10.3.13.91
[3] 14:04:41 [SUCCESS] 10.1.107.142
[4] 14:04:41 [SUCCESS] 10.3.13.42
结语
除了pssh
和pscp
外,pssh
包还提供了prsync
命令使用rsync
协议来并行将本地文件同步到不通主机,plcurl
用来将不通服务器上的文件同步到本地等等。只要知道这些命令,具体用法可以在使用man
查询。