Bash 스크립트가 원치 않는 파일을 생성합니다.

Bash 스크립트가 원치 않는 파일을 생성합니다.

결국 DD-WRT 라우터에서 이 스크립트를 만들었고 두 개의 원치 않는 파일이 생성되었는데 그 이유를 알 수 없는 것 같습니다. 저는 스크립팅 천재가 아니며 특히 bash이므로 도움을 주시면 대단히 감사하겠습니다.

#!/bin/sh

sleep 30
mkdir /tmp/myvpn; cd /tmp/myvpn

# ... doing stuff...

while [ 1 ]
do
  r1=`wget -q http://ipinfo.io/ip` > /dev/null
  r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null
  if [ $r2 -eq "XX" ] 
    then echo "XX OK" > /tmp/myvpn/result_check_vpn.txt
    else
        echo "XX NOK" > /tmp/myvpn/result_check_vpn.txt
        killall -q openvpn
        sleep 5
        openvpn --config /tmp/openvpncl/openvpn.conf --route-up /tmp/myvpn/route-up.sh --down-pre /tmp/myvpn/route-down.sh --daemon
        sleep 25
        sh /proc/net/ip_conntrack_flush
  fi
sleep 180
done

이 스크립트는 /tmp/myvpn에 "country" 및 "ip"라는 두 개의 원치 않는 파일을 생성합니다. 제가 뭔가 잘못한 게 틀림없어요. 기본적으로 스크립트는 국가를 효과적으로 변경했는지 확인하여 VPN이 올바르게 설정되었는지 확인하려고 시도합니다(이 확인을 수행하는 데 필요함).

답변1

이러한 파일은 다음 두 명령으로 생성됩니다.

r1=`wget -q http://ipinfo.io/ip` > /dev/null
r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null

좋아요, 두 번째는 문법 오류인데 철자 오류인 것 같아요. 이 wget명령의 형식은 다음과 같습니다.

wget http://www.example.com/file

그런 다음 다운로드하여 file현재 디렉터리에 저장합니다. 어떤 일이 일어날 것으로 예상하는지 알려주지 않으셨기 때문에 파일 내용을 변수에 저장하고 싶으신 것 같습니다. 그렇다면 wget다음 명령을 사용하여 표준 출력으로 인쇄 해야 합니다 -O -.

r1="$(wget -qO - http://ipinfo.io/ip)"
r2="$(wget -qO - http://ipinfo.io/$r1/country)" 

> /dev/null물론 출력( )을 리디렉션할 수는 없습니다. 이는 아무 것도 인쇄되지 않음을 의미하기 때문입니다.

관련 정보