Можно записать tcpdump
вывод к каналу и затем сохраняет его в другом месте. Я обновил Ваш фильтр BPF также.
tcpdump -w - host 10.10.10.10 | ssh host2 'cat - > `date +%F-%Hh-%Mm-%Ss-%N`.pcap'
Это запишет пакеты в stdout
, затем перепишите его ssh
соединение с другим хостом. Можно также изменить к лучшему его и выполнить его от другого хоста.
ssh router tcpdump -w - host 10.10.10.10 > `date +%F-%Hh-%Mm-%Ss-%N`.pcap
Если Ваш grep имеет его, попробуйте -A1
опция.
Похоже, что это не случай обертывания, но что запись находится на отдельной строке.
/usr/sbin/ss -i | grep -A1 <SOME_IP_ADD>
Посмотрите на Context Line Control
в man grep
.
Альтернатива должна была бы использовать
-P Perl-regex
-z suppress-newline
-o print only matching
как в:
ss -i | grep -Pzo '.*IPADDRESS.*\n.*'
Затем Вы не получите окружающих тире, которых дает контекст.
Альтернатива могла быть sed:
sed -n '/IPADDRESS/{N;p}'
# Or joining the two lines by:
ss -i | sed -n '/IPADDRESS/N;s/\n/ /p'
awk:
awk '/IPADDRESS/{print; getline; print}'
# Or as joined lines:
awk '/IPADDRESS/{printf "%s ", $0; getline; print}'
ts sack ...
строка помещается ниже ESTAB ...
строка, потому что, именно так ss
всегда форматирует этот тип информации. Это не переносится в строку. Можно включать обе строки в grep
при помощи -A1
флаг:
ss -i | grep <IP ADDRESS> -A1
Можно объединить каждое соответствие к одной строке путем передачи его через a sed
команда:
ss -i | grep <IP ADDRESS> -A1 | sed '/^--$/d;N;s/\n/ /g'
sed '/--/d;N;s/\n/ /'
вместо этого.
– Runium
24.04.2013, 04:31