2016-07-29 26 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のための戻って複数のアドレスをあるかのように書かれていました。そうでない場合は、whileループが不必要です。

あなただけにして、1 IPを期待している場合:

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

注:

  • あなたのシェルの下または混合ケース名を使用するのがベストプラクティスであるので、私は、IPするIP変換変数。

  • My whoisは、国ではなく国である行を返します。だから、私は大文字小文字を区別しないようにしました。

+0

John1024これは私が必要としていたものです。あなたは、クッキーに値する! awkとsedの学習を開始する必要があり、しばらく延期しています。 あなたの票を上げることができません、私はランクが低いです:( –

関連する問題