linux как регистрировать все ответы ping

  1. Вместо массива используйте set -- file1 file2...для заполнения списка параметров, затем используйтеbashпреобразование параметров с операторомQuote :

    set -- 'a "b' c "d 'e" "f 'g "'"h' ; (set -x; printf 'cmd %s\n' "${*@Q}")
    

    Выход:

    + printf 'cmd %s\n' ''\''a "b'\'' '\''c'\'' '\''d '\''\'\'''\''e'\'' '\''f '\''\'\'''\''g "h'\'''
    cmd 'a "b' 'c' 'd '\''e' 'f '\''g "h'
    

    Или, если мы удалим часть set -x;, вывод станет:

    cmd 'a "b' 'c' 'd '\''e' 'f '\''g "h'
    
  2. Комментарий от LL3предлагает лучший способ, который не требуетset --...:

    export x; n=(a "b 'c"); x="${n[@]@Q}"
    ( n=($x); printf 'cmd %s\n' "${n[*]}"; )
    

    Выход:

    cmd 'a' 'b '\''c'
    
  3. Еще один метод заключается в использованииbashпреобразования параметров с операторAssignment , (которому также требуетсяeval):

    export x;n=(a b 'c d');x="${n[@]@A}"; (eval "$x";printf '%s\n' "${n[@]}")
    

    Вывод, показывающий, что видит printf:

    a
    b
    c d
    
0
31.03.2021, 18:53
2 ответа

Сначала убедитесь, что tcpdump установил вашу систему. Затем создайте файл сценария и добавьте следующую команду в файл сценария.

sudo tcpdump -i ethX icmp and icmp[icmptype]=icmp-echo >> ping.log

Затем добавьте этот скрипт в cronjob.

2
28.04.2021, 22:54

вот то, что я решил сделать, и это работает достаточно хорошо для меня.

см.man tcpdump

tcpdump  -U  -i eth0   icmp and icmp[icmptype]=icmp-echo   -C 10   -w /root/ping_`date '+%Y%m%d_%H%M'`.log &

это сохраняется в двоичный файл журнала в соответствии с -wс датой и временем, добавленным к имени файла журнала, когда файл журнала был запущен.

-Cограничивает файл журнала до #мегабайт

-Uважен, потому что он вызывает сброс в файл, без него вы никогда не увидите содержимое в /root/ping.log , пока не нажмете Ctrl -C tcpdump.

Чтобы прочитать журнал проверки связи, который находится в двоичном формате, требуется tcpdump, что легко сделать с помощью

tcpdump  -r <log file>  -tttt

tcpdump  -r <log file>  -tttt -n

Мне не удалось заставить tsиз moreutils работать через канал. Также не работало перенаправление стандартного вывода из tcpdump через >>. Это на RHEL 7.9

Чтобы остановить этот фоновый процесс tcpdump, я выполняю ps -ef | grep tcpdump | grep root, чтобы определить его PID, а затем kill -9 <PID>.

0
28.04.2021, 22:54

Теги

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