Проверка по IP диапозону.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- рядовой
- Сообщения: 24
- Зарегистрирован: 2007-08-10 12:10:26
Проверка по IP диапозону.
Как в shell можно реальзовать проверку по диапозону IP.
Дается Ip адрес 192.168.130.45 и если он оходит в сеть 192.168.128.0/20 то приписывает переменой значения а если не входит скрипт идет дальше.
Дается Ip адрес 192.168.130.45 и если он оходит в сеть 192.168.128.0/20 то приписывает переменой значения а если не входит скрипт идет дальше.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Проверка по IP диапозону.
http://www.lissyara.su/?id=1517
глянь - может он умеет возвращать разное значение в зависмости от результата.
или вывод парсить
глянь - может он умеет возвращать разное значение в зависмости от результата.
или вывод парсить
Убей их всех! Бог потом рассортирует...
-
- рядовой
- Сообщения: 24
- Зарегистрирован: 2007-08-10 12:10:26
Re: Проверка по IP диапозону.
С ipcalc сомого начало пытался но не получатся. Слаб еше чтоб хорошо прогромировать на shell.
Вродебы он может сравнивать ип. Как написать проверку вида на shell:
Может есть идее как можно в mysql это реализовать.
Вродебы он может сравнивать ип. Как написать проверку вида на shell:
Код: Выделить всё
if 192.168.128.0 < 192.168.130.45 < 192.168.143.255
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Проверка по IP диапозону.
дополнить все биты до трёх цифр, склеить и сравнить как цифры.
это навскидку
это навскидку
Убей их всех! Бог потом рассортирует...
- NoResponse
- мл. сержант
- Сообщения: 76
- Зарегистрирован: 2007-07-30 1:39:02
- Контактная информация:
Re: Проверка по IP диапозону.
лис, я кодер со стажем... какие цифры.. какие быты ???... ты что курил ?.. поделись ))))
Я сам по себе скопище энтропии. А по законам термодинамики, если не принимать никаких действий энтропия стремится к бесконечности. Похоже, так оно и есть.
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Проверка по IP диапозону.
первый адрес - цифр не хватает в последнем разряде адреса, второй адрес - там же, в третьем всё путём.if 192.168.128.0 < 192.168.130.45 < 192.168.143.255
преобразуем сначала так:
Код: Выделить всё
if 192.168.128.000 < 192.168.130.045 < 192.168.143.255
Код: Выделить всё
if 192168128000 < 192168130045 < 192168143255
Убей их всех! Бог потом рассортирует...
-
- рядовой
- Сообщения: 24
- Зарегистрирован: 2007-08-10 12:10:26
Re: Проверка по IP диапозону.
А ка это сделать не поскажешь?
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Проверка по IP диапозону.
разобрать на октеты
проверить длинну октетов.
если короткие - дополнить слева нулями
собрать из октетов одну строку
проверить длинну октетов.
если короткие - дополнить слева нулями
собрать из октетов одну строку
Убей их всех! Бог потом рассортирует...
-
- рядовой
- Сообщения: 24
- Зарегистрирован: 2007-08-10 12:10:26
Re: Проверка по IP диапозону.
Сделал так:
Может кто сделает болиее красивой форме. Буду очень рад.
Код: Выделить всё
from_IP=`192.168.0.12` #Какой IP проверить
un=0
#Разбор IP
IP1=`echo "${from_IP}" |replace '.' ' '|awk '{print $1*256*256*256}'`
IP2=`echo "${from_IP}" |replace '.' ' '|awk '{print $2*256*256}'`
IP3=`echo "${from_IP}" |replace '.' ' '|awk '{print $3*256}'`
IP4=`echo "${from_IP}" |replace '.' ' '|awk '{print $4}'`
IP=`echo $((${IP4}+${IP3}+${IP2}+${IP1}))`
#Проверка IP
if [ 3232235520 -le ${IP} -a 3232235725 -ge ${IP} ] ; then
un=1
fi
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Проверка по IP диапозону.
в авк есть функци splitDjo писал(а):Может кто сделает болиее красивой форме. Буду очень рад.
Код: Выделить всё
split(s, a, fs)
splits the string s into array elements a[1], a[2], ..., a[n],
and returns n. The separation is done with the regular expres-
sion fs or with the field separator FS if fs is not given. An
empty string as field separator splits the string into one array
element per character.
Код: Выделить всё
#!/bin/sh
IP1=`echo $1 | awk '{split($1, a, "."); print a[1] *256*256*256 + a[2] *256*256 + a[3] *256 + a[4]}'`
echo $IP1
Код: Выделить всё
#!/bin/sh
IP_FROM="192.168.0.1"
IP1=`echo $IP_FROM | awk -F. '{print $1*256^3 + $2*256^2 + $3*256 + $4}'`
echo $IP1
Последний раз редактировалось zg 2008-03-24 14:05:49, всего редактировалось 1 раз.
- NoResponse
- мл. сержант
- Сообщения: 76
- Зарегистрирован: 2007-07-30 1:39:02
- Контактная информация:
Re: Проверка по IP диапозону.
кстати, а как лучше разбить на октеты... с регэксом у меня буда
Я сам по себе скопище энтропии. А по законам термодинамики, если не принимать никаких действий энтропия стремится к бесконечности. Похоже, так оно и есть.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Проверка по IP диапозону.
awk -F.
-
- рядовой
- Сообщения: 24
- Зарегистрирован: 2007-08-10 12:10:26
Re: Проверка по IP диапозону.
спасибо большое. Очень хоршо работает.zg писал(а): ....
Но у меня вопрос. Почему как написал я не работала по крону(не разберает ипи, нуливое значения возрашает), а твой вариант работает все прикрасно.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Проверка по IP диапозону.
потому, что переменная $PATH в кроне содержит не все пути, которые есть в консолиDjo писал(а):Почему как написал я не работала по крону(не разберает ипи, нуливое значения возрашает), а твой вариант работает все прикрасно.
Код: Выделить всё
zg# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/root/bin
zg# grep PATH /etc/crontab
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
zg#
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: Проверка по IP диапозону.
Попробуй вот такую штуку (на shell это - изврат):
Код: Выделить всё
#!/usr/bin/perl
##################################
#created by zingel 26/07/07 0:26 #
##################################
if(@ARGV<2){print "Usage: $0 <start IP> <port>\n";exit;}
else{
use IO::Socket;
$sIP="@ARGV[0]";
$port="@ARGV[1]";
($ip1,$ip2,$ip3,$ip4)=split(/\./,$sIP);
while($ip4<254){
$ipaddr="$ip1.$ip2.$ip3.$ip4";
IP_connect();
$ip4++;
}
}
sub IP_connect {
$z=IO::Socket::INET->new(
PeerAddr=>"$ipaddr",PeerPort=>"$port",Proto=>"tcp",Timeout=>"5")
or warn "Cannot connect to $ipaddr\n";
if($z){print "Connect! - $ipaddr:$port\n";}
close($z)
}
Z301171463546 - можно пожертвовать мне денег
- Alex Keda
- стреляли...
- Сообщения: 35469
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Проверка по IP диапозону.
странный у вас формат записи...
непонятно где год где месяц...
В данном случае - проблем не возникает, а вот через месяц - они будут...
непонятно где год где месяц...
В данном случае - проблем не возникает, а вот через месяц - они будут...
Убей их всех! Бог потом рассортирует...
-
- проходил мимо
Re: Проверка по IP диапозону.
Можно так попробовать:)
#!/bin/sh -
#Например примем такие данные
Subnet=1.1.1.1
BroadCast=1.1.1.255
IP="1.1.1.200"
IsIpInSubnet() {
for a in 1 2 3 4
do
let Subnet$a=`echo $Subnet | cut -f$a -d'.'`
let BroadCast$a=`echo $BroadCast | cut -f$a -d'.'`
let IP$a=`echo $IP | cut -f$a -d'.'`
done
#echo $IP1, $IP2, $IP3, $IP4
#echo $Subnet1, $Subnet2, $Subnet3, $Subnet4
#echo $BroadCast1, $BroadCast2, $BroadCast3, $BroadCast4
if [[ IP1 -ge Subnet1 &&
IP2 -ge Subnet2 &&
IP3 -ge Subnet3 &&
IP4 -ge Subnet4 &&
IP1 -le BroadCast1 &&
IP2 -le BroadCast2 &&
IP3 -le BroadCast3 &&
IP4 -le BroadCast4 ]] ; then
return 0
else
return 1
fi
}
#Пример использования
IsIpInSubnet
if [ $? -eq 0 ] ; then
echo IP-address $IP in subnet $Subnet!!!!!!! with broadcast $BroadCast
else
echo IP-address $IP is not in subnet $Subnet!!!!!!! with broadcast $BroadCast
fi
#!/bin/sh -
#Например примем такие данные
Subnet=1.1.1.1
BroadCast=1.1.1.255
IP="1.1.1.200"
IsIpInSubnet() {
for a in 1 2 3 4
do
let Subnet$a=`echo $Subnet | cut -f$a -d'.'`
let BroadCast$a=`echo $BroadCast | cut -f$a -d'.'`
let IP$a=`echo $IP | cut -f$a -d'.'`
done
#echo $IP1, $IP2, $IP3, $IP4
#echo $Subnet1, $Subnet2, $Subnet3, $Subnet4
#echo $BroadCast1, $BroadCast2, $BroadCast3, $BroadCast4
if [[ IP1 -ge Subnet1 &&
IP2 -ge Subnet2 &&
IP3 -ge Subnet3 &&
IP4 -ge Subnet4 &&
IP1 -le BroadCast1 &&
IP2 -le BroadCast2 &&
IP3 -le BroadCast3 &&
IP4 -le BroadCast4 ]] ; then
return 0
else
return 1
fi
}
#Пример использования
IsIpInSubnet
if [ $? -eq 0 ] ; then
echo IP-address $IP in subnet $Subnet!!!!!!! with broadcast $BroadCast
else
echo IP-address $IP is not in subnet $Subnet!!!!!!! with broadcast $BroadCast
fi
-
- проходил мимо
Re: Проверка по IP диапозону.
Subnet конечно 1.1.1.0 который в примере