我需要过滤在网络设备中执行的命令的输出,以便仅显示与“ 10.13.32.34”之类的文本匹配的行。 我创建了一个python代码,可带走命令的所有输出,但我只需要其中的一部分。
我正在Windows 10 Pro上运行Python 3.7.3。
我使用的代码如下,我需要过滤部分,因为我是一位网络工程师,没有python编程的基本概念。 (到现在为止...)
from steelscript.steelhead.core import steelhead
from steelscript.common.service import UserAuth
auth = UserAuth(username='admin', password='password')
sh = steelhead.SteelHead(host='em01r001', auth=auth)
from steelscript.cmdline.cli import CLIMode
sh.cli.exec_command("show connections optimized", mode=CLIMode.CONFIG)
output = (sh.cli.exec_command("show connections optimized"))
答案 0 :(得分:1)
我不知道您的输出是什么样子,因此将问题中的文本用作示例数据。无论如何,对于一个简单的模式(例如问题中显示的内容),您可以这样做:
output = '''\
I need to filter the output of a command executed
in network equipment in order to bring only the
lines that match a text like '10.13.32.34'. I
created a python code that brings all the output
of the command but I need only part of this.
I am using Python 3.7.3 running on a Windows 10
Pro.
The code I used is below and I need the filtering
part because I am a network engineer without the
basic notion of python programming. (till now...)
'''
# Filter the lines of text in output.
filtered = ''.join(line for line in output.splitlines()
if '10.13.32.34' in line)
print(filtered) # -> lines that match a text like '10.13.32.34'. I
通过使用Python的内置正则表达式re.search()
模块中的re
函数,您可以对更复杂的模式执行类似的操作。使用正则表达式更为复杂,但功能非常强大。有许多使用它们的教程,包括Python自己的文档中的一篇Regular Expression HOWTO。