如何在几秒钟后自动停止snmpwalk命令的输出

时间:2014-12-01 13:49:38

标签: unix

我必须编写一个脚本来自动执行snmpwalk命令。输入是一个文本文件,其中包含社区字符串及其各自的IP地址。如果对于一个IP地址,我必须在几秒钟后停止输出snmpwalk命令,那该怎么办呢?

1 个答案:

答案 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';