Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 13, 2015 19:57:47

prnogod
Зарегистрирован: 2015-06-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с написанием простой программы

Здравствуйте. Возникла необходимость написать маленькую программу, но из-за того, что мои знания в программирование на python стремятся к нулю, а попытки прочитать учебник ограничивает время на сдачу этого поделия, решил обратиться к вам за помощью.

Имеется файл netstat.txt В файле записаны результаты команды netstat в cmd. Например:

Активные подключения

Имя Локальный адрес Внешний адрес Состояние
TCP 192.168.0.103:1658 lb-in-f188:5228 ESTABLISHED
TCP 192.168.0.103:2017 149.154.167.51:https ESTABLISHED
TCP 192.168.0.103:1658 lb-in-f188:5228 ESTABLISHED
TCP 192.168.0.103:2026 bud02s21-in-f3:https ESTABLISHED
Количество строк не известо.
Нужно отсортировать данные из колонки “Внешний адрес”. Сгруппировать повторения, расписать порты (вместо “https” написать "https порт:443).
level Nightmare!: каким-то образом отсортировать DNS сервера.

Вывод должен быть примерно такой:

Активные подключения

Адрес: lb-in-f188 порт: 5228
Адрес: lb-in-f188 порт: 5228
Адрес: 149.154.167.51 порт: 443 (https)
Адрес: bud02s21-in-f3(DNS) порт: 443 (https)

Покачто я считал файл в список

l=[]
f = codecs.open('netstat.txt', 'r', 'cp866')
for line in f:
	 l = f.read().splitlines()
Что мне следует предпринять дальше?

Офлайн

#2 Июнь 13, 2015 23:35:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите с написанием простой программы

>>> text = """\
... Активные подключения
... 
...   Имя    Локальный адрес        Внешний адрес          Состояние
...   TCP    192.168.0.103:1658     lb-in-f188:5228        ESTABLISHED
...   TCP    192.168.0.103:2017     149.154.167.51:https   ESTABLISHED
...   TCP    192.168.0.103:1658     lb-in-f188:5228        ESTABLISHED
...   TCP    192.168.0.103:2026     bud02s21-in-f3:https   ESTABLISHED
... """
>>> 
>>> def f1(s):
...     it = iter(s.splitlines())
...     return f2(it)
... 
>>> def f2(it):
...     for i in range(3):
...         next(it)
...     return f3(it)
... 
>>> def f3(seq):
...     return (tuple(i.split()[2].split(':', 1))
...             for i in seq)
... 
>>> list(f1(text))
[('lb-in-f188', '5228'), ('149.154.167.51', 'https'), ('lb-in-f188', '5228'), ('bud02s21-in-f3', 'https')]
>>>

prnogod
каким-то образом отсортировать DNS сервера.
dns-сервер из текста может быть определён только по порту 53 (dns).



Отредактировано py.user.next (Июнь 13, 2015 23:42:41)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version