The OpenNET Project / Index page

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

Работа с сетью и IP адресами на Perl

   Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Работа с сетью и IP адресами на Perl

----* Подсчет exim трафика с разделением на локальный и мировой   Автор: DelGod  [комментарии]
  В файле конфигурации exim пишем:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Пример perl скрипта для привязки программы к сетевому порту (доп. ссылка 1)   Автор: Y4Ho  [комментарии]
  Скрипт демонстрирует организацию серверного приложения с
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как в perl выполнить DNS преобразование IP в имя и наоборот.   [комментарии]
 
Из IP в имя:
   use Socket; 
   my $host = gethostbyaddr(inet_aton("192.168.1.1"), AF_INET); 

Из хоста в IP:
   use Socket; 
   my $ip = inet_ntoa((gethostbyname("www.test.ru"))[4]);
 
----* Как пропатчить приложение запускаемое через inetd для определения IP клиента.   Автор: uldus  [обсудить]
 
Си:
   struct sockaddr_in addr_name;
   socklen_t addr_len;
   addr_len = sizeof(addr_name);
   bzero(&addr_name, sizeof(addr_name));
   if (getpeername(0, (struct sockaddr *)&addr_name, &addr_len) >= 0){                          
     // выводим адрес в printf через inet_ntoa(addr_name.sin_addr)
   } 

Perl:
   use Socket;
   my $std_sockaddr = getpeername(STDIN);
   my $cur_ipaddr = "0.0.0.0";
   if (defined $std_sockaddr){
      my ($tmp_port, $tmp_iaddr) = sockaddr_in($std_sockaddr);
      $cur_ipaddr = inet_ntoa($tmp_iaddr);
   }
 
----* Пример использования Net::FTP для доступа к FTP в Perl   [комментарии]
 
$ftp = Net::FTP->new("ftp сервер", Timeout => 30, Debug => 0) || die "Can't
connect to ftp server.\n";
$ftp->login("логин", "пароль") || die "Can't login to ftp server.\n";
$ftp->cwd("переход в директорию") || die "Path $cfg_remote_path not found on ftp server.\n";
$ftp->binary();
$size = $ftp->size("файл для которого нужно узнать размер");
$time = $ftp->mdtm("файл для которого нужно узнать время изменения");
$ftp->delete("директория для удаления");
$ftp->mkdir("директория для создания");
$ftp->rename("старое имя для переименования","новое имя");
$ftp->put("имя файла на локальном диске для закачки", "имя файла на ftp");
$ftp->put(*FD, "имя файла на ftp"); # Все что идет в FD будет сохранено.
$ftp->get("удаленный файл", "локальный файл");
$ftp->quit();
 
----* Как по IP адресу хоста и маске подсети определить адрес подсети.   [комментарии]
 
$ip = "192.168.1.43";
$nm = "255.255.255.224";
print "\nip addr = $ip\nnetmask = $nm\n";
($ip1, $ip2, $ip3, $ip4) = split(/\./, $ip);
($nm1, $nm2, $nm3, $nm4) = split(/\./, $nm);
$sb1=$ip1 & $nm1; $sb2=$ip2 & $nm2; $sb3=$ip3 & $nm3; $sb4=$ip4 & $nm4;
print "subnet  = $sb1\.$sb2\.$sb3\.$sb4\n\n";
 
----* Операции проверки IP на вхождение в сеть a.b.c.d/N или a.b.c.d/n.n.n.n (доп. ссылка 1)   [комментарии]
  $find_net = '123.123.45.4/30'; $some_ip = '123.123.45.5'; my ($net_ip, $net_mask) = split(/\//, $find_net); my ($ip1, $ip2, $ip3, $ip4) = split(/\./, $find_net); my $net_ip_raw = pack ('CCCC', $ip1, $ip2, $ip3, $ip4);
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 

 Версия для печати





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

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