shell脚本:从curl获取服务器信息

时间:2014-02-03 14:49:05

标签: regex shell curl

我需要一些帮助从shell脚本中完成的curl调用中获取服务器信息。

在我的脚本中,我遍历列表中的多个URL并对每个URL执行cURL。

但我很难获取服务器信息,因为它不在cURL结果的静态位置。

>curl -I -s $temp

其中,$ temp是一些任意的URL,例如example.org

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html
Date: Mon, 03 Feb 2014 14:35:39 GMT
Etag: "359670651"
Expires: Mon, 10 Feb 2014 14:35:39 GMT
Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT
Server: ECS (iad/19AB)
X-Cache: HIT
x-ec-custom-error: 1
Content-Length: 1270

在example.org的结果之上。

问题:如何提取 server 所在的部分?
结果应该是

>echo $server 

将产生(所以基本上是“服务器:”之后的所有其余部分)

   ECS(iad / 19AB)

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用awk:

server=$(curl -I -s http://example.org | awk -F': ' '$1=="Server"{print $2}')
echo "$server"
ECS (cpm/F858)

或者您可以使用grep -oP

server=$(curl -I -s http://example.org | grep -oP 'Server: \K.+')
echo "$server"
ECS (cpm/F858)