이 명령을 실행하면 정상적으로 작동합니다.
# 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