shell迴圈登陸多台機器進行命令執行

2021-07-31 17:38:16 字數 1718 閱讀 1384

1.首先保證機器之間是可以 ssh免密登陸的

2.編寫shell指令碼

[root@localhost opt]# vim ssh.sh 

#!/bin/sh

ip="192.168.56.122 192.168.56.121"

rm -rf dd.log

echo '統計顯示' >> dd.log

for i in $ip

doecho $i >> dd.log ;

ssh $i 'ls -ilt `find /opt  -name eth1`' >> dd.log;

echo "----done~-----" >>  dd.log;echo `date` >> dd.log''

#sleep 2

done

echo  "個數統計" >> dd.log

for i in $ip

doecho -e "$i 的總計為:\c " >> dd.log

a=$(ssh $i 'ls -ilt `find /opt -name eth1`'|wc -l)

echo  "  $a"  >> dd.log

echo "----done~-----" >>  dd.log;echo `date` >> dd.log

sleep 1

let s+=a

done

echo -e "\033[34m 總計$s \033[0m" >> dd.log

遇到的問題:1.發現 用ssh時候,使用 「 」,好像會出錯具體我也不是很清楚標點的作用,好像說解釋變數不解釋變數

2.正常的語句使 ";" 就可以多個命令執行了 如 「cd /home; ls 」

3.a=$(ssh $i 'ls -ilt `find /opt -name eth1`'|wc -l) 這邊 加引號可能會出錯。

over

[root@localhost opt]# cat dd.log 

統計顯示

192.168.56.122

69218268 -rw-r--r--. 1 root root 0 may  7 06:18 /opt/tt1/eth1

36713854 -rw-r--r--. 1 root root 0 may  7 06:14 /opt/tt/eth1

102453462 -rw-r--r--. 1 root root 0 may  7 05:18 /opt/rh/eth1

----done~-----

sun may 7 07:09:58 edt 2017

192.168.56.121

102453462 -rw-r--r--. 1 root root 0 may  7 05:18 /opt/rh/eth1

----done~-----

sun may 7 07:09:58 edt 2017

個數統計

192.168.56.122 的總計為:  3

----done~-----

sun may 7 07:10:01 edt 2017

192.168.56.121 的總計為:  1

----done~-----

sun may 7 07:10:04 edt 2017

總計4 

寫個shell檢測多台機器磁碟

將需要檢測的機器的ip統一touch到乙個檔案裡面,此處我們命名為 linux server list.config 然後寫shell就ok了 shell如下 檔名 diskcheck.sh 用途 批量檢查磁碟空間 cd diskcheck 刪除之前已經存在的檔案 rm rf df all grep...

關於登陸shell和非登陸shell的區別

問題描述 實驗室有一台用於linux教學用的機器,為每乙個學生在上面建了乙個使用者,作為上課用的。而我呢,正在做vlsi實驗。因為那台機器持久開著,所以我為了方便就在上面也建了乙個使用者,用於vlsi實驗。cadence環境是在csh下的。但是管理員給我建的使用者預設的是bash環境,我又沒有超級使...

Linux多台主機互相免密登陸

一 原理 我們使用ssh keygen在a主機上生成私鑰和公鑰,將公鑰的內容貼上到b主機的authorized keys檔案內,就可以在a主機上使用ssh命令,不使用密碼登陸b主機。二 操作步驟 node1.ambari.com node2.ambari.com各個主機均執行以下操作 生成金鑰對 s...