サーバーリストに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"