쉘 스크립트에서 컬을 실행할 때 컬: (6) 호스트를 구문 분석할 수 없습니다: 오류가 나타납니다.

쉘 스크립트에서 컬을 실행할 때 컬: (6) 호스트를 구문 분석할 수 없습니다: 오류가 나타납니다.

이 명령을 실행하면 정상적으로 작동합니다.

# 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>

하지만 쉘 스크립트 .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

대화형 쉘별칭 사용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

관련 정보