Ping server / domain и захватить его IP-адрес в Linux

В Windows вы можете выполнить ping заданное имя домена и захватить IP как переменную, даже если ответ не получен. Я считаю, что команда выглядела примерно так:

ping domain.com for /f "tokens=1,2 delims=[]" %%A in ('ping /n 1 /w 1 domain.com ^| find "Pinging"') do set ipaddress=%%B"` 

Это в основном то, что я пытаюсь сделать, но в сценарии bash, а не в пакетном файле. Я наткнулся на множество вопросов, которые действительно близки, но не совсем то, что я ищу. Кажется, я не могу понять, как это сделать.

Есть идеи?

  • Не удается разрешить хост или доступ к веб-сайту через маршрутизатор
  • Почему pinging 192.168.072 (всего 2 точки) возвращает ответ от 192.168.0.58?
  • Не удается разрешить хост или доступ к веб-сайту через маршрутизатор
  • Pinging собственной машины возвращает IPv6-адрес вместо IPv4
  • Как я могу выполнить ping через альтернативный шлюз?
  • Почему я не могу написать себя по адресу: MyEmail@74.125.235.55?
  • Как действительно работает команда «ping»?
  • Не способен к серверу ping или но может RDP
  • One Solution collect form web for “Ping server / domain и захватить его IP-адрес в Linux”

    Это должно работать из командной строки или скрипта:

     ip=$(ping -c 1 www.google.com | gawk -F'[()]' '/PING/{print $2}') echo $ip 173.194.34.19 

    ОБЪЯСНЕНИЕ

    Сначала выводится вывод команды ping :

     $ ping -c 1 www.google.com PING www.google.com (173.194.40.209) 56(84) bytes of data. 64 bytes from par10s12-in-f17.1e100.net (173.194.40.209): icmp_req=1 ttl=52 time=49.8 ms --- www.google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 49.874/49.874/49.874/0.000 ms 
    • ip=$(COMMAND) : назначить вывод COMMAND переменной $ip .
    • ping -c 1 www.google.com : ping google, один раз.
    • gawk – мощный скриптовый язык, который обрабатывает ввод строки за строкой и поля по полю.
    • -F'[()]' : -F устанавливает полевые разделители gawk . Здесь мы устанавливаем его в класс символов ( [ ] ), в частности для открытия и закрытия круглых скобок. Это означает, что все до первого ) или ( будет первым полем, которое в gawk равно $1 Нас интересует только первая строка, поэтому мы скажем gawk напечатать второе поле ( $2 ), которое является IP, только если Текущая строка содержит «PING» ( /PING/ ).

    Итак, результаты всего shebang сохраняются как ip которые затем можно назвать $ip .

    Interesting Posts
    Давайте будем гением компьютера.