1. 程式人生 > >Linux批量遠端命令和上傳下載工具

Linux批量遠端命令和上傳下載工具

mooon_ssh:批量遠端命令工具,在多臺機器上執行指定命令

mooon_upload:批量遠端上傳工具,上傳單個或多個檔案到單臺或多臺機器
mooon_download:批量遠端下載工具,從指定機器下載一個或多個檔案


mooon-tools-glibc2.17.tar.gz 64位版本,glibc為2.17,點選下載
mooon-tools-glibc2.4.tar.gz 32位版本,glibc2.4,常常可用於64位版本glibc2.17環境,點選下載


建議複製到目錄/usr/local/bin,或在/usr/local/bin目錄下解壓,以方便所有使用者直接使用,而不用指定檔案路徑。


可以通過環境變數或引數方式指定連線遠端機器的使用者名稱、密碼和IP地址或IP地址列表,但引數方式優先:
1) 環境變數H等同引數-h,用於指定遠端機器的IP或IP列表,多個IP間以逗號分隔,但mooon_download只能指定一個IP
2) 環境變數U等同引數-u,用於指定連線遠端機器的使用者名稱
3) 環境變數P等同引數-p,用於指定遠端機器的使用者密碼
4) 環境變數PORT等同引數-P,用於指定遠端機器的埠號


環境變數方式和引數方式可以混合使用,即部分通過環境變數設定值,部分以引數方式指定值。
並建議,引數值儘可能使用單引號,以避免需要對值進行轉義處理,除非值本身已包含了單引號。


如果使用雙引號,則需要做轉義,如批量kill掉java程序:
mooon_ssh -c="kill \$(/usr/local/jdk/bin/jps|awk /DataNode/'{print \$1}')"


另外,低版本glibc不相容高版本的glibc,因此glibc2.4的不能用於glibc2.17環境,64位版本也不能用於32位環境。
64位系統上檢視glibc版本方法:/lib64/libc.so.6
32位系統上檢視glibc版本方法:/lib/libc.so.6


引數無順序要求,不帶任何引數執行即可檢視使用幫助,如:
$ mooon_ssh 
parameter[-c]'s value not set
usage:
-P[22/10,65535]: remote hosts port, e.g., -P=22. You can also set environment `PORT` instead of `-P`, e.g., export PORT=1998
-c[]: command to execute remotely, e.g., -c='grep ERROR /tmp/*.log'
-h[]: remote hosts separated by comma, e.g., -h='192.168.1.10,192.168.1.11'. You can also set environment `H` instead of `-h`, e.g., export H=192.168.1.10,192.168.1.11
-p[]: remote host password, e.g., -p='password'. You can also set environment `P` instead of `-p`, e.g., export P=123456
-t[60/1,65535]: timeout seconds to remote host, e.g., -t=100
-u[]: remote host user name, e.g., -u=root. You can also set environment `U` instead of `-u`, e.g., export U=zhangsan


對於整數型別的引數,均設有預設值和取值範圍,如“-P[22/10,65535]”表示預設值為,取值範圍為10~65535。對於字串型別引數,如果為空中括號“[]”,則表示無預設值,否則中括號“[]”中的內容為預設值,如“-u[root]”表示引數“-u”的預設值為root。


mooon_ssh使用示例:
1) 引數方式
mooon_ssh -u=root -p='mypassword' -h=192.168.31.2,192.168.31.3 -c='whoami'
2) 環境變數方式
export U=root
export P='mypassword'
export H=192.168.31.2,192.168.31.3
mooon_ssh -c='whoami'
3) 混合方式
export U=root
export P='mypassword'
mooon_ssh -c='whoami' -h=192.168.31.2


mooon_upload和mooon_download使用方法類似。


遠端批量新增一條crontab方法:
mooon_ssh -c='echo -e "`crontab -l`\n* * * * * touch /tmp/x.txt" | crontab -'
完成後,crontab中將新增如下一行:
* * * * * touch /tmp/x.txt