使用ip库可以做到。但十分不方便。(nali)
nali安装
解压
./configue && make && make install
我这里用外部url来获取相关信息。
最常见的www.ip138.com www.ip.cn什么的都可以获取到目标IP的地区和运营商。
但适用于shell脚本的还是ip.cn舒坦。
复制内容到剪贴板
代码:
[root@localhost ~]# curl ip.cn?ip=114.114.114.114
IP:114.114.114.114 来自:江苏省南京市 信风网络
[root@localhost ~]#
用curl命令就搞定了。但想把内容拆分一下给到变量使用时确发现他万恶的用了中文符号
复制内容到剪贴板
代码:
:
。
用awk -F 倒也是可以搞定。如下:
复制内容到剪贴板
代码:
[root@localhost ~]# cat getip.sh
#!/bin/bash
Getip=$(curl -s ip.cn?ip=$1)
IParea=$(echo $Getip|awk -F ":" '{print $3}'|awk '{print $1}')
IPisp=$(echo $Getip|awk -F ":" '{print $3}'|awk '{print $2}')
if [ ! $1 ];then
IP=$(echo $Getip|awk -F ":" '{print $2}'|awk '{print $1}')
echo $IP $IParea $IPisp
else
echo $1 $IParea $IPisp
fi
[root@localhost ~]# ./getip.sh 114.114.114.114
114.114.114.114 江苏省南京市 信风网络
但还是有点不方便。于是各种百度弄了段php的代码来转换一下ip.cn的输出结果:
复制内容到剪贴板
代码:
<?php
header("Content-Type: text/html;charset=utf-8");
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
$ip = ($_GET["ip"]) ? $_GET["ip"] : $user_IP;
$ch = curl_init("http://www.ip.cn?ip=$ip");
curl_setopt($ch,CURLOPT_USERAGENT,'curl/7.31');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$output = curl_exec($ch);
$output2 = substr($output,5);
$row=split(' ',$output2);
$cip=$row[0];
$carea=substr($row[1],9);
$cisp=$row[2];
$s = ($_GET["s"]) ? $_GET["s"] : "0";
if ($s==0)
{
echo "$cip $carea $cisp";
}
else
{
$carea1=substr($carea,0,9);
echo "$cip $carea1 $cisp";
}
curl_close($ch);
?>
复制内容到剪贴板
代码:
[root@localhost html]# curl localhost?ip=114.114.114.114
114.114.114.114 江苏省南京市 信风网络
[root@localhost html]#
随便找个空间一放。以后用的时候直接访问自己的页面就可以了。