Я пытаюсь написать сценарий Bash, который знает о подключении к Интернету.
Как я могу этого достичь?
Например:
if (something that checks internet connection);then
curl -o new someurl
else
exit 1
Я пытаюсь написать сценарий Bash, который знает о подключении к Интернету.
Как я могу этого достичь?
Например:
if (something that checks internet connection);then
curl -o new someurl
else
exit 1
Попробуйте использовать команду curl
и проверить состояние выхода в операторе if
.
curl -D- -o /dev/null -s http://www.google.com
if [[ $? == 0 ]]; then
foocode
else
exit 1
fi
Я использовал snmp, когда у меня был маршрутизатор, который поддерживает его, чтобы получить IP, назначенный интерфейсу Wan (.253 был адресом маршрутизатора):
IP=$(/usr/bin/snmpwalk -v2c -Ov -cpublic 192.168.1.253 \
IP-MIB::ipAdEntAddr 2>/dev/null \
| /bin/grep -v "0.0.0.0\|127.0.0.1\|192.168.1.253")
Или, может быть, вы можете скопировать его со страниц статистики роутера с помощью curl.
В настоящее время вместо этого я использую, чтобы проверить / получить IP от службы, которую я использую для динамического DNS:
IP=$(curl -s 'http://checkip.dyndns.org' | sed 's/.*Current IP Address: \([0-9\.]*\).*/\1/g')
а потом:
if [ "$IP" != "" ] && [ "$IP" != "0.0.0.0" ]; then
# connected