В настоящее время я делаю скрипт, который проверяет состояние принтера.Выходными данными являются Цвет принтера, Максимальный уровень, Текущий уровень и Текущий процент.У меня проблема при попытке отфильтровать цвет из команды.Когда я указываю /.*\.6\.1\./
или /.*\.6\.1/
или /.*\.6/
, я не получаю вывод из CL.Мой код в настоящее время работает, только когда я указываю что-то вроде /.*\.6\.1\.1/
или /.*\.6\.1\.3/
, тогда я получаю вывод первого или x цвета, но я хочу вывод всех цветов.Мне было интересно, если я делал это неправильно, и есть ли способ исправить это?
Требуется Отфильтровано:
iso.3.6.1.2.1.43.11.1.1.2.1.1 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.2.1.2 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.2.1.3 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.2.1.4 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.2.1.5 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.2.1.6 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.2.1.7 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.3.1.1 = INTEGER: 1
iso.3.6.1.2.1.43.11.1.1.3.1.2 = INTEGER: 2
iso.3.6.1.2.1.43.11.1.1.3.1.3 = INTEGER: 3
iso.3.6.1.2.1.43.11.1.1.3.1.4 = INTEGER: 4
iso.3.6.1.2.1.43.11.1.1.3.1.5 = INTEGER: 5
iso.3.6.1.2.1.43.11.1.1.3.1.6 = INTEGER: 6
iso.3.6.1.2.1.43.11.1.1.3.1.7 = INTEGER: 7
iso.3.6.1.2.1.43.11.1.1.6.1.1 = STRING: "CyanInkCartridge"
iso.3.6.1.2.1.43.11.1.1.6.1.2 = STRING: "MagentaInkCartridge"
iso.3.6.1.2.1.43.11.1.1.6.1.3 = STRING: "YellowInkCartridge"
iso.3.6.1.2.1.43.11.1.1.6.1.4 = STRING: "MattBlackInkCartridge"
iso.3.6.1.2.1.43.11.1.1.6.1.5 = STRING: "MattBlackInkCartridge"
iso.3.6.1.2.1.43.11.1.1.6.1.6 = STRING: "BlackInkCartridge"
iso.3.6.1.2.1.43.11.1.1.6.1.7 = STRING: "WasteInkTank"
iso.3.6.1.2.1.43.11.1.1.7.1.1 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.7.1.2 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.7.1.3 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.7.1.4 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.7.1.5 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.7.1.6 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.7.1.7 = INTEGER: 15
iso.3.6.1.2.1.43.11.1.1.8.1.1 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.8.1.2 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.8.1.3 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.8.1.4 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.8.1.5 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.8.1.6 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.8.1.7 = INTEGER: 10000
iso.3.6.1.2.1.43.11.1.1.9.1.1 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.9.1.2 = INTEGER: 780
iso.3.6.1.2.1.43.11.1.1.9.1.3 = INTEGER: 780
iso.3.6.1.2.1.43.11.1.1.9.1.4 = INTEGER: 780
iso.3.6.1.2.1.43.11.1.1.9.1.5 = INTEGER: 780
iso.3.6.1.2.1.43.11.1.1.9.1.6 = INTEGER: 1300
iso.3.6.1.2.1.43.11.1.1.9.1.7 = INTEGER: 4000
Текущий код:
#!/bin/sh
snmpwalk -v1 -c public $1 1.3.6.1.2.1.43.11.1.1 | awk '
/.*\.6\.1\.1/ {
sub(/.*\./,"");
split($0,TT,/[ "]*/);
color[TT[1]]=TT[4];
}
/.*\.8/ {
sub(/.*\./,"");
split($0,TT,/[ "]*/);
maxlevel[TT[1]]=TT[4];
}
/.*\.9/ {
sub(/.*\./,"");
split($0,TT,/[ "]*/);
if ((TT[4] / maxlevel[TT[1]] * 100) < 50){
print "\033[31m Color: " color[TT[1]] ", Current Level: " TT[4] ", Max Level: " maxlevel[TT[1]] ", Percentage: %" TT[4] / maxlevel[TT[1]] * 100 "\033[0m";
}else{
print "\033[32m Color: " color[TT[1]] ", Current Level: " TT[4] ", Max Level: " maxlevel[TT[1]] ", Percentage: %" TT[4] / maxlevel[TT[1]] * 100 "\033[0m";
}
}
'
Команда: ./PrintInfo 192.168.15.102
Токовый выход:
Color: CyanInkCartridge, Current Level: 1300, Max Level: 1300, Percentage: %100
Color: , Current Level: 780, Max Level: 1300, Percentage: %60
Color: , Current Level: 780, Max Level: 1300, Percentage: %60
Color: , Current Level: 780, Max Level: 1300, Percentage: %60
Color: , Current Level: 780, Max Level: 1300, Percentage: %60
Color: , Current Level: 1300, Max Level: 1300, Percentage: %100
Color: , Current Level: 4000, Max Level: 10000, Percentage: %40
Требуемый вывод:
Color: CyanInkCartridge, Current Level: 1300, Max Level: 1300, Percentage: %100
Color: MagentaInkCartridge, Current Level: 780, Max Level: 1300, Percentage: %60
Color: YellowInkCartridge, Current Level: 780, Max Level: 1300, Percentage: %60
Color: MattBlackInkCartridge, Current Level: 780, Max Level: 1300, Percentage: %60
Color: MattBlackInkCartridge, Current Level: 780, Max Level: 1300, Percentage: %60
Color: BlackInkCartridge, Current Level: 1300, Max Level: 1300, Percentage: %100
Color: WasteInkTank, Current Level: 4000, Max Level: 10000, Percentage: %40
Желаемый вывод - иметь все перечисленные выше цвета вместо одного цвета.Проблема с этим, как я уже говорил выше, заключается в том, что, когда я пытаюсь сделать эту покупку, меняя код /.*\.6\.1\./
вместо /.*\.6\.1\.1/
, командная строка вообще не показывает никакого вывода, а также не выдает ошибку.Что я делаю не так, что может вызвать что-то вроде этого?