在 shell 脚本中运行curl 会出现curl: (6) Could not parse host: 错误

在 shell 脚本中运行curl 会出现curl: (6) Could not parse host: 错误

当我运行这个命令时它工作正常:

# curl  https://google.com

输出:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

但是当我在 shell 脚本 .sh 文件中执行相同操作时:

#!/bin/bash

curl  https://google.com

输出:

curl: (6) Could not resolve host: google.com; Unknown error

输出grep curl /home/pmm/deploy-vsf/test_bot.sh | od -c

[root@host ~]# grep curl /home/pmm/deploy-vsf/test_bot.sh | od -c
0000000   c   u   r   l           h   t   t   p   s   :   /   /   g   o
0000020   o   g   l   e   .   c   o   m  \n
0000031

注意:脚本正在运行,su但脚本位于pmm用户的家中

答案1

您的交互式 shell正在使用别名因为curl这告诉它使用特定的网络代理:

type curl
curl is aliased to `curl -x 192.168.188.170:3128'

当您运行脚本时,不包括别名(它们主要用于交互使用),因此您需要自己指定缺少的部分。

#!/bin/bash
curl -x 192.168.188.170:3128 https://google.com

更好的解决方案可能是设置环境变量http_proxy而不是别名curl。这将适用于几乎所有网络工具(但也不能跨susudo除非目标用户也定义了它):

export http_proxy=192.168.188.170:3128

相关内容