Я пишу сценарий bash, чтобы пропинговать заданное имя хоста и показать, активен ли хост (отобразить простое сообщение.) Должно быть легко, но вместо этого головная боль.
Вот что у меня есть до сих пор:
echo & echo "DOI (Domain):" &&read input
ip=$(ping -c 1 $input | gawk -F'[()]' '/PING/{print }')
if [ $? -eq 0 ]; then
echo "$ip is up";
else
echo "host is down";
fi
sleep 60
вот вывод:
Успешный пинг (&ответить), он отвечает:
74.125.226.119 is up
однако, на отказ получить ответ он все еще отвечает:
ping: unknown host google.ccccaa
is up
, а не Эхо "узел вниз"
очевидно, у меня что-то упустил. Я ненавижу задавать такие вопросы, и я уверен, что ответ уже скрывается где-то здесь, но снова я нахожусь в тупике и не могу найти то, что ищу. Я даже не совсем уверен, что именно я ищу.
EDIT: решено! Большое спасибо за полезный совет!
в итоге:
echo & echo "DOI (Domain):" &&read input
output=$(ping -c 1 "$input" 2>/dev/null)
if [ $? -eq 0 ]; then
ip=$(printf '%s' "$output" | gawk -F'[()]' '/PING/{print }' 2>/dev/null )
echo "$input ($ip) is up";
else
echo "Host not found";
fi
sleep 60