Использование регулярного выражения для поиска IP-адреса в stndout, который переносится на следующую строку - PullRequest
0 голосов
/ 28 июня 2018

У меня есть скрипт Python, который входит в брандмауэр PaloAlto и блокирует или удаляет IP-адрес из группы адресов. Затем он выполняет «проверку» того, что действие произошло, используя сопоставление re.shearch из выходных данных с соответствующим IP-адресом, чтобы проверить, было ли действие успешным.

Я столкнулся с проблемой, когда получаю противоречивые или неправильные результаты, потому что при поиске стандартного вывода из брандмауэра длина терминала ssh приводит к переносу текста на следующую строку.

Ниже приведен пример вывода брандмауэра.

[Blocked IPS] 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 19
2.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.16
8.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.1
68.1.15 192.168.1.16 192.168.1.17 192.168.1.18 192.168.1.19 

Ниже приведен мой простой поиск, в котором я ищу IP-адрес в выходных данных брандмауэра.

re.search(ipAddress, output):

Вы можете видеть мою дилемму. Если я ищу «192.168.1.5» или «192.168.1.10», то произойдет сбой из-за переноса текста в вывод.

Мне нужно регулярное выражение, которое будет отображать всю строку, даже если оно переносится на следующую строку, но я не смог создать или найти что-либо, что работает.

Я работаю в Python только около года и в значительной степени самоучка. Я только начал использовать регулярные выражения.

Заранее спасибо за помощь этого новичка!

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете сначала удалить всю новую строку как:

ipaddress = ipaddress.replace('\n','')

Итак, фрагмент кода ниже:

ipaddress = "[Blocked IPS] 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 19\n2.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.16\n8.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.1\n68.1.15 192.168.1.16 192.168.1.17 192.168.1.18 192.168.1.19";
ipaddress = ipaddress.replace('\n','')
print ipaddress

даст такой вывод:

[Blocked IPS] 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.16 192.168.1.17 192.168.1.18 192.168.1.19

и затем вы можете использовать ниже регулярное выражение:

([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})

Демо: https://regex101.com/r/1bfAdJ/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...