2012-04-10 78 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