bash将ip地址传递到脚本中的URL

bash将ip地址传递到脚本中的URL,bash,Bash,我需要一些帮助来编写一个bash脚本,它允许我将任何给定的IP传递到这个URL。上面的站点是我想调用脚本的URL。有人能帮我开始吗?谢谢 我想这样使用我的脚本:echo IP|u ADDRESS | geoiptool 当我回显一个IP并将其传输到我的脚本时,我在下面得到了这个错误。是因为 是否未安装管道命令 -bash-3.2$echo 173.192.108.135 | geo -bash:echo:write error:break pipe您可以使用read命令从stdin读取并将地址存

我需要一些帮助来编写一个bash脚本,它允许我将任何给定的IP传递到这个URL。上面的站点是我想调用脚本的URL。有人能帮我开始吗?谢谢

我想这样使用我的脚本:echo IP|u ADDRESS | geoiptool

当我回显一个IP并将其传输到我的脚本时,我在下面得到了这个错误。是因为 是否未安装管道命令

-bash-3.2$echo 173.192.108.135 | geo
-bash:echo:write error:break pipe

您可以使用
read
命令从
stdin
读取并将地址存储在变量中。然后使用
wget
发出HTTP请求:

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


您可以使用
read
命令从
stdin
读取一行,并将其分配给变量:

read variable
echo "You said: $variable"
curl
是一个常用的命令行工具,用于与HTTP URL交互:

curl http://www.google.com/
(您也可以使用
wget
lynx
或其他工具,具体取决于您的需求)

因此,一个非常简单的脚本可能如下所示:

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

我建议使用命令行参数,而不是从stdin读取。可以使用$1引用第一个参数,使用$2引用第二个参数,以此类推

#!/bin/bash
curl -s http://www.geoiptool.com/en/?IP=$1
然后你只需通过以下方式启动它:

geoiptool <IP>
geoiptool

谢谢您的指导。非常感谢,谢谢。这样做有好处吗?与使用“echo | geoiptool”相比,这两种方法都很好,但这是更传统的“单向”方法。管道通常用于过滤器——像sed或grep这样的程序,它们接收大量的输入,对其执行一些操作,然后将其吐出。命令行参数通常用于指示选项和配置。明白了。谢谢这正是我需要知道的。