我有一个简单的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运行脚本来测试我的选项,因为如果这样可行,那么我将编写另一个脚本来远程运行,但我必须使用变量运行它们。
有谁知道怎么做?
谢谢
答案 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;
之后