iT邦幫忙

0

linux 使用 script sshpass 自動連IP 執行指令

請教大大們

目前要觀察五台伺服器的 HDD 狀態,再工作母機(inux系統)建立資料夾,分別伺服器記錄在.txt 中(以IP名稱命名),密碼PASSWD,五台IP分別key在ip_config之中,另外再建立一個justdoit.sh檔來執行,./justdoit.sh ip_config.txt

後來的確有各IP.txt檔案,奇怪的是裡面只有秀 date +"%T"

09:57:34

請教各位大大,不知道問題在哪@"@

#ip_config
192.168.0.1
192.168.0.2
192.168.0.3
.....

#justdoit
#!/bin/bash

ip_config=$1
hosts=$(cat $ip_config)

for h in $hosts
do
date +"%T" >> $h.txt
sshpass -p 'PASSWD' ssh root@$h 'iostat -d -x -m 1 100000' >> $h.txt

done

by2048 iT邦研究生 4 級 ‧ 2020-10-30 09:21:15 檢舉
date +"%T" 可以用date --help 去查,%T顯示時間是正確的
試試改成這樣 date +'%Y'/'%m'/'%d %T'
littleaoc iT邦新手 5 級 ‧ 2020-10-30 13:49:58 檢舉
好的~ 改成這組的時間清楚許多!!!

1 個回答

1
tkunlin
iT邦新手 5 級 ‧ 2020-10-30 09:44:29
最佳解答

我想你要問的是裡 ip.txt 只有時間的資料, 但沒有硬碟的資料對吧?
有可能是這行沒有正確執行
sshpass -p 'PASSWD' ssh root@$h 'iostat -d -x -m 1 100000' >> $h.txt

你可以先用手動的方式執行這行看看, 應該是沒有正確執行.

debug 方式, 先試
sshpass -p 'PASSWD' ssh root@192.168.0.1 'iostat -d -x -m 1 100000'

程式應該會停下來, 問你主機密鑰檢查是否要接受. 若是的話, 你就可以使用以下方式來解決

sshpass -p <密碼> ssh -o StrictHostKeyChecking=no <使用者>@<主機> <指令>

看更多先前的回應...收起先前的回應...
by2048 iT邦研究生 4 級 ‧ 2020-10-30 11:18:15 檢舉

首次執行會有密鑰問題
sshpass的程式要另外安裝
sshpass -p 'PASSWD' ssh root@192.168.0.1 'iostat -d -x -m 1 100000' 參數100000是執行幾次的用途 太多了先用1-10測試就好原指令寫法沒什麼問題

參數-m 不適用舊版linux

littleaoc iT邦新手 5 級 ‧ 2020-10-30 13:48:46 檢舉

感謝 by大大回應

sshpass tool有安裝了, 後來參照tkunlin大的中間加入-o StrictHostKeyChecking=no 執行也OK

littleaoc iT邦新手 5 級 ‧ 2020-10-30 13:56:09 檢舉

只是這邊有個IP還無法進行,在192.168.0.4的 OS內部開視窗 key 指令 OK,如 iostat -d -x -m 1 10
,但是在工作母機上面 key 指令 sshpass -p 'PASSWD' ssh -o StrictHostKeyChecking=no root@192.168.0.4 'iostat -d -x -m 1 10'
會出現 bash: iostat: command not found ,記錄檔內部也只有時間。

tkunlin iT邦新手 5 級 ‧ 2020-10-30 15:48:00 檢舉

可以用 which iostat看一下路徑, 並且看一下和其他的機器的差異性在哪? 會出現 bash: iostat: command not found, 就是真的找不到 iostat.

隔空診斷, 需要有詳細的資料, 不然只能憑經驗猜的. 另外, 提供你一個建議, 你可以採用ssh without passowrd 的方式, 來這件事, 你就不用把密碼寫在script上. 密碼寫在script, 這種方式安全性會差一點.

littleaoc iT邦新手 5 級 ‧ 2020-10-30 16:24:03 檢舉

單獨進入該 IP 192.168.0.4 另開視窗輸入是可以的,換成在工作母機用指令方式就無法....

sshpass -p 'PASSWD' ssh -o StrictHostKeyChecking=no root@192.168.0.4 'iostat -d -x -m 1 10'

只有這台有狀況...

tkunlin iT邦新手 5 級 ‧ 2020-10-30 17:08:00 檢舉

都是用 root 帳號, 另開視窗輸入有可能是另外的帳號. 先用指令 which iostat 看實際路徑吧. 或是截圖上來.

我要發表回答

立即登入回答