linux中shell用nali查询IP后比对数据输出对应的地区的脚本怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux中shell用nali查询IP后比对数据输出对应的地区的脚本怎么写相关的知识,希望对你有一定的参考价值。

数据1:北方地区列表.txt ;数据2:南方地区列表.txt 数据3:IP地址
用 “nali IP” 后会显示IP对应的地区,然后把这个地区在数据1与数据2中对比,然后显示出每个IP对应的是在南方地区还是北方地区(格式为:IP 所在城市 地区<南方/北方>),求喜欢linux shell脚本的高手

参考技术A 你这个问题有歧义,北方和南方数据既然已经在数据1和数据2里面了,干嘛还要对比呢?追问

。。。1 跟2是南方地区跟北方地区的列表,我是要根据查询IP显示的地址(湖北),去那2个表中找,最后会在数据2中找到湖北,就在此IP后面显示 湖北 南方,简单说来就是查找数据对比输出,可是不会写

参考技术B nali 是一个linux命令?追问

我晕。

追答

#!/bin/sh
IP=$1
diqu=`nali $IP | cut -d"[" -f2`
diqu=$diqu//]/
grep -v "^#" 北方.txt | grep $diqu > /dev/null
if [[ $? = 0 ]]; then
echo "$IP $diqu 地区"
fi
grep -v "^#" 南方.txt | grep $diqu > /dev/null
if [[ $? = 0 ]]; then
echo "$IP $diqu 地区"
fi

不过nali 查到的都是这类信息:
[root@puppetclient04 sh]# nali 202.120.2.101
202.120.2.101[上海交通大学 网络中心]

你列表里是什么格式。

追问

吉林
辽宁
。。。
是的 nali之后就是那个样子 然后再去表里对比输出
202.120.2.101[上海交通大学 网络中心] 南方
123.150.161.222[天津市 联通] 北方
这种格式的,可是还有一点,要是iplist里面的IP很多,nali输出之后就没有换行,全挤在一起了,怎么换行显示啊,每一行对应一条数据

追答

#!/bin/sh
iplist=`cat iplist`
for ip in $iplist
do
diqu=`nali $ip | cut -d"[" -f2`
diqu=`echo $diqu//]/ | cut -d" " -f1`
grep -v "^#" 北方地区列表.txt | grep $diqu > /dev/null
if [[ $? = 0 ]]; then
echo "$ip $diqu 地区"
fi
grep -v "^#" 南方地区列表.txt | grep $diqu > /dev/null
if [[ $? = 0 ]]; then
echo "$ip $diqu 地区"
fi
done

1、我不知道你说的iplist是什么形式的,在这我假设它是一个文件,里面存放的各种ip。
2、上面的shell还有一个问题,如果你的列表内只具体到城市而nali查出来的具体到了城市的某一区域,就显示不出来了。我没对nali查出来的内容做太多修改。
现在我只把用nali查出来的信息截取到: "上海交通大学" 、 "天津市" 这种程度。

本回答被提问者采纳

以上是关于linux中shell用nali查询IP后比对数据输出对应的地区的脚本怎么写的主要内容,如果未能解决你的问题,请参考以下文章

Linux下显示IP地理位置信息的小工具-nali

linux 第三方nali显示IP地址归属地

nali工具解析ip来源

nali命令

linux shell中怎么把IP的后两位用*替换

Linux校验比对文件一致性的shell脚本