如何使用snmpget通过SNMP传递脚本的变量?

时间:2016-11-10 10:16:20

标签: snmp net-snmp

我有一个简单的bash脚本调用test_snmp,让我们说:

#!/bin/bash
 echo $1

我将snmpd.conf设置如下:

rwcommunity public 127.0.0.1
extend .1.3.6.1.4.1.2021.53 /bin/bash /tmp/test_snmp

我想做的是运行snmpwalk命令,例如:

snmpwalk -v2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.53 "PRINT SOMETHING"

从输出中我看到了 oid = iso.3.6.1.4.1.2021.53.3.1.1.9.47.98.105.110.47.98.97.115.104 = "",是脚本的输出。但我想将该字符串"PRINT SOMETHING"作为上述脚本的$1参数传递,然后使用"PRINT SOMETHING"获取字符串(在本例中为snmpget)命令,如:

snmpget -v2c -c public 127.0.0.1 iso.3.6.1.4.1.2021.53.3.1.1.9.47.98.105.110.47.98.97.115.104

这只是一个例子,我正在通过snmp运行脚本来测试我的选项,因为如果这样可行,那么我将编写另一个脚本来远程运行,但我必须使用变量运行它们。

有谁知道怎么做?

谢谢

1 个答案:

答案 0 :(得分:2)

在找到所有答案之前,我花了很多时间。我希望,这将成为某人的起点,并将节省时间。

<强> /etc/snmp/snmpd.conf中:

rwcommunity public
pass .1.3.6.1.4.1.YOUR_NUM_HERE.1 /path/to/your/script.sh

<强> /path/to/your/script.sh:

#!/bin/bash 

case "$1" in
    -g) // GET Req
        echo $2 # ANSWER OID
        echo "string" # string/int/etc...
        echo "you data" #
    ;;
    -s)  // SET Req
    # Your code for processing SET Req
    exit 0
    ;;

    -n) // GETNEXT Req

        echo $2
        echo "string"
        # Your code for processing GETNEXT Req
    ;;
    *)
    ;;
esac

之后您可以使用 snmpwalk ,并将代码放在&#34; -n&#34;之后案件。 如果是 snmpget ,您的代码将在&#34; -g&#34;

之后