我在下面有以下Shell脚本,可以将网站下载到变量中。这是我所拥有的。我想要做的是当我执行带有参数(IP地址)的Shell脚本时,从控制台向该网站添加输入(接受IP地址并输出位置),以便它可以输出该地理位置。 IP地址。请任何人都可以帮忙。
#! /bin/bash
read input
content=$(wget http://freegeoip.net -q )
echo $content
答案 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
表示使用逗号作为字段分隔符。