Вы можете сделать это с 1 шаблоном регулярных выражений
pattern = re.compile('Description="(.*)" From="(.*)" Thru="(.*)" obj')
for founds in re.findall(pattern=pattern, string=string):
desc, frm, thru = founds
print(desc)
print(frm)
print(thru)
# ouput
# Get Metadata
# 2019-01-16 00:00
# 2019-01-16 23:59
Или вы можете сделать один и тот же шаг с разными шаблонами
pattern_desc = re.compile('Description="(.*)" From')
pattern_frm = re.compile('From="(.*)" Thru')
pattern_thru = re.compile('Thru="(.*)" obj')
re.findall(pattern_desc, string)
# output: ['Get Metadata']
re.findall(pattern_frm, string)
# output: ['2019-01-16 00:00']
re.findall(pattern_thru, string)
# output: ['2019-01-16 23:59']
[113 ] Используйте getsockname (), звонят для получения адреса сокета и порта после успешного соединения.
Править: корректное имя метода. Иногда я не могу скопировать простое слово от одного окна до другого!
Я верю тому предназначенному Darron getsockname()
. Это - то, что Вы хотите, если необходимо определить номер порта на стороне клиента (вызов стороны connect()
) программно. На стороне сервера (вызов стороны bind()
), Вы использовали бы getpeername()
получить ту же информацию от подключенного сокета.
Однако, если Вы отлаживаете и не можете изменить код, затем Вы заканчиваете тем, что использовали вещи как netstat или sockstat утилита в зависимости от операционной системы. Я не уверен, какие утилиты доступны в соответствии с Linux (или даже Ваш конкретный пакет), но я запустил бы с man sockstat
. Если это установлено, можно выполнить его с любой стороны и видеть, какие конечные точки были присвоены который процессы. Объедините это с grep
и можно обычно выяснять который адрес отфильтровать на в Эфирном.Удачи!