1

嘿伙计们,如果变量超过 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)我在一个子外壳中并且无法取出我的变量,B)我正在尝试运行response=#hash并返回错误等

在捕获我的变量时运行超时的最佳方法是什么?

谢谢

4

1 回答 1

4
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}')
于 2014-01-27T20:36:29.227 回答