为什么我无法针对本地主机运行脚本?

为什么我无法针对本地主机运行脚本?

我有一个从method文件读取的脚本:

OPTIONS

并检查OPTIONS特定网站是否允许。脚本如下:

#!/bin/bash
#
#
if [ ! $# == 1 ]
then
        echo "Usage: $0 [ URL ]"
        exit 1
fi

cat method | while read LINE
                do
                cat << __eof > header
$LINE / HTTP/1.1
Host:$1


__eof
nc $1 80 < header
done

因此,我可以针对 google.com 和其他网站运行此测试。但当我针对它运行时,localhost:8080我收到一个错误:

nc: getaddrinfo: Name or service not known

我对脚本编写还很陌生。有人能帮助我吗?

答案1

我认为这不是脚本的问题,而是 nc 命令的语法问题。

nc 语法是:nc -l -p port [-options] [hostname] [port] 有关更多信息,请参阅 man nc。

使用 nc 命令时,主机名后面跟着端口,端口之间用空格隔开。如果您使用参数 localhost:8080 调用脚本,shell 将不会转换该参数,因此端口将被视为主机名的一部分。

答案2

要修复此问题,请将以下内容添加到您的 /etc/hosts 中(如果不是全部,大多数 ubuntu 版本中都有):

‘127.0.0.1 本地主机’

但是我同意 Jens 的观点。看来你的语法不正确。Yuu 说你针对 localhost:8080 运行它,但是在你的脚本中端口 80 是硬编码的,这意味着你实际上说的是主机 localhost:8080 上的端口 80,当然该主机不存在。

谨致问候,
Jochen

相关内容