Вы можете сделать это, используя следующие методы, как показано в POSIX или GNU sed
С редактором sed:
$ L=5 R=8
$ sed -e '
s/./\n/'"$L"';s//\n/'"$R"';ta
:a;s/\n\n/NN/;t
s/\n./N\n/;ta
'./test
ABCDNNNNABCD
С Perl:
perl -lspe '
my $c = $idxr - (pos()=$idxl-1);
s/\G.{$c}/"N"x$c/e;
' -- -idxl=5 -idxr=8./test
ABCDNNNNABCD
Опция -m
принимает параметр :разделенный двоеточием -список имен модулей MIB , а не имен отдельных объектов MIB.
В результате -m NET-SNMP-EXTEND-MIB::nsExtendObjects
анализируется как три имени модуля MIB:
NET-SNMP-EXTEND-MIB
которое является допустимым именем модуля MIB <null>
что явно игнорируется nsExtendObjects
, которое на самом деле является именем объекта MIB в модуле NET -SNMP -EXTEND -MIB. Указание OID для начала обхода на самом деле необязательно для snmpwalk
:. Если он не указан, по умолчанию будет SNMPv2-SMI::mib-2
, и поэтому вы не получаете сообщение об ошибке о неправильном синтаксисе. Вместо этого команда пытается найти модуль MIB с именем nsExtendObjects
и, очевидно, не находит его.
Если по какой-то причине вы хотите продолжать использовать параметр -m
, правильным синтаксисом будет:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB NET-SNMP-EXTEND-MIB::nsExtendObjects
Другими словами, первый NET-SNMP-EXTEND-MIB
является параметром для опции -m
, а второй является частью OID, с которого вы хотите начать обход.
Но в этом случае вы, вероятно, можете вообще не использовать опцию -m
:
snmpwalk -v2c -c public [ip] NET-SNMP-EXTEND-MIB::nsExtendObjects
Обе эти формы должны давать один и тот же результат.
Если download-mibs
был успешно завершен, в вашей системе должен быть файл с именем /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
.
$ sha256sum /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
ad05abc5ec39107a140d46e4e62e3fc0cf38eb26c1abe634fd7e9a7c7715e64e /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt