В Linux легко получить определенную строку с помощью таких инструментов, как grep, cut или awk.
Этот образец show version
взят из https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst9300/software/release/16-6/configuration_guide/sys_mgmt/b_166_sys_mgmt_9300_cg/b_166_sys_mgmt_9300_cg_chapter_01.html
wolf@linux:~$ cat shver
cisco C9300-48P (X86) processor with 818597K/6147K bytes of memory.
Processor board ID FCW2049G03S
2048K bytes of non-volatile configuration memory.
8388608K bytes of physical memory.
1638400K bytes of Crash Files at crashinfo:.
11264000K bytes of Flash at flash:.
0K bytes of WebUI ODM Files at webui:.
Model Number : C9300-48P
Base Ethernet MAC Address : 04:6c:9d:01:3b:80
Motherboard Assembly Number : 73-17956-04
Motherboard Serial Number : FOC20465ABU
Model Revision Number : P4B
Motherboard Revision Number : 04
Model Number : C9300-48P
System Serial Number : FCW2049G03S
wolf@linux:~$
grep and cut
wolf@linux:~$ grep 'Model Number' shver | cut -d : -f 2
C9300-48P
C9300-48P
wolf@linux:~$
Удалить лишний пробел (если есть лучшее решение, дайте мне знать)
wolf@linux:~$ grep 'Model Number' shver | cut -d : -f 2 | cut -d ' ' -f 2
C9300-48P
C9300-48P
wolf@linux:~$
Выберите 1-й вывод
wolf@linux:~$ grep 'Model Number' shver | cut -d : -f 2 | cut -d ' ' -f 2 | head -1
C9300-48P
wolf@linux:~$
Это было в Linux. Я планировал написать аналогичный код в Python.
Моя попытка, которая на данный момент все еще не сработала.
Определить строку shver
>>> shver = '''cisco C9300-48P (X86) processor with 818597K/6147K bytes of memory.
... Processor board ID FCW2049G03S
... 2048K bytes of non-volatile configuration memory.
... 8388608K bytes of physical memory.
... 1638400K bytes of Crash Files at crashinfo:.
... 11264000K bytes of Flash at flash:.
... 0K bytes of WebUI ODM Files at webui:.
... Model Number : C9300-48P
...
... Base Ethernet MAC Address : 04:6c:9d:01:3b:80
... Motherboard Assembly Number : 73-17956-04
... Motherboard Serial Number : FOC20465ABU
... Model Revision Number : P4B
... Motherboard Revision Number : 04
... Model Number : C9300-48P
... System Serial Number : FCW2049G03S
... '''
>>>
проверить
>>> shver
'cisco C9300-48P (X86) processor with 818597K/6147K bytes of memory.\nProcessor board ID FCW2049G03S\n2048K bytes of non-volatile configuration memory.\n8388608K bytes of physical memory.\n1638400K bytes of Crash Files at crashinfo:.\n11264000K bytes of Flash at flash:.\n0K bytes of WebUI ODM Files at webui:.\nModel Number : C9300-48P\n\nBase Ethernet MAC Address : 04:6c:9d:01:3b:80\nMotherboard Assembly Number : 73-17956-04\nMotherboard Serial Number : FOC20465ABU\nModel Revision Number : P4B\nMotherboard Revision Number : 04\nModel Number : C9300-48P\nSystem Serial Number : FCW2049G03S\n'
>>>
создать список
>>> shver_list = shver.splitlines()
>>> shver_list
['cisco C9300-48P (X86) processor with 818597K/6147K bytes of memory.', 'Processor board ID FCW2049G03S', '2048K bytes of non-volatile configuration memory.', '8388608K bytes of physical memory.', '1638400K bytes of Crash Files at crashinfo:.', '11264000K bytes of Flash at flash:.', '0K bytes of WebUI ODM Files at webui:.', 'Model Number : C9300-48P', '', 'Base Ethernet MAC Address : 04:6c:9d:01:3b:80', 'Motherboard Assembly Number : 73-17956-04', 'Motherboard Serial Number : FOC20465ABU', 'Model Revision Number : P4B', 'Motherboard Revision Number : 04', 'Model Number : C9300-48P', 'System Serial Number : FCW2049G03S']
>>>
Следующий шаг - выяснить, присутствует ли строка «Номер модели», и распечатать эту строку
>>> if 'Model Number' in shver_list:
... 'yes'
... else:
... 'no'
...
'no'
>>>
Как распечатать строку, содержащую «Номер модели»?
>>> for i in shver_list:
... if 'Model Number' in shver_list:
... i
...
>>>
Желаемый результат
C9300-48P