我必须编写一个脚本来自动执行snmpwalk命令。输入是一个文本文件,其中包含社区字符串及其各自的IP地址。如果对于一个IP地址,我必须在几秒钟后停止输出snmpwalk命令,那该怎么办呢?
答案 0 :(得分:0)
也许你正在寻找超时命令。
timeout 1s sleep 10
... 1秒后返回。
timeout 3s snmpwalk -v2c -c public myhost.mydomain
...运行snmpwalk并在最大值后返回。 3秒。
如果您的系统上没有超时命令,请参阅下面的使用perl的更通用的解决方案。
perl -e 'alarm shift @ARGV; exec @ARGV' 3 snmpwalk -v2c -c public myhost.mydomain
...运行snmpwalk并在最大值后返回。 3秒。
命令“shift @ARGV”从参数数组中取出第一个元素(例如:alarm 3)。第二个命令“exec @ARGV”执行参数数组的其余部分(例如:exec'snmpwalk -v2c -c public myhost.mydomain')。
因此上面的oneliner扩展为以下perl脚本:
alarm 3;
exec 'snmpwalk -v2c -c public myhost.mydomain';