@marataziat
Джангист-тракторист

Как лучше отбирать строчки с надписью Ubuntu?

Я создал скрипт:
with open('list.txt') as f:
	content = f.readlines()
	for word in content:
		if word.startswith('B'):
			g = word[25:43]
			g = g.replace("s", ' ')
			g = g.replace("h", ' ')
			g = g.replace(":", ' ')
			g = g.replace("[", ' ')
			g = g.replace("u", ' ')
			g = g.replace("n", ' ')
			g = g.replace("k", ' ')
			g = g.replace("f", ' ')
			g = g.replace("t", ' ')
			g = g.replace("p", ' ')
			g = g.replace("s", ' ')
			g = g.replace("g", ' ')
			g = g.replace("]", ' ')
			g = g.replace(" ", '')
			print g

Он берет файл list.txt, в нем может быть следующее содержание:
Discovered open port 22/tcp on 185.134.230.199
Discovered open port 22/tcp on 185.92.211.76
Discovered open port 22/tcp on 185.40.182.202
Banner on port 22/tcp on 185.25.204.99: [ssh] SSH-2.0-OpenSSH_5.3_Ubuntu
Discovered open port 22/tcp on 185.85.27.144
Discovered open port 22/tcp on 185.26.49.78
Мне нужно отобрать не просто строчки с написью Banner а чтоб там была надпись Ubuntu
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
longclaps
@longclaps
Так пойдёт:

if word.startswith('Banner') and word.endswith('Ubuntu'):

И разузнай, наконец, про регулярки:

R = re.compile(r'^Banner.*(?:[^\d])(([\d]{1,3}\.){3}\d{1,3}).*Ubuntu$')
with open('data.txt') as f:
    for s in f:
        m = R.match(s)
        if m:
            print(m.group(1))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Регулярки напрашиваются.
for line in f:
        if re.search(r'Ubuntu', line) :
            print(line.strip())
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы