2012-04-10 25 views
1

http://www.geoiptool.com/en/?IP=慶典通過IP地址到一個URL在我的劇本

我需要一些幫助來寫一個bash腳本,讓我到任何IP傳遞給此URL。上面的網站是我想要我的腳本調用的URL。有人能讓我開始嗎?謝謝!

我想用這樣的腳本:echo IP_ADDRESS | geoiptool

當我回應一個IP並將其傳遞給我的腳本時,我在下面得到這個錯誤。是因爲 pipe命令沒有安裝?

-bash-3.2 $ echo 173.192.108.135 | geo -bash:echo:寫入錯誤:損壞的管道

回答

1

我建議使用命令行參數,而不是從標準輸入讀取。您可以使用$ 1指第一個參數,$ 2爲第二等

#!/bin/bash 
curl -s http://www.geoiptool.com/en/?IP=$1 

然後你只是火了:

geoiptool <IP> 
+0

謝謝。這樣做有什麼好處嗎? vs做'回聲 | geoiptool' – Jim 2012-04-10 13:36:29

+0

無論哪種方式,它都能正常工作,但這是更傳統的「unixish」方式。管道通常用於過濾器 - 像sed或grep這樣的程序需要大量的輸入,對它做些什麼,然後將其吐出。命令行參數通常用於指示選項和配置。 – 2012-04-10 13:39:18

+0

明白了。謝謝。這正是我需要知道的。 – Jim 2012-04-10 13:47:03

1

您可以使用read命令從stdin讀取並將地址存儲在變量中。然後使用wget發出HTTP請求:

read ip 
wget http://www.geoiptool.com/en/?IP=$ip 
1

好的。

可以使用read命令從stdin讀取一行,並將其分配給一個變量:

read variable 
echo "You said: $variable" 

而且curl是與HTTP網址交互的通常安裝命令行工具:

curl http://www.google.com/ 

(您也可以根據您的要求使用wgetlynx或其他工具)。

所以有一個非常簡單的腳本可能類似於:

URL="http://www.geoiptool.com/en/?IP=" 
read ipaddr 
curl --silent "$URL$ipaddr" 
+0

感謝您的指導。非常感激。 – Jim 2012-04-10 13:27:22