wget 和 curl

2018-07-09  本文已影响0人  Joah_l

> 查看网站URL是否正常最常见的方式莫过于使用 wget 和 curl 工具来获得网站的 URL 的信息,这个两个工具非常的强大;

## 1.1 wget 命令

  `这个命令的参数非常的多,至少也有数 10 个参数 `

  - wget:下载网页或者文件的工具命令

    * --spider 模拟爬虫的行为去访问网站, 但是不会下载网页

    * -q, --quit  安静的访问, 禁止输出,类似 -o /dev/null 的功能

    * -o, --output-file=FILE; 记录输出到文件

    * -T, --timeout=SECONDS 访问网站的超时的时间

    * -t  --tries=number 当网站异常时重试的次数

  `实时监控的方式:(利用放回值确定网站是否正常) `

    wget --spider -T  5  -q  -t  2  www.baidu.com  (这个命令会wget 会后台爬取网站)

    echo $?  => 输出 0 标示上个命令执行正常

## curl: 访问网站 url

  * -I / --head 显示响应头的信息

  * -m / --max-time `seconds` 访问超时的时间

  * -o / --output `file` 记录访问信息到文件

  * -s / --silent  沉默访问模式, 就是不输出信息

  * -w / --write-out  `format` 以固定的格式输出, 例如: %{http_code}, 输出状态码

  `实时监控的方式如下`

    1: 利用命令放回值,确定网站是否正常

      curl -s -o /dev/null  www.baidu.com

      echo $? => 确定输出 为 0

    2: 获取状态码 (200 标示正常) curl  -I -m 5 -s  -w ''%{http_code} \n '  -o /dev/null www.baidu.com

- 使用shell 脚本监控指定的 url 是否正常

```sh

#!/bin/sh

# help 信息

function usage() {

  echo $"usage: $0 url";

  exit 1;

}

function check_url (){

  #  $1 是传入的参数 url

  wget --spider -q -o /dev/null --tries=1 -T 5 $1

  # curl -s -o /dev/null $1

  if [ $? -eq 0 ] then

    echo "$1 success";

    exit 1;

  else

    echo "$1 fail";

    exit 0;

  fi

}

function main() {

  # 如果传入的多个参数,则打印帮助函数,提示用户。

  if [ $# -ne 1 ] then

    usage

  fi

  # 接收函数的传参,即把结尾的 $* 传到这里。

  check_url $1

}

# 这里的 $* 就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。

main $*

```

- 脚本二 使用 curl 获得响应状态码来判断网站是否正常

```sh

  #!/bin/zsh

  # 打印 help 信息

  function usage() {

    echo $"usage: $0 url";

    exit 1;

  }

  function check_url (){

    local num = `curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null $1 | egrep "30[12]|200" | wc -l`;

    if [ $num -ge 1 ] then

      echo "$1 is success";

    else

      echo "$1 is fail";

    fi

  }

  function main() {

    # 如果传入的多个参数,则打印帮助函数,提示用户。

    if [ $# -ne 1 ] then

      usage

    fi

    # 接收函数的传参,即把结尾的 $* 传到这里。

    check_url $1

  }

  # 这里的 $* 就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。

  main $*

```

上一篇下一篇

猜你喜欢

热点阅读