如何将输入添加到Shell脚本检索到的网站中,以便打印输出?

时间:2014-03-05 12:27:27

标签: shell

我在下面有以下Shell脚本,可以将网站下载到变量中。这是我所拥有的。我想要做的是当我执行带有参数(IP地址)的Shell脚本时,从控制台向该网站添加输入(接受IP地址并输出位置),以便它可以输出该地理位置。 IP地址。请任何人都可以帮忙。

 #! /bin/bash

 read input
 content=$(wget http://freegeoip.net -q )
 echo $content

2 个答案:

答案 0 :(得分:0)

您可能希望使用 curl - 请继续阅读以下网站中的文档:

http://curl.haxx.se/docs/httpscripting.html#GET

  

使用HTTP进行的最简单和最常见的请求/操作是获取URL。 URL本身可以指代网页,图像或文件。客户端向服务器发出GET请求并接收它要求的文档。如果您发出命令行

curl http://curl.haxx.se
     

您在终端窗口中返回了一个网页。该URL包含的整个HTML文档。

因此,您可以通过将 curl freegeoip.net/{format} / {ip_or_hostname} 的输出重定向到文件,然后从中获取所需的信息来实现您的目的。

答案 1 :(得分:0)

将以下内容另存为名为getgeo的文件:

#!/bin/bash
location=$(curl -s http://freegeoip.net/csv/$1)
echo $location

然后像这样使用它:

chmod +x getgeo
./getgeo 141.20.1.33
"141.20.1.33","DE","Germany","16","Berlin","Berlin","","52.5167","13.4000","",""

或者,如果您只想要第5个和第3个字段而没有引号,请执行以下操作:

./getgeo 141.20.1.33 | tr -d '"' | awk -F, '{print $5,$3}'
Berlin Germany

或者,您可以在脚本本身内进行修剪:

#!/bin/bash
location=$(curl -s http://freegeoip.net/csv/$1)
echo $location | tr -d '"' | awk -F, '{print $5,$3}'

如果您更喜欢解析XML或JSON,可以将/csv/更改为/XML//JSON/,您将获得以下内容:

<?xml version="1.0" encoding="UTF-8"?> <Response> <Ip>92.238.99.46</Ip> <CountryCode>GB</CountryCode> <CountryName>United Kingdom</CountryName> <RegionCode>E6</RegionCode> <RegionName>Gloucestershire</RegionName> <City>Gloucester</City> <ZipCode>GL3</ZipCode> <Latitude>51.8456</Latitude> <Longitude>-2.1575</Longitude> <MetroCode></MetroCode> <AreaCode></AreaCode> </Response>

或JSON

{"ip":"141.20.1.33","country_code":"DE","country_name":"Germany","region_code":"16","region_name":"Berlin","city":"Berlin","zipcode":"","latitude":52.5167,"longitude":13.4,"metro_code":"","areacode":""}

备注:

命令tr -d '"'从输入的任何内容中删除所有双引号:

-F,切换为awk表示使用逗号作为字段分隔符。