【问题标题】:how to get http status code with netcat via bash script如何通过 bash 脚本使用 netcat 获取 http 状态码
【发布时间】:2021-04-23 10:03:27
【问题描述】:

我必须编写一个必须包含这些条件的 bash 脚本。我是新手,能给我建议吗?

此脚本使用“命令和 [参数]”运行。 我将它作为变量提供给域,脚本必须使用 "nc" 获取此变量的状态代码(我没有使用 cURL)。如果状态码是 200(仅),bash 脚本打印 OK,否则脚本应该以状态码 7 退出,屏幕上没有任何打印字词。

我写了这个,但是当我使用变量时,我无法得到任何结果。

1-) 这行得通(这是没有变量的,我知道 google 响应 301 所以我写了 grep 301)

#!/bin/bash

        STATUS=`printf 'GET / HTTP/1.1\r\nHost: google.com\r\n\r\n' | nc google.com 80 | awk '{print $2}' | grep '301'`
                if [ "$STATUS" -eq 301  ]; then
                echo "OK"
                else
                exit 7
                fi

2-) 这不起作用 - 请帮我改进这个脚本。我必须用 nc 命令编写来获取响应代码并与 200 进行比较。

#!/bin/bash

DOMAIN=google.com

        STATUS=`printf 'GET / HTTP/1.1\r\nHost: "$DOMAIN"\r\n\r\n' | nc "$DOMAIN" 80 | awk '{print $2}' | grep '301'`
                if [ "$STATUS" ]; then
                        echo "OK"
                else
                        exit 7
                fi

【问题讨论】:

  • 为什么是nccurl 怎么了?
  • 我可以用 curl 写作,但他们强迫我用 nc。这是一项任务,所以我必须想办法用 netcat 解决这个问题。
  • 好的,我知道了,谢谢。祝你好运!
  • 我建议从GET切换到HEAD
  • 没有nccurlwgetexec 3<>/dev/tcp/www.google.com/80; echo -e 'HEAD / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\n\r\n' >&3; cat <&3 | while read -r foo status foo; do echo "$status"; break; done

标签: linux bash http centos netcat


【解决方案1】:

如果已经整理了一个小脚本。希望有帮助。请在生产使用前进行测试:)

STATUS=$(printf "HEAD / HTTP/1.1\r\nUser-Agent: nc/0.0.1\r\nHost: $1\r\nAccept: */*\r\n\r\n" | nc $1 80 | sed -n 's/HTTP.* \(.*\) .*/\1/p' |grep $2)

if [ $? -eq 0 ]; then
  echo OK
else
  exit 7
fi

您的print 命令也可以正常工作:

STATUS=$(printf "HEAD / HTTP/1.1\r\nUser-Agent: nc/0.0.1\r\nHost: $1\r\nAccept: */*\r\n\r\n" | nc $1 80 | awk '{print $2}' |grep $2)

您使用的 grep 将打印 200。这意味着我们必须根据实际值检查 if 块。

我正在检查最后一个退出代码。如果 grep 命令成功 - 意味着它在 HTTP 响应代码中找到 200 - 退出代码将为 0。

我正在发布类似./demo.sh nginx.org 200的脚本

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2017-09-12
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多