Как сделать ping со временем результата?

Автор Leo, 16 марта 2014, 17:16:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Leo

Вопрос банальный - нужно чтобы команда пинг выводила временную метку результата пинга, т.е. перед стандартным выводом - была дата и время. Стандартных средств у программы ping для этого не нашлось (кроме опции -D, которая выводит нечитаемый результат), поэтому пришлось поискать в интернетах. Нашлось несколько решений, я приведу здесь два, на мой взгляд более оптимальных:

1. Чистый bash-скрипт:

ping 8.8.8.8 | while read pong; do echo "$(date): $pong"; done


2. Конвейер с использованием awk (про awk написано тут или тут), для того чтобы работал этот вариант должны быть установлены пакеты mawk и gawk:

ping 8.8.8.8 | awk '{if($0 ~ /bytes from/){print strftime()": "$0}else print}'


Обе команды выдают результат подобный этому:

Вс мар 16 17:07:26 MSK 2014: 64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=72.0 ms

endru

#1
доработанные варианты bash от меня:
1.1 дата и время цифрами:
ping 8.8.8.8 | while read pong; do echo "$(date "+%Y-%m-%d %H:%M:%S"): $pong"; done
или
ping 8.8.8.8 | while read pong; do echo "$(date "+%F %T"): $pong"; done
Вывод
2014-03-17 10:08:41: 64 bytes from 8.8.8.8: icmp_req=1 ttl=47 time=104 ms
[свернуть]
1.2 просто время:
ping 8.8.8.8 | while read pong; do echo "$(date "+%H:%M:%S"): $pong"; done
или
ping 8.8.8.8 | while read pong; do echo "$(date "+%T"): $pong"; done
Вывод
10:11:06: 64 bytes from 8.8.8.8: icmp_req=1 ttl=47 time=106 ms
[свернуть]