予測スクリプトを使用して複数のLinuxサーバーのディスク容量を監視する

予測スクリプトを使用して複数のLinuxサーバーのディスク容量を監視する

複数のサーバーを監視するためにExpectを使用してスクリプトを作成しようとしています。接続はパスワードを使用してSSHを介して行われます。

私のデフォルトループが自動的に失敗し、Expect TCL言語がLinux forループ構文を受け入れるかどうかはわかりません。

パスワード:

#!/usr/bin/expect -f  
server_list="/tmp/DR.txt"  
for HOST in $(cat $server_list) ; do  
spawn ssh -q $HOST  
expect "assword:"  
send "Abcd@123\r"  
interact  
echo ' '  
echo "====For space utilization details for server $HOST===" >/tmp/space_utilization.log  
Df -kh >> /tmp/space_utilization.log  
echo ' '  
done  

ファイルには、/tmp/DR.txt次の100個のサーバー名のリストが含まれています。

hzavks01  
dzavks20  
dzavks03  
uzavks05  
acavks30  

私が得るエラーは次のとおりです。

[root@dzavks20 tmp]# ./expect.sh  
invalid command name "server_list=/tmp/DR"  
    while executing  
"server_list=/tmp/DR"  
    (file "./expect.sh" line 2)  

ベストアンサー1

Expectを使用する必要がありますか? SSHを介してリモートでdfコマンドを実行し、情報を単一のファイルに収集する単純なbashシェルを持つことはできますか?

コールサーバーからすべてのサーバーへのSSHキーが設定ファイルに正しく設定されている場合は、パスワードを入力する必要はありません。次のループは、すべてのサーバーからdf出力を収集します。

while read -r h; do
    echo "=== Space utilization for ${h} ==="
    ssh "$h" df -kh
    echo ""
done </tmp/DR.txt >/tmp/space_utilization.log

おすすめ記事