2016-11-02 6 views
0

У меня есть эта команда, которую я хочу использовать для извлечения информации из шасси Motorola. Я буду использовать сценарии SNMP V2 и Bash, чтобы вытащить информацию.Как иметь 2 переменные с 2 различными seq - Bash Linux

2 Переменные

IP = последний октет IP шасси (1 ... 10)
порт # = Chassis порт ID (10 10 240)

Команда, У меня есть:

for ip in `seq 1 10`; 
    do echo Chassis .$ip ; 
    snmpwalk -v2c -c ComunityName 172.27.253.$ip IF-MIB::ifAdminStatus.$port; 
    echo -e "\n"; 
done 

Эта команда не работает, потому что я еще не объявил $port, но как я могу интегрировать эту переменную в ту же строку команд, чтобы она могла выполнить seq 10 20 30 40 .... 240?

+0

когда-либо слышал о вложенных циклов? – agg3l

+0

Я читал о вложенных циклах, но Im не смог правильно настроить сценарий – Greyfox

ответ

2

С внутренним контуром для значений $port. Как вы под Bash, вы можете использовать последовательность Bash {1..10} вместо seq:

for ip in {1..10}; do 
    echo Chassis .$ip; 
    for port in {10..240..10}; do 
    echo snmpwalk -v2c -c ComunityName 172.27.253.$ip IF-MIB::ifAdminStatus.$port; echo -e "\n"; 
    done 
done 
+0

Цикл стиля C - лучший вариант, так как ему не нужно генерировать полный список номеров спереди: 'for ((port = 10 , порт <= 240; порт + = 10)) ', например. – chepner

+0

Я пробовал это, но результат не правильно сортируется: команда: #!/Bin/bash #Порт статуса для ip в {1..10}; do для порта в {10..240..10}; do echo Chassis. $ ip; snmpwalk -v2c -c comunitiName 172.27.253. $ Ip IF-MIB :: ifAdminStatus. $ Port | awk '{print $ 1, $ 4}' | sed -e '//IF-MIB :: ifAdminStatus.' // г'; сделано сделал вывод: Шасси 0,1 10 до (1) Шасси 0,1 20 до (1) Шасси 0,1 30 до (1) Шасси 0,1 40 до (1) шасси. 1 и выходное желание: шасси 0,1 10 до (1) 20 до (1) 30 до (1) 40 до (1) ...... – Greyfox

+0

Я сделал это с вами помощь я понял я перемещаю его шасси эха в другой цикл Спасибо – Greyfox