大家好,我正在尝试找出一种方法,如果它超过了x时间,试图获取内容,这是基于触摸服务器来验证其具有ssl的方法。如果服务器在x秒内没有响应,我想将变量设置为空(或在可能的情况下设置其他标志)
)我正在使用的是
response=$(echo ^D |openssl s_client -connect ${line}:443 2> /dev/null |openssl x509 -noout -hash |grep -E '^[[:xdigit:]]{8}')
现在$line
为baidu.com
现在
我尝试了这样的事情
( cmdpid=$BASHPID;
( sleep 10; kill $cmdpid; echo -e "nt$line missed window, terminating...n"
) & exec response=$(echo ^D |openssl s_client -connect ${line}:443 2> /dev/null |openssl x509 -noout -hash |grep -E '^[[:xdigit:]]{8}')
)
,但意识到了几个问题,例如a)我在子壳中,无法释放我的变量,b)我正在尝试运行 response=#hash
并返回错误等
在捕获我的变量时运行超时的最佳方法是什么?
谢谢
IFS= read -t 10 -d '' variable < <(yourcommand)
,例如
IFS= read -t 10 -d '' response < <(echo ^D |openssl s_client -connect ${line}:443 2> /dev/null |openssl x509 -noout -hash |grep -E '^[[:xdigit:]]{8}')