ping_hostnames.sh
私はファイルのIP /ホスト名のリストを繰り返しhostnames.txt
pingする非常に簡単なスクリプト()を作成しました。
#!/bin/bash
hostnameCount=`cat hostnames.txt | wc -l`
i=1
while [ $i -le $hostnameCount ]
do
ping -c 3 $(sed -n ${i}p hostnames.txt)
i=$(( i+1 ))
done
それからこれを行います。
cat file_with_ip_list.txt >> hostnames.txt
これで、hostnames.txt
次のようになります。
192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3
その後、スクリプト(./ping_hostnames.sh
)を実行するとエラーが発生します。
: Name or service not known
file_with_ip_list.txt
ただし、テキストエディタを使用して手動でデータをコピー/貼り付けるとhostnames.txt
正常に動作します。どのタイプ変換が進行中ですかcat
?
答え1
@steeldriverがコメントでこれに返信しました「見えない」CRLF行の終わりが問題を引き起こし、今知っているので、この問題を解決するために使用できるいくつかの回避策があります。また、私のコードを改善するのに役立つコメントの他の人にも感謝します! BASHの完全初心者ではありませんが、まだ学ぶべきことがたくさんあります!
答え2
これがhostname.txtで機能することを確認してください。おそらく、wc -l
行数を1またはそれに近いものに減らしてください。
for f in $(cat hostnames.txt); do ping -c 3 ${f}; done