基本的に私はシェルスクリプトの分野が初めてで、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}
(コミュニティ文字列と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ツールで共有されているすべてのオプションを一覧表示するマニュアルページ)を確認すると、オプションに次のように表示されます-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
結果変数の値にはスペース、セミコロン、またはペアシェル他の文字に対して特別な意味を持つため、誤って部分的な値をコマンドとして実行しようとしないように、変数の値を使用するときに引用符を使用する方が安全です。