Что касается эфемерных портов:
The Internet Assigned Numbers Authority (IANA) suggests the range 49152 to 65535 (215+214 to 216−1) for dynamic or private ports. Many Linux kernels use the port range 32768 to 61000
Глядя на пункт назначения в кортеже TCP/IP, как в примере, который вы спрашиваете:
udp 0 0 192.168.1.25:41136 61.216.153.106:123
Вы можете видеть, что это текущая машина, использующая службу NTP UDP/123 на удаленном сервере.
Или это ваша машина отправляет запрос NTP на сервер NTP в Китае.
На самом деле все эти 4 строки — это подключения к серверам NTP в Китае.
Обычно в большинстве протоколов, когда служба известного порта находится на вашей стороне (первой ), вы обычно являетесь сервером, принимающим соединение, а эфемерный порт находится на правой стороне; когда наоборот, часто именно ваш сервер использует удаленную службу.
(Ваш сервер находится в Китае? В противном случае я бы беспокоился о возможном вредоносном ПО)
Вы также можете отключить -n
для разрешения IP-адресов/DNS и имен служб, однако имейте в виду, что это приводит к заметной задержке на машине/сервере с большим количеством подключений (и/или с медленным DNS служба ). Чтобы почувствовать разницу, я адаптировал исходный вывод netstat
для возможного вывода без-n
:
$netstat -a | grep ESTABLISHED
udp 0 0 mylinux:41136 vns1.hinet.net:ntp ESTABLISHED
udp 0 0 mylinux:59141 DNS1.SYNET.EDU.CN:ntp ESTABLISHED
udp 0 0 mylinux:53680 rdns1.alidns.com:ntp ESTABLISHED
udp 0 0 mylinux:34255 ns1.htudns.com:ntp ESTABLISHED
Вы правильно догадались, что 0
— это код возврата из вашей команды оболочки. os.system(cmd)
выполняет вашу команду и выводит результат, а затем код возврата сохраняется в event_id
и распечатывается.
Вместо этого следует использовать модуль subprocess
.
import subprocess
cmd = "/path/to/ctl so list | tail -1 | awk '{print $1}'"
event_id = subprocess.check_output(cmd, shell=True).rstrip()
print(event_id)