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, а не в пакетном файле. Я наткнулся на множество вопросов, которые действительно близки, но не совсем то, что я ищу. Кажется, я не могу понять, как это сделать.

Есть идеи?

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

 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 .

  • Приложение Ping в Android
  • Устройство Ping за вторым интерфейсом того же маршрутизатора
  • Что я могу сделать для «ping flooding»?
  • Использование ping в c #
  • Как действительно работает команда «ping»?
  • Почему Wireshark не показывает пакеты высокого уровня, такие как ICMP / IP / UDP? (Отображаются только широковещательные пакеты)
  • Я не могу пинговать мой маршрутизатор с внешнего
  • Оставьте только две десятичные знаки после точки
  • Отрицательное время пинга?
  • Сохранить вывод Ping в текстовом файле
  • Не удается разрешить хост или доступ к веб-сайту через маршрутизатор
  • Давайте будем гением компьютера.