0

Linux 2.6.18 を使用しています。

/bin/bash -version
GNU bash, version 1.14.7(1)

(snmpwalk コマンドは以下のようにコンソールに出力します)

33
4232
5342
632
45342
23342
3243

シェルスクリプトを使用してsnmpからデータをgrepし、それを配列に追加しようとしています。しかし、次の問題でこれを行うことはできません...

#!/bin/bash
OID="1.3.6.1.2.1.2.2.1"

declare -a index=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.1) 
declare -a upload=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.10) 
declare -a download=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.11)

echo "retrieved ${#index[@]} elements"
echo "#${index[3]}: up=${upload[2]} down=${download[2]}"

出力:

 + declare -a index=1 2
    j2.sh: 4: j2.sh: declare: not found

(だから私は「宣言」を使うことができません)

2番目の方法

#!/bin/bash

    OUTPUT1=$(snmpbulkwalk -Oqv -c public -v 2c localhost
    1.3.6.1.4.1.21067.4.1.1.1 2> /dev/null)
    i=1
    index=1
    upload=1
    download=1
    for LINE in ${OUTPUT1}
        do
            index=$LINE

        OUTPUT2=$(snmpget -Oqv -c public -v 2c localhost 1.3.6.1.4.1.21067.4.1.1.10.$i 2> /dev/null)
        OUTPUT3=$(snmpget -Oqv -c public -v 2c localhost 1.3.6.1.4.1.21067.4.1.1.11.$i 2> /dev/null)
            upload=$OUTPUT2
            download=$OUTPUT3
            i=`expr $i + 1`
        done

大量のデータでbettelnackを提供します...

3ra アプローチ :

#!/bin/bash
OUTPUT=$(snmpbulkwalk -Oqv -c public -v 2c localhost
1.3.6.1.4.1.21067.4.1.1.1 2> /dev/null)
i=0
index[3000]=0
for LINE in ${OUTPUT} ; do
    index[$i]=$LINE
    i=`expr $i + 1`

done

ここで index[1],index[2]...... は見つかりません

4

1 に答える 1

1
declare -a index=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.1) declare -a upload=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.10) declare -a download=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.11)

なぜこれをすべて1行で行おうとしているのですか?これを別の行で行うと、うまくいくはずです。

declare -a index=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.1)
declare -a upload=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.10)
declare -a download=$(snmpwalk -v 2c -c public -Oqv localhost ${OID}.11)

それでもうまくいかない場合は、どのバージョンの Bash を使用していますか? あなたは何から得/bin/bash --versionますか?

于 2012-11-06T14:15:41.053 に答える