私はスクリプトが欲しいです:
- IPアドレスのリストを見る
- pingアドレスの1つ
- データをインポートしてファイルに入れる
- 次のIPに移動
これまで私は以下を持っています:
cd /Path/to/addressees || exit 1
for targethost in a b c; do
{ping {targethost}
echo $'\n'"finished:
} >"$log_file" 2>&1
done
これを実行するとエラーが発生します。
./ping_address: line 3: cd: /path/to/ip_adress: No such file or directory
./ping_address: line 7: unexpected EOF while looking for matching `"'
./ping_address: line 8: syntax error: unexpected end of file
私はまだUnixスクリプトに慣れていないので、どんな助けでも大きな助けになります!
答え1
いくつか:
- ファイルにCDを挿入することはできません(テストを使用して
-f
ファイルが存在することを確認できます。以下を参照)。 - 「ab c」を使ったのか分からない。この変数にはアドレスを含める必要がありますか?あなたのアドレスがスクリプトに含まれているのか、ファイルに保存されているのかはわかりません。
- 通常、変数を参照するには$が必要です(つまり、$では
${targethost}
ないtargethost
)、$
割り当てるときは省略されます。
それ以外の理由は何ですか(ip_addressesというファイルがあり、1行に1つのアドレスがあるか、スペースで区切られたアドレスがあるとします)。
#!/bin/bash
IP_FILE="/tmp/ip_address_file" # The file with the IP addresses
LOGFILE="/tmp/log_results" # Where the results will be stored
if [[ ! -f ${IP_FILE} ]]; then
echo "No File!"
exit 1
fi
for IP_ADDRESS in $(cat $IP_FILE); do
echo "TEST FOR ${IP_ADDRESS}" >> $LOGFILE
# The -c 1 means send one packet, and the -t 1 means a 1 second timeout
ping -c 1 -t 1 ${IP_ADDRESS} >> $LOGFILE 2>&1
done
または、各 IP のファイルを生成するには、次のように使用できます。
#!/bin/bash
IP_FILE="/tmp/ip_address_file" # The file with the IP addresses
if [[ ! -f ${IP_FILE} ]]; then
echo "No File!"
exit 1
fi
for IP_ADDRESS in $(cat $IP_FILE); do
echo "TEST FOR ${IP_ADDRESS}"
# The -c 1 means send one packet, and the -t 1 means a 1 second timeout
ping -c 1 -t 1 ${IP_ADDRESS} >> ${IP_ADDRESS}.log 2>&1
done
スクリプトに IP を含めるには:
#!/bin/bash
IPS='1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 5.5.5.5'
if [[ ! -f ${IP_FILE} ]]; then
echo "No File!"
exit 1
fi
for IP_ADDRESS in ${IPS}; do
echo "TEST FOR ${IP_ADDRESS}"
# The -c 1 means send one packet, and the -t 1 means a 1 second timeout
ping -c 1 -t 1 ${IP_ADDRESS} >> ${IP_ADDRESS}.log 2>&1
done
答え2
これよりはっきりしたことはありません:
/path/to/ip_adress
このディレクトリは、スクリプトを実行する前に作成する必要があります。"finished:
最後に「はありません。- 3番目のエラーは単に2番目のエラーの結果です。