Unix: как тестировать Ip-адрес разрешен для имен

Unix: Как проверить IP-адрес разрешено для имени.

Мне нужно проверить, может ли IP-адрес быть разрешен для имени, используя запись DNS через сценарий оболочки.

Код:

DNS_Lookup() { LOOKUP=$(nslookup $1) FAIL_COUNT=$(echo $LOOKUP | grep "** server can't find " | wc -l); if [ $FAIL_COUNT -eq 1 ];then echo "Unable to resolve DNS for $1" else echo "IP:$1 DNS Name:$(echo $LOOKUP | grep -v nameserver | cut -f 2 | grep name | cut -f 2 -d "=" | sed 's/ //')" return 0 fi } DNS_Lookup 192.168.27.191 

Вышеприведенный код не работает во всех возможных случаях. ОС: CentOS

  • Гауссовский, который запускается с nohup на удаленной машине Linux, убивается, когда локальный компьютер отключается до выхода оболочки
  • grep переменная в выражении if
  • Ошибка ./c.sh: строка 24: [: слишком много аргументов в программе оболочки
  • Перенос прав доступа от root к постоянному пользователю
  • Как узнать, сколько бит файла имеет одна команда?
  • Выполнение команды оболочки из PHP с помощью shell_exec
  • Как определить, когда оболочка принадлежит удаленному сеансу SSH?
  • Как запустить процесс linux и вернуться к нему позже?
  • 2 Solutions collect form web for “Unix: как тестировать Ip-адрес разрешен для имен”

    Вы можете использовать команду getent с параметром hosts следующим образом:

     getent hosts www.google.com 

    И подсчитайте, сколько результатов получится:

     getent hosts www.google.com | wc -l 

    getent использует библиотеки Switch Name Service, чтобы выполнять различные запросы имен. Со вторым параметром вы можете определить, какой тип db вы хотите найти. Проверьте man getent для деталей.

    Показаны два возможных подхода, которые переносимы.

     #!/bin/sh reverseDNS=$(host 8.8.8.8) if [ $? != 0 ]; then printf '%s\n' "Reverse DNS [FAILED]" else printf '%s\n' "Reverse DNS [OK]" fi ###### nslookup ########## nslookup_func(){ nslookup=$(nslookup google.com) if [ "$nslookup" = ";; connection timed out; no servers could be reached" ]; then printf '%s\n' "nslookup [FAILED]" else printf '%s\n' "nslookup [OK]" fi } nslookup_func 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.