当我运行这个命令时它工作正常:
# 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
。这将适用于几乎所有网络工具(但也不能跨su
或sudo
除非目标用户也定义了它):
export http_proxy=192.168.188.170:3128