Предположим, мы транспонируем данные с помощью BSD rs
:
$ rs -T
a b c d e f g h
1 2 3 4 5 6 7 8
[Ctrl-D][Enter]
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
Теперь у нас есть два длинных столбца, восприимчивые к awk
обработка. Мы можем просмотреть данные и собрать пару строк из $ 1
и $ 2
. Когда NR
по модулю желаемый размер строки равен нулю, мы выводим накопленные строки.
$ awk '{ hdrs = (hdrs ? hdrs OFS $1 : $1);
vals = (vals ? vals OFS $2 : $2); }
!(NR % 3) { print hdrs; print vals;
hdrs = vals = "" }
END { print hdrs; print vals; }'
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
[Ctrl-D][Enter]
a b c
1 2 3
d e f
4 5 6
g h
7 8
Если требуется другая форма вывода, такая как следующая (индивидуально упакованные заголовки и значения в соответствии с шаблоном), несложно извлечь это из кода Awk:
a b c
d e f
g h
1 2 3
4 5 6
7 8
Хорошо, теперь фактические данные беспорядочные, потому что у него есть заголовки полей, разделенные несколькими пробелами, и они сами содержат пробелы.
Предполагая, что поля содержат только отдельные внутренние пробелы и всегда разделяются несколькими пробелами, мы можем предварительно обработать данные для замены внутренних пробелов непробельным символом (который еще не встречается в данных ), например тильда ( ~
). Например, с помощью Sed:
$ sed -e 's/\([^ ]\) \([^ ]\)/\1~\2/g'
foo bar xyzzy quux alpha beta gamma delta
[Ctrl-D][Enter]
foo~bar xyzzy~quux alpha~beta gamma delta
Обратную фильтрацию легко выполнить с помощью
tr '~' ' '
ss
поможет вам узнать, что это за процесс, использующий этот порт
hafw1:~# ss -tapn | grep ":22"
LISTEN 0 128 :::22 :::* users:(("sshd",9828,4))
LISTEN 0 128 *:22 *:* users:(("sshd",9828,3))
ESTAB 0 0 my_ip:59233 dest:22 users:(("ssh",1625,3))
Где:
-t
: только TCP -a
: Показать порты и сокеты -p
: информация о процессах -n
: не разрешать имена портов Теперь просто замените значение grep на : 554
, и вы сможете найти информацию о своем загадочный процесс. Что должно помочь вам в дальнейшем расследовании этого вопроса, так это запустить watch
на каждом сервере, на котором вы столкнулись с этой проблемой открытого порта, и снова запустить nmap:
watch -n 1 ss -tapn \| grep ":554"
Если вы не видите открытого порта, это может быть случай, когда некоторые люди сообщают, что этот порт открыт на маршрутизаторах Apple Time Capsule , которые пытаются проксировать этот трафик внутри вашей сети.
Я, наверное, далеко отсюда, но я все равно отправлю сообщение.
Поиск порта 554 в списке назначения портов IANA показывает, что и TCP, и UDP 554 используются «протоколом потоковой передачи в реальном времени». Кроме того, он показывает точку контакта, используя адрес электронной почты @ prognet.com.
Доменное имя не загружает веб-сайт, но поиск prognet.com в whois показывает, что оно принадлежит RealNetworks, а его серверы имен являются различными A-записями real.com.
Затем мне пришлось зайти на real.com, чтобы вспомнить, что это было ... RealPlayer!
Я предполагаю, что RealPlayer использует «протокол потоковой передачи в реальном времени». Происходит ли потоковая передача мультимедиа вообще в вашей среде? В противном случае, как я уже сказал, я, вероятно, ошибаюсь, и что-то еще, что просто случайно использует порт 554.
Если ваше сетевое соединение проходит через маршрутизатор, я бы проверял, открыт ли порт 554 на маршрутизаторе. Если это так, вероятно, легко просто снять флажок «Протокол потоковой передачи в реальном времени» (или аналогичный) в настройках маршрутизатора.