【发布时间】:2014-01-27 20:26:07
【问题描述】:
嘿,伙计们,如果变量超过 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 "\n\t$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) 我在子 shell 中,无法取出我的变量,B) 我正在尝试运行 response=#hash 并返回错误等
在捕获我的变量时运行超时的最佳方法是什么?
谢谢
【问题讨论】: