Вернуть 1, если выходные данные команды пусты, но не записаны

Вы можете использовать tcpdump -n icmp для фильтрации запросов ping и ответов. Я добавил переключатель -n , чтобы предотвратить поиск имени. У вас может быть несколько интерфейсов на вашем хосте, поэтому может потребоваться добавить переключатель -i ethX , чтобы указать правильный интерфейс.

Обратите внимание, что фильтр - в данном случае icmp - должен быть последней частью команды.

3
24.03.2018, 20:10
2 ответа

Честно говоря, я думаю, что | grep ''просто отлично. Вы уже использовали кучу программ в конвейере, так что не помешает еще одна. И вы уже знаете, что делает grep, так что нет никакой отладки в отношении написания какого-то «умного» фрагмента оболочки для этого.

В комментариях упоминается также | grep., что может быть еще одной возможностью. grep.не соответствует пустой строке, grep ''соответствует, поэтому выбирайте в зависимости от того, какой из них вы хотите.

Тем не менее, использование grepтаким образом может быть неочевидным для случайного читателя, поэтому в любом случае вы можете добавить комментарий о его назначении.

1
27.01.2020, 21:30

Я думаю, это должно сработать:

[ -n "$(command | tee /dev/tty)" ]

teeотправит вывод commandкак на стандартный вывод (, где он оценивается командой test), так и на ваш терминал (/dev/tty), чтобы вы могли видеть вывод, не записывая его в переменную.

Насколько я знаю, это POSIX -совместимое решение.

0
27.01.2020, 21:30

Теги

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