シェルスクリプト - サーバーのリストからフォルダをpingして作成します。

シェルスクリプト - サーバーのリストからフォルダをpingして作成します。

サーバーリストにpingを送信するスクリプトを作成しようとしていますが、結果をテキストファイルに記録してから、サーバーリストにフォルダーを作成します。

FILENAME="hosts"

while IFS='' read -r LINE || [[ -n "$LINE" ]]; do    
ping -c 3 $LINE >>/home/user/scripts/results.txt
sshpass -p 'P@ssword' ssh$LINE 'cd/home/user/Desktop;mkdir test'
echo
done < "/home/user/scripts/servers.txt"

pingは正常に機能しますが、フォルダを作成するコマンドを追加すると、最初のサーバーのping結果のみが表示され、最初のサーバーにフォルダが作成されます。

どんなアイデアがありますか?

ベストアンサー1

ssh標準入力を読みます。これはループの標準入力を継承しますwhile。これは、ファイルの残りの行をすべて食べることを意味します。

ssh -nこの問題は、リダイレクトされた標準入力を使用して/dev/null簡単に解決できますssh

#!/bin/sh

while IFS= read -r addr || [ -n "$addr" ]; do    
    ping -c 3 "$addr" 
    sshpass -p 'P@ssword' ssh -n "$addr" 'mkdir Desktop/test'
    echo
done < "$HOME/scripts/servers.txt" >"$HOME/scripts/results.txt"

おすすめ記事