Portál AbcLinuxu, 9. května 2025 22:57
#!/bin/bash
function ip2long(){
local IP="${1:?Missing ip in $FUNCNAME}"
local IP_SUM=0
local COUNT=3
for i in `echo "$IP"|sed 's:\.: :g'`; do
let IP_SUM+=$(($i<<($COUNT*8)))
let COUNT--
done
echo "$IP_SUM"
}
function najdiCZIP(){
ret="N"
long=`ip2long $1`
ipzac=`echo $1|cut -d. -f1`
if [ -n `cat tt.txt|grep +$ipzac+` ]
then
for k in `cat rozsahy.txt`
do
start=`echo $k|cut -c1-10`
stop=`echo $k|cut -c11-20`
#echo "$start $long $stop"
if [ $long -ge $start ] && [ $long -le $stop ]
then
ret="C"
break
fi
done
fi
echo $ret
}
najdiCZIP $1
#!/usr/bin/env python import socket, struct, sys def ascii_ip_ton(ascii_quad): return struct.unpack('!L',socket.inet_aton(ascii_quad))[0] tested_ip_a = sys.argv[1] tested_ip = ascii_ip_ton(tested_ip_a) for pair in file('site.txt'): pair = pair.strip() network_a, mask_a = pair.split('/') network = ascii_ip_ton(network_a) mask = ascii_ip_ton(mask_a) if tested_ip & mask == network: print tested_ip_a, 'belongs to', pairZa sekundu zvládne zkontrolovat příslušnost ke 100 000 sítím. Ani trochu jsem se nesnažil to optimalizovat. Kdyby to bylo pořád málo, je zde možnost kešovat IP adresy převedené do numerického formátu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.