使用bash和curl进行连接测试

时间:2014-10-13 15:52:50

标签: bash curl

我正在尝试编写一个脚本来测试我的防火墙是否阻止多个页面。当我尝试从命令行读取一行或多行时,我得到一个-ne:酉运算符预期错误。

这是我的尝试:

sh test www.3232.com.pe
www.3232.com.pe
test: line 7: [: -ne: unary operator expected
$ cat test
#!/bin/sh

for var in "$@"
do    
  echo $var 
  res=`curl -s -I $var | grep HTTP/1.1 | awk {'print $2'}`
    if [ $res -ne 200 ]
    then
    echo "Error on $var"
    fi
done

1 个答案:

答案 0 :(得分:1)

考虑如果curl无法成功连接会发生什么:

res=`curl -s -I $var | grep HTTP/1.1 | awk {'print $2'}`
if [ $res -ne 200 ]

如果curl没有获得任何标头,或者没有获得HTTP / 1.1标头,则第一个命令中的pipline不输出任何内容,res被分配给任何内容。在这种情况下,第二行中的测试将失败并出现unexpected operator错误。

您需要首先测试res是否为空。而且,如果它是空的,请采取适当的行动。