如何让 nc 命令在 2 秒后结束?

如何让 nc 命令在 2 秒后结束?

我必须编写一个维护脚本来迭代我们的 IP,测试它们与某些服务(例如nc -sip# mailin-01.mx.aol.com 25.

它有一面旗帜-w ...,但它不是我想象的那样。也就是说,我只希望这个程序最多运行 3 秒,并且我们连接到的地方始终处于运行状态(除非脚本不应该担心的主要网络问题 --- 不是它的特定工作,并且会在之前注意到)脚本已运行)。

我只需要它来连接并查看是否收到错误消息。在我们为用户的网页分配 IP 之前,这是必需的(这是 CPanel 东西的替代品——我们想要我们自己的)。

答案1

最简单的方法是使用timeout命令。该timeout命令允许您运行指定的命令,如果该命令在一定的超时时间内没有退出,timeout则将其终止。

例如

# timeout 3 sleep 1; echo exit=$? 
exit=0

# timeout 3 sleep 5; echo exit=$?
exit=124

# timeout 3 nc google.com 80; echo exit=$?
nc: using stream socket
exit=124

timeout没有在 POSIX 标准中定义,因此不能保证它无处不在,但它似乎很普遍。

答案2

http://www.varesano.net/blog/fabio/executing-program-x-seconds-then-killing-it-simple-bash-script

这有效

#!/bin/bash

cmd=$1
seconds=$2

echo "Executing: ${cmd} for $seconds seconds"
$cmd&

cmdpid=$!
sleep $seconds

if [ -d /proc/$cmdpid ]
then
echo "terminating program PID:$cmdpid"
kill $cmdpid
fi

相关内容