import re
result = r"""Interface Status Protocol Description
BE1 up up
Mg0/RSP0/CPU0/0 up up NNI to Cat2960x G1/0/1
Te0/0/0/3 admin-down admin-down
Gi0/0/1/0 down down Test L2VPN
RP/0/RSP0/CPU0:LAB-9001-1#"""
p1 = re.compile(r'(?P<interface>[a-zA-Z0-9]\S*)\s+(?P<status>up|admin-down)\s+(?P<protocol>up|admin-down)(?:\s+(?P<description>.*))?')
for line in result.splitlines():
line = line.rstrip()
m = p1.match(line)
if m:
print(m.groups())
aW1wb3J0IHJlCnJlc3VsdCA9IHIiIiJJbnRlcmZhY2UgICAgICAgICAgU3RhdHVzICAgICAgUHJvdG9jb2wgICAgRGVzY3JpcHRpb24KQkUxICAgICAgICAgICAgICAgIHVwICAgICAgICAgIHVwICAgICAgICAgIApNZzAvUlNQMC9DUFUwLzAgICAgdXAgICAgICAgICAgdXAgICAgICAgICAgTk5JIHRvIENhdDI5NjB4IEcxLzAvMQpUZTAvMC8wLzMgICAgICAgICAgYWRtaW4tZG93biAgYWRtaW4tZG93biAgCkdpMC8wLzEvMCAgICAgICAgICBkb3duICAgICAgICBkb3duICAgICAgICBUZXN0IEwyVlBOClJQLzAvUlNQMC9DUFUwOkxBQi05MDAxLTEjIiIiCnAxID0gcmUuY29tcGlsZShyJyg/UDxpbnRlcmZhY2U+W2EtekEtWjAtOV1cUyopXHMrKD9QPHN0YXR1cz51cHxhZG1pbi1kb3duKVxzKyg/UDxwcm90b2NvbD51cHxhZG1pbi1kb3duKSg/OlxzKyg/UDxkZXNjcmlwdGlvbj4uKikpPycpCgpmb3IgbGluZSBpbiByZXN1bHQuc3BsaXRsaW5lcygpOgoJbGluZSA9IGxpbmUucnN0cmlwKCkKCW0gPSBwMS5tYXRjaChsaW5lKQoJaWYgbToKCQlwcmludChtLmdyb3VwcygpKQ==
('BE1', 'up', 'up', None)
('Mg0/RSP0/CPU0/0', 'up', 'up', 'NNI to Cat2960x G1/0/1')
('Te0/0/0/3', 'admin-down', 'admin-down', None)