0


みんなこんにちは!
最初に私が今持っているコード:

for CLSGRPID in `${${`/usr/bin/snmpwalk \
    -v 1 -c $COMM $HOST $OID.11.1.1.1`##*:}%\n} | xargs` ; do

最初に処理したい

/usr/bin/snmpwalk -v 1 -c $COMM $HOST $OID.11.1.1.1

単独で使用すると、行が返されます

.2.3.1.2.1.5.11.1.1.1.1 = INTEGER: 1
.2.3.1.2.1.5.11.1.1.1.2 = INTEGER: 2
.2.3.1.2.1.5.11.1.1.1.3 = INTEGER: 3

そして、リターンラインごとに、同じようにカットして${line##*:}から、反対側から、${line%\n}それらすべてのラインを入れてxargs処理したいと思います。したがって、要求された出力は

1 2 3

出来ますか?やり方のアイデアを教えてください。

4

2 に答える 2

1

net-snmpコマンドには、その動作と出力を変更する多くのオプションがあります。snmpcmdsnmpwalk、およびのそれぞれのマニュアル ページを読むことをお勧めしますsnmp.conf

-Oオプション グループをチェックインしますsnmpwalk(以下を参照)。

組み合わせにより、数値のみの-Oqv列が得られます。

$ clsgrpids=$(
    /usr/bin/snmpwalk -Oqv -v 1 -c $COMM $HOST $OID.11.1.1.1
)
$ echo "$clsgrpids"
1
2
3

引用符を削除して、シェルが 1 行を出力できるようにします。

$ echo $clsgrpids
1 2 3

-Oの出力を制御するオプション グループの残りのオプションは次のsnmpwalkとおりです。

-O OUTOPTS
        Toggle various defaults controlling output display:
        0:  print leading 0 for single-digit hex characters
        a:  print all strings in ascii format
        b:  do not break OID indexes down
        e:  print enums numerically
        E:  escape quotes in string indices
        f:  print full OIDs on output
        n:  print OIDs numerically
        q:  quick print for easier parsing
        Q:  quick print with equal-signs
        s:  print only last symbolic element of OID
        S:  print MIB module-id plus last element
        t:  print timeticks unparsed as numeric integers
        T:  print human-readable text along with hex strings
        u:  print OIDs using UCD-style prefix suppression
        U:  don't print units
        v:  print values only (not OID = value)

検証(実際の実行コード)

$ snmpwalk  -Ov -v1 -c public localhost  sysUptime
Timeticks: (66595) 0:11:05.95
$ snmpwalk  -Oqv -v1 -c public localhost  sysUptime
0:0:11:35.13
$ snmpwalk  -Otqv -v1 -c public localhost  sysUptime
70012
于 2013-03-31T23:26:59.653 に答える
0

awk を使用できます。

for CLSGRPID in `/usr/bin/snmpwalk -v 1 -c $COMM $HOST $OID.11.1.1.1 | awk '{print $NF}'`; do
    echo $CLSGRPID
done
于 2013-03-30T15:14:49.560 に答える