С awk
:
awk 'BEGIN{OFS=FS="|"} {$2="XYZ"; $0=$0"|"FILENAME"|SUCCESS"}1' mdd.txt
Где:
BEGIN {}
выполняется только в начале, а не для каждой строки. OFS = FS = "|"
устанавливает разделитель полей ввода и вывода на |
. $ 2 = "XYZ"
устанавливает для второго поля значение XYZ
$ 0 = ...
добавляет ко всей строке FILENAME
(из awk
внутренние переменные) и УСПЕХ
в виде строки. Файлы /proc/net/*
генерируются ядром :записи находятся в net/ipv4/proc.c
в исходном коде ядра, а список записей находится в include/uapi/linux/snmp.h
. Он берет значения из различных баз данных MIB, хранящихся в ядре.
Согласно заголовочному файлу snmp.h
, определения MIB взяты из следующих документов:
draft-ietf-ipv6-rfc2011-update-10.txt
:MIB для IP :Таблицы статистики IP ActiveOpens
взято из RFC 1213 (, стр. 47 ):
tcpActiveOpens OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The number of times TCP connections have made a
direct transition to the SYN-SENT state from the
CLOSED state."
::= { tcp 5 }
Если вы не можете найти запись netstat
в RFC, вам придется поискать. Многие пункты в этих документах подробно не перечислены. Если вам нужно больше, чем краткое изложение, вам придется поискать в исходном коде ядра некоторые записи, которые вы описали.
EmbryonicRsts
изменен в net/ipv4/tcp_minisocks.c
, в строке 796 в Linux 4.16 по крайней мере и, по-видимому, считает недопустимые сбросы SYN для не -быстро открытых соединений . Это, вероятно, не произойдет, если вы не находитесь в потоке файлов cookie SYN.