CentOS7下安装pssh并使用
生活随笔
收集整理的這篇文章主要介紹了
CentOS7下安装pssh并使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 檢查安裝環境
- 安裝pssh
- pssh命令包
- 命令具體使用
- pssh 遠程批量執行命令
- pscp 并行傳輸文件到遠程
- prsync 并行傳輸文件到遠程
- pslurp從遠程拉取到本地
- pnuke遠程批量killall
- 可能遇到遠程腳本無法執行問題
檢查安裝環境
pssh需要python2.4或者以上版本,首先查詢一下自己CentOS中的python版本,查詢命令如下:
[root@hadoop-master ~]# python --version Python 2.7.5如果還沒有安裝python可以自行安裝《Linux下初學python之基本安裝》
安裝pssh
wget https://pypi.python.org/packages/60/9a/8035af3a7d3d1617ae2c7c174efa4f154e5bf9c24b36b623413b38be8e4a/pssh-2.3.1.tar.gz tar xf pssh-2.3.1.tar.gz -C /usr/local/pssh/ cd /usr/local/pssh/pssh-2.3.1/ python setup.py install查看安裝
[root@hadoop-master pssh-2.3.1]# pssh --help Usage: pssh [OPTIONS] command [...]Options:--version show program's version number and exit--help show this help message and exit-h HOST_FILE, --hosts=HOST_FILEhosts file (each line "[user@]host[:port]")-H HOST_STRING, --host=HOST_STRINGadditional host entries ("[user@]host[:port]")-l USER, --user=USER username (OPTIONAL)-p PAR, --par=PAR max number of parallel threads (OPTIONAL)-o OUTDIR, --outdir=OUTDIRoutput directory for stdout files (OPTIONAL)-e ERRDIR, --errdir=ERRDIRoutput directory for stderr files (OPTIONAL)-t TIMEOUT, --timeout=TIMEOUTtimeout (secs) (0 = no timeout) per host (OPTIONAL)-O OPTION, --option=OPTIONSSH option (OPTIONAL)-v, --verbose turn on warning and diagnostic messages (OPTIONAL)-A, --askpass Ask for a password (OPTIONAL)-x ARGS, --extra-args=ARGSExtra command-line arguments, with processing forspaces, quotes, and backslashes-X ARG, --extra-arg=ARGExtra command-line argument-i, --inline inline aggregated output and error for each server--inline-stdout inline standard output for each server-I, --send-input read from standard input and send as input to ssh-P, --print print output as we get itExample: pssh -h hosts.txt -l irb2 -o /tmp/foo uptimepssh命令包
| pssh | 多主機并行運行命令 |
| pscp | 傳輸文件到多個hosts,他的特性和scp差不多 |
| prsync | 使用rsync協議從本地計算機到遠程主機 |
| pslurp | 從遠程主機拷貝文件到本地 |
| pnuke | kill遠程機器的進程 |
參數說明:
| -h | 執行命令的遠程主機列表,是一個文本文件,主機ip或主機名以回車符分隔。 |
| -l | 遠程機器的用戶名 |
| -p | 一次最大允許多少連接(小寫) |
| -o | 輸出內容重定向到一個文件(小寫) |
| -e | 執行錯誤重定向到一個文件 |
| -t | 設置命令執行的超時時間 |
| -A | 提示輸入密碼并且把密碼傳遞給ssh |
| -O | 設置ssh參數的具體配置,參照ssh_config配置文件(大寫) |
| -x | 傳遞多個SSH 命令,多個命令用空格分開,用引號括起來 |
| -X | 同-x 但是一次只能傳遞一個命令 |
| -i | 顯示標準輸出和標準錯誤在每臺host執行完畢后 |
| -I | 讀取每個輸入命令,并傳遞給ssh進程 允許命令腳本傳送到標準輸入 |
| -P | 打印輸出(大寫) |
命令具體使用
最好設置服務器之間免密登錄,設置免密登錄參考《CentOS7虛擬機之間設置免密登錄》
首先,編輯一個hosts.txt文件記錄要操作的主機地址,下面的是我主機配置的,其中hadoop-slave2和
hadoop-slave3處于關機狀態
pssh 遠程批量執行命令
#-h 后面接主機ip文件,文件數據格式[user@]host[:port] #-P 顯示輸出內容具體使用
[root@hadoop-master pssh]# pssh -P -h hosts.text uptime hadoop-slave1: 13:55:14 up 1 day, 4:03, 0 users, load average: 0.00, 0.01, 0.05 [1] 13:55:31 [SUCCESS] hadoop-slave1 [2] 13:55:33 [FAILURE] hadoop-slave2 Exited with error code 255 [3] 13:55:33 [FAILURE] hadoop-slave3 Exited with error code 255如果要輸入密碼可以使用如下命令:
[root@hadoop-master pssh]# pssh -A -h hosts.text uptime如果是執行長shell命令,可以類似下面這種方式
[root@hadoop-master pssh]# pssh -h hosts.text "source /etc/profile" [1] 21:01:46 [SUCCESS] hadoop-slave3 [2] 21:01:46 [SUCCESS] hadoop-slave2 [3] 21:01:46 [SUCCESS] hadoop-slave1pscp 并行傳輸文件到遠程
傳輸文件,但是不支持遠程新建目錄
[root@hadoop-master pssh]# pscp -r -h hosts.text ./* /usr/local [1] 14:10:31 [SUCCESS] hadoop-slave1 [2] 14:10:34 [FAILURE] hadoop-slave2 Exited with error code 1 [3] 14:10:34 [FAILURE] hadoop-slave3 Exited with error code 1prsync 并行傳輸文件到遠程
傳文件,并且支持遠程新建目錄
[root@hadoop-master pssh]# pscp -r -h hosts.text hosts.text /usr/local/pssh/ [1] 14:17:18 [FAILURE] hadoop-slave1 Exited with error code 1 [2] 14:17:21 [FAILURE] hadoop-slave2 Exited with error code 1 [3] 14:17:21 [FAILURE] hadoop-slave3 Exited with error code 1對比
[root@hadoop-master pssh]# prsync -r -h hosts.text hosts.text /usr/local/pssh/ [1] 14:18:08 [SUCCESS] hadoop-slave1 [2] 14:18:11 [FAILURE] hadoop-slave2 Exited with error code 255 [3] 14:18:11 [FAILURE] hadoop-slave3 Exited with error code 255pslurp從遠程拉取到本地
pslurp從遠程拉取文件到本地,在本地自動創建目錄名為遠程主機ip的目錄,將拉取的文件放在對應主機IP目錄下
格式:pslurp -h ip.txt -L <本地目錄> <遠程目錄/文件> <本地重命名>
這個會根據配置的ip或者host創建文件夾目錄
drwxr-xr-x. 2 root root 22 8月 11 14:26 hadoop-slave1 drwxr-xr-x. 2 root root 6 8月 11 14:24 hadoop-slave2 drwxr-xr-x. 2 root root 6 8月 11 14:24 hadoop-slave3pnuke遠程批量killall
[root@hadoop-master pssh]# pnuke -h hosts.text java [1] 14:32:04 [SUCCESS] hadoop-slave1 [2] 14:32:06 [FAILURE] hadoop-slave2 Exited with error code 255 [3] 14:32:06 [FAILURE] hadoop-slave3 Exited with error code 255可能遇到遠程腳本無法執行問題
解決參考:《ssh連接遠程主機執行腳本的環境變量問題》
總結
以上是生活随笔為你收集整理的CentOS7下安装pssh并使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天学一点儿shell:shell字符串
- 下一篇: Hadoop的基本概念和简单使用