基本上我是 shell 脚本领域的新手,我想使用 linux 脚本运行 snmpwalk
这是我创建的脚本:
echo "Starting SnmpWalk"
var = `snmpwalk -v2c CS IP 1.3.6.1.4.1.1563.10.1.4.2.1.1.1.1.7`
echo {var}
(我已进入社区 String 和 Ip 正确。)
但我收到错误如下:
Starting SnmpWalk
No community name specified.
USAGE: snmpwalk [OPTIONS] AGENT [OID]
Version: 5.9.1
Web: http://www.net-snmp.org/
Email: [email protected]
答案1
您可能会假设-v2c
在命令行上表示-v2
+ -c
,即指定 SNMP 版本 2 和团体名称的选项。
不幸的是,这是不正确的:如果您检查man snmpcmd
(=列出了大多数 Net-SNMP 工具共享的所有选项的手册页),它会在 option 上这样说-v
:
-v 1 | 2c | 3
指定要使用的协议版本:1 (RFC 1155-1157)、2c (RFC 1901-1908) 或 3 (RFC 2571-2574)。 [...]
所以,-v2c
只指定SNMP协议版本2c,并且您需要一个单独的选项-c
来指定社区字符串,如下所示:
#!/bin/sh
echo "Starting SnmpWalk"
var=$(snmpwalk -v2c -c "CS" IP 1.3.6.1.4.1.1563.10.1.4.2.1.1.1.1.7)
echo "$var"
(最好使用$(
...)
构造而不是反引号,如果您的社区字符串包含任何特殊字符,则需要将其加引号。赋值不能包含空格。此外,结果变量var
的值可以包含空格、分号或对 shell 有特殊含义的其他字符,因此在使用变量值时使用引号会更安全,以避免意外尝试将部分值作为命令执行。)