![为什么我无法针对本地主机运行脚本?](https://linux22.com/image/962250/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E6%97%A0%E6%B3%95%E9%92%88%E5%AF%B9%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我有一个从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