원치 않는 파일을 생성하는 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물론 출력( )을 리디렉션할 수는 없습니다 . 이는 아무것도 인쇄되지 않음을 의미하기 때문입니다.

관련 정보