The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Как определить IP по домену!?"
Отправлено Tozix, 17-Авг-11 19:08 
Без заморочек именно само определение IP адреса, а сравнение на принадлежность к списку сетям уже выполнил с помощью AWK. Нарыл в интернете может кому полезно будет:
#!/bin/bash
IP=$1
MASK_FILENAME="ip_tasix" #файл со списком подсетей
while read line ; do
   ip=$(echo $line | awk -F '/' '{ print $1 }')
   mask_digit=$(echo $line | awk -F '/' '{ print $2 }' )
   mask_seg1=$(echo $ip | awk -F '.' '{ print $1 }' )
   mask_seg2=$(echo $ip | awk -F '.' '{ print $2 }' )
   mask_seg3=$(echo $ip | awk -F '.' '{ print $3 }' )
   mask_seg4=$(echo $ip | awk -F '.' '{ print $4 }' )

   ip_seg1=$(echo $IP | awk -F '.' '{ print $1 }' )
   ip_seg2=$(echo $IP | awk -F '.' '{ print $2 }' )
   ip_seg3=$(echo $IP | awk -F '.' '{ print $3 }' )
   ip_seg4=$(echo $IP | awk -F '.' '{ print $4 }' )

   mask_val=$(( ( ($mask_seg1 << 24) + ($mask_seg2 << 16) + ($mask_seg3 << 8) + $mask_seg4 ) & ~(((1 << (32-$mask_digit)) -1)) ))
   ip_val=$(( ( ($ip_seg1   << 24) + ($ip_seg2   << 16) + ($ip_seg3   << 8) + $ip_seg4   ) & ~(((1 << (32-$mask_digit)) -1)) ))
   if [ $mask_val -eq $ip_val ] ;then
      exit 0
   fi
done < $MASK_FILENAME
exit 1


Работает не шибко быстро, но лучше пока ничего нет.

Вот к сожалению на bash нет аналога PHP функции gethostbyname(); , пришлось делать костыли через ПЫХ. Работает конечно быстро, но хотелось найти подобное решение но без php.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру