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

如何使用snmpget通过SNMP传递脚本的变量?,snmp,net-snmp,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"

我有一个简单的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"
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
从输出中我看到
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
参数传递,然后使用
snmpget
命令获取字符串(在本例中为
“PRINT SOMETHING”
),类似于:

snmpwalk -v2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.53 "PRINT SOMETHING"
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运行脚本来测试我的选项,因为如果这样做有效,那么我将编写另一个远程运行的脚本,但我必须使用变量来运行它们

有人知道怎么做吗


谢谢

我花了很多时间才找到所有答案。我希望,这将是某人的起点,并将节省时间

/etc/snmp/snmpd.conf:

rwcommunity public
pass .1.3.6.1.4.1.YOUR_NUM_HERE.1 /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
/path/to/your/script.sh:

rwcommunity public
pass .1.3.6.1.4.1.YOUR_NUM_HERE.1 /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,并将代码放在“-n”大小写后面。 如果是snmpget,代码将在“-g”之后