Ubuntu 16.04 как использовать ping в скрипте bash, чтобы решить, следует ли пропускать блок кода

графическая карта Radeon, я думаю? :) install kernel 3.0.0. Вот что заставляет замораживать ошибки radeon на черно-белом экране. Перед обновлением ядра моя лучшая запись состояла из 15 перезагрузок подряд, прежде чем она могла правильно войти:)

3.0.0 является кандидатом на выпуск, однако, чтобы вы (по какой-то неизвестной причине) не захотели использовать он понизился до 2.6.35, тогда у него не было ошибки.

2
задан 11 August 2017 в 14:19

3 ответа

Кажется, вас интересует только статус выхода ping, т. е. вы получаете ICMP ECHO_RESPONSE от хоста до вашего ECHO_REQUEST; вы можете просто сделать ping -c 1 ... и ping выйти со статусом 0, если хост отправляет ответ, 1, если нет ответа, и 2 для неизвестного хоста.

Вы можете легко использовать это с конструкцией if; вам не нужно считать ответ, просто используйте ping как условие if, так как if будет оценивать состояние выхода ping, чтобы перейти к любой определенной ветке:

if ping -c 1 SOLAR &>/dev/null; then
    ## Reachable -- do stuffs
else
    ## Unreachable -- do other stuffs
fi
[d2 ] Я перенаправляю потоки STDOUT и STDERR ping в /dev/null, поскольку нас это не интересует.

2
ответ дан 22 May 2018 в 19:34
  • 1
    Таким образом, оператор if будет оценивать успех или неудачу, и мне не нужно проверять числовое возвращаемое значение, а? Это короткий и сладкий - именно то, что я искал. Спасибо. – SDsolar 11 August 2017 в 08:34
  • 2
    @SDsolar Прочитайте его как if true (статус выхода не похож на возвращаемое значение BTW). $() называется подстановкой команд, она имеет конкретные варианты использования, но не нужна здесь. – heemayl 11 August 2017 в 08:35
  • 3
    Еще раз спасибо @heemayl. Ты мне очень помог. У меня была программа полуночи, напишите мне файл журнала, и каждый день нужно внимательно следить за ним, чтобы поймать аномалии. Теперь я получаю уведомления по электронной почте только о тех сенсорах, которые нуждаются в тонкой ТСХ. Это ОГРОМНОЕ улучшение. TNX AGN. – SDsolar 12 August 2017 в 06:29
  • 4
    @SDsolar Отлично. Рад, что смог помочь :) – heemayl 12 August 2017 в 11:02

Кажется, вас интересует только статус выхода ping, т. е. вы получаете ICMP ECHO_RESPONSE от хоста до вашего ECHO_REQUEST; вы можете просто сделать ping -c 1 ... и ping выйти со статусом 0, если хост отправляет ответ, 1, если нет ответа, и 2 для неизвестного хоста.

Вы можете легко использовать это с конструкцией if; вам не нужно считать ответ, просто используйте ping как условие if, так как if будет оценивать состояние выхода ping, чтобы перейти к любой определенной ветке:

if ping -c 1 SOLAR &>/dev/null; then ## Reachable -- do stuffs else ## Unreachable -- do other stuffs fi

Я перенаправляю потоки STDOUT и STDERR ping в /dev/null, поскольку нас это не интересует.

2
ответ дан 18 July 2018 в 08:42

Кажется, вас интересует только статус выхода ping, т. е. вы получаете ICMP ECHO_RESPONSE от хоста до вашего ECHO_REQUEST; вы можете просто сделать ping -c 1 ... и ping выйти со статусом 0, если хост отправляет ответ, 1, если нет ответа, и 2 для неизвестного хоста.

Вы можете легко использовать это с конструкцией if; вам не нужно считать ответ, просто используйте ping как условие if, так как if будет оценивать состояние выхода ping, чтобы перейти к любой определенной ветке:

if ping -c 1 SOLAR &>/dev/null; then ## Reachable -- do stuffs else ## Unreachable -- do other stuffs fi

Я перенаправляю потоки STDOUT и STDERR ping в /dev/null, поскольку нас это не интересует.

2
ответ дан 24 July 2018 в 19:09

Другие вопросы по тегам:

Похожие вопросы: