2014-09-23 3 views
0

Я занимаюсь snmp-устройствами, чтобы посмотреть состояние интерфейсов. Я пытаюсь заменить имя интерфейса на устройство, из которого он пришел, поэтому я могу иметь имя устройства в столбце рядом с именем интерфейса.Bash Как заменить несколько переменных строки и распечатать обе переменные

Ожидаемый результат

DeviceName1 Device1InterfaceName1
DeviceName1 Device1InterfaceName2
DeviceName1 Device1InterfaceName3
DeviceName1 Device1InterfaceName4
DeviceName1 Device1InterfaceName5
DeviceName1 Device1InterfaceName6
DeviceName2 Device2InterfaceName1
DeviceName2 Dev ice2InterfaceName2
DeviceName2 Device2InterfaceName3
DeviceName2 Device2InterfaceName4
DeviceName3 Device3InterfaceName1
DeviceName3 Device3InterfaceName2

я могу запустить этот сценарий, чтобы получить имя интерфейса:

#!/bin/bash 
while read device 
do 

var5=$(sm_snmp -c "communitystring" -d $device walk .1.3.6.1.2.1.2.2.1.2 | grep -v "SNMP Walk MIB starting at" | awk -F "= " '{print $2}'); 

printf "%-20s\n" "$var5" 

done < devicelist.txt 

Выход из сценария выше дает мне InterfaceNames:

Device1InterfaceName1
Device1InterfaceName2
Device1InterfaceName3
Device1InterfaceName4
Device1InterfaceName5
Device2InterfaceName1
Device2InterfaceName2
Device2InterfaceName3
Device3InterfaceName1
Device3InterfaceName2

Я хотел бы вывести ИмяУстройства и DeviceInterfaceName в то время. Проблема, которую я заменяю, - это вывод из приведенного выше сценария, вернет DeviceInterfaceName в каждой строке (что я хочу), но любая подстановка, которую я попробовал, заменяет всю переменную только одной строкой с DeviceName. Также мне нужно будет сделать это для каждого устройства в devicelist.txt.

+2

добавьте выходной образец вашего '/ opt/InCharge/IP/smarts/bin/sm_snmp' – NeronLeVelu

+0

Добавленный образец вывода. – aidemos

+0

Нам было бы намного легче помочь вам, если бы вы разместили несколько строк вашего файла 'devicelist.txt', а также сохранили вывод' sm_snmp' в файл. Вы можете сделать sm_snmp -c «communitystring» -d $ device walk .1.3.6.1.2.1.2.2.1.2> sm.txt' например. Некоторый реальный выход и соответствующий желаемый результат были бы более полезными, чем то, что вы сейчас показывали. Каково значение '$ device_walk'? –

ответ

0
printf "%-20s %-20s\n" "${device}" "${var5}" 

- не то, что вы ожидаете?

Смежные вопросы