我有一个通过netmiko。(https://github.com/ktbyers/netmiko)函数传递的防火墙cli命令列表。
问题是某些字符串命令包含其他参数,例如 send_command_timing("显示系统信息,delay_factor = 1,max_loops = 150,strip_prompt = True,strip_command = True)
有没有办法可以将整个命令添加到包含参数的列表中?
list_a =[ "Do_Something","Do_Something|else","Do_Altogether_Something_Else |"]
for command in list_a :
matching = [s for s in list_a if "|" in s]
if command == matching:
query = connection.send_command_timing(matching,delay_factor=1, max_loops=150, strip_prompt=True,strip_command=True)
print (query)
对不起,如果我的问题有点含糊不清。如果这更好,请告诉我
答案 0 :(得分:3)
我不是百分之百确定你要做什么,但这是我最好的解决方案。从我从问题中收集到的内容(如果我错了,请纠正我),你有一个字符串列表,其中每个字符串都是一个命令,后跟命令的参数;即它们遵循以下格式:'command|arg0|arg1|arg2'
。我认为这是因为你的问题是:
问题是某些字符串命令还包含其中的参数,这些参数由实际命令的竖线分隔。
现在,您还要说您要将参数与命令分开。给定input_string
,这是一个可以为你做的功能。
def separate_args_and_command(input_string):
command_and_args = input_string.split('|')
return command_and_args[0], command_and_args[1:]
此函数返回一个包含您的命令的元组,后跟一个args列表。这是一个简单的例子:
>>> separate_args_and_command('my_command|my_arg0|my_arg1')
('my_command', ['my_arg0', 'my_arg1'])
以下是如何将此功能用于您的问题的示例:
list_a = ["command0|arg0", "command1","command2|arg0|arg1|arg2"]
for command_and_args in list_a:
command, arguments = separate_args_and_command(command_and_args)
# Now you have your command, and your arguments separated. If there are no
# arguments, the arguments variable will be an empty list.