Я читал о нескольких решениях для преобразования имен хостов в IP-адрес в сценарии Bash с использованием либо dig, getent, host, and nslookup
, к сожалению, ни один из этих инструментов не может преобразовать имя хоста в IP-адрес в Cisco APIC bash.
https://unix.stackexchange.com/a/20793/349707
Единственный инструмент, работающий для этой цели - ping
.
С помощью этого скрипта я смог определить, работает ли хост или нет. Однако я не могу получить IP-адрес в выводе.
user@CiscoAPIC> cat script01.sh
#!/bin/bash
date
cat host.txt | while read h
do
ping -c 1 "$h" > /dev/null
if [ $? -eq 0 ]; then
echo "$h is up"
else
echo "$h is down"
fi
done
user@CiscoAPIC>
Вывод для script1.sh
user@CiscoAPIC> ./script1.sh
Mon May 6 10:14:20 UTC 2019
Nexus01 is down
Nexus02 is up
user@CiscoAPIC>
Понимая, что при использовании > /dev/null
IP не создается, я удалил его на script2.sh
user@CiscoAPIC> cat script2.sh
#!/bin/bash
date
cat host.txt | while read h
do
ping -c 1 "$h"
if [ $? -eq 0 ]; then
echo "$h is up"
else
echo "$h is down"
fi
done
user@CiscoAPIC>
К сожалению, слишком много ненужных выходных данных.
user@CiscoAPIC> ./script2.sh
Mon May 6 10:15:27 UTC 2019
PING Nexus01 (10.1.1.1) 56(84) bytes of data.
--- Nexus01 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
Nexus01 is down
PING Nexus02 (10.1.1.2) 56(84) bytes of data.
64 bytes from Nexus02 (10.1.1.2): icmp_seq=1 ttl=64 time=0.132 ms
--- Nexus02 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.132/0.132/0.132/0.000 ms
Nexus02 is up
user@CiscoAPIC>
Затем я добавил | head -1 | cut -d ' ' -f3 | tr -d '()'
, чтобы удалить ненужные, но окончательный вывод не так хорош.
user@CiscoAPIC> cat script3.sh
#!/bin/bash
date
cat host.txt | while read h
do
ping -c 1 "$h" | head -1 | cut -d ' ' -f3 | tr -d '()'
if [ $? -eq 0 ]; then
echo "$h is up"
else
echo "$h is down"
fi
done
user@CiscoAPIC>
Вывод для script3.sh
user@CiscoAPIC> ./script3.sh
Mon May 6 10:17:42 UTC 2019
10.1.1.1
Nexus01 is down
10.1.1.2
Nexus02 is up
user@CiscoAPIC>
Пожалуйста, дайте мне знать, что является лучшим решением для получения следующего вывода на Bash только с помощью ping, так как другие инструменты не работают должным образом в этой конкретной системе.
Желаемый выход
Mon May 6 10:17:42 UTC 2019
Nexus01 - 10.1.1.1 is down
Nexus02 - 10.1.1.2 is up