2016-07-29 4 views
1

나는 나에게 내 외부 IP와가에 위치하고 국가를 표시합니다 나는 인터넷과 일부 bash는 튜토리얼에서 찾을 수있는 내용을 기반으로하는 스크립트를 만들었습니다.나라와 외부 IP 배쉬 스크립트

#

스크립트 외모 같은 :

#!/bin/bash 

wanip=$(dig +short myip.opendns.com @resolver1.opendns.com); 
echo "$wanip" > /root/Documents/filewanip; 
iplist="/root/Documents/filewanip" 

while read IP;do 
whois "$IP" 
done < "$iplist" | grep "country" >geoloc 
cat geoloc filewanip 
rm filewanip geoloc 
#

출력은 다음과 같습니다 국가 : 네덜란드를 183.64.132.80

#

문제는 시스템에서 시스템으로 파일 구조가 변경됨에 따라 파일을 사용하고 싶지 않다는 점입니다. 어떻게 체크를하고 변수에 저장 한 다음 쉘에 직접 표시 할 수 있도록 우아한 방법으로 만들 수 있습니까? 존 코너

답변

1

내가 알고있는 것처럼

, 당신의 목표는 임시 파일의 사용을 제거하는 것입니다.

#!/bin/bash 
wanip=$(dig +short myip.opendns.com @resolver1.opendns.com); 
echo "$wanip" | while read ip; do 
    echo "$ip $(whois "$ip" | awk ' /[Cc]ountry/{print $2}')" 
done 

위는 귀하의 IP에 대한 dig 반환 개 이상의 주소처럼 작성되었습니다 :이 경우. 그렇지 않은 경우 while 루프가 불필요합니다.

당신은 단지 다음 하나 개의 IP, 기대하는 경우 :

#!/bin/bash 
ip=$(dig +short myip.opendns.com @resolver1.opendns.com); 
echo "$ip $(whois "$ip" | awk ' /[Cc]ountry/{print $2}')" 

참고 : 나는 당신의 쉘에 대한 낮은 사용하는 모범 사례 또는 혼합 된 경우 이름을 때문에 IP에서 IP로 변환

  • 을 변수.

  • whois은 국가가 아닌 국가가있는 행을 반환합니다. 그래서 저는 대소 문자를 구분하지 않습니다.

+0

John1024 이것은 내가 필요한 것입니다. 너는 쿠키를받을 가치가있어! awk와 sed를 배우기 시작해야합니다. 잠시 연기해야합니다. 투표 할 수 없다. 나는 순위가 낮다. ( –