美文网首页
wget 和 curl

wget 和 curl

作者: Joah_l | 来源:发表于2018-07-09 11:26 被阅读0次

    > 查看网站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 $*

    ```

    相关文章

      网友评论

          本文标题:wget 和 curl

          本文链接:https://www.haomeiwen.com/subject/smyduftx.html