Сценарий, который запрашивает маршрутизаторы cisco для извлечения выходных данных «show dmvpn» от маршрутизаторов концентраторов луча. Однако мы обновили маршрутизатор-концентратор, и новая IOS теперь показывает информацию о дате и времени для команды «show dmvpn». Предыдущие версии IOS отображают только «никогда», и при использовании сценария для более новых маршрутизаторов IOS возникают ошибки только из-за (\S+).
Я попытался прочитать о регулярных выражениях, однако не смог понять, как соединить [3x] слово/дату/время.
Работающий:
if(pregmatch("/^\s+\d+\s+(\d+\.\d+\.\d+\.\d+)\s+(\d+\.\d+\.\d+\.\d+)\s+(\S+)\s+(\S+)\s+(\S+)/",$line,$hit))
#show dmvpn
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 192.168.1.1 42.10.10.10 UP **never** DN
1 192.168.1.1 42.10.10.10 UP **never** DN
1 192.168.1.1 42.10.10.10 UP **never** DN
Не работает: регулярное выражение не работает на более новых IOS, которые фактически показывают дату/время для таймеров туннеля Up/Down:
#show dmvpn
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 192.168.1.1 42.10.10.10 UP **08:59:16** DN
1 192.168.1.1 42.10.10.10 UP **04:11:24** DN
1 192.168.1.1 42.10.10.10 UP **2d13h** DN
1 192.168.1.1 42.10.10.10 UP **3w0d** DN
1 192.168.1.1 42.10.10.10 UP **5d00h** DN
Я дошел до того, что предположил, что мне нужно добавить (\d+:\d+:\d+) рядом со 2-м последним (\S+) в коде, но не знаю, как их соединить, и также включил туда 3w0d и 5d00h .
Это похоже на простое исправление регулярных выражений, однако в настоящее время выходит за рамки моей области кодирования. Я также пытался найти ответ, но все продолжают использовать разную терминологию для «регулярных выражений» и «регулярных выражений».