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

  • Показать повторяющиеся файлы
  • Как получить доступ к папкам Windows из Bash на Ubuntu в Windows
  • Как переупорядочить папки? (Как показано в `ls -U`)
  • Как я могу исправить свой пользовательский PS1 для переноса длинной команды на несколько строк вместо одной строки?
  • Как получить git-completion.bash для работы в Mac OS X?
  • Что делает «источник»?
  • Есть идеи?

  • Почему Ctrl + V не вставляется в Bash (оболочка Linux)?
  • Выполнение команд параллельно с ограничением одновременного количества команд
  • Как добавить команду «tree» в git-bash в Windows?
  • Как найти адрес моего DNS-сервера в Windows 7
  • Как я могу запустить несколько сеансов экрана автоматически?
  • Как gzip несколько файлов в один файл gz?
  • 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 .

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