BlackLight Moderatore


Numero di messaggi: 277 Età: 25 Data d'iscrizione: 22.08.07
 | Oggetto: [Perl/C] Ip2Host Gio Ago 23, 2007 3:34 pm | |
| L'avevo già postato su altri forum, ma ora lo posto anche qui sul mio. Questo è un piccolo script in Perl che permette di conoscere il nome assegnato a un particolare host conoscendo il suo IP, l'ho fatto tempo fa quando ho cominciato a programmare più o meno seriamente in Perl: | Codice: | #!/usr/bin/perl
$args=$#ARGV+1;
if ($args<1) { print "Usage: perl ip2host.pl <ip>\n"; die(); }
$ip=$ARGV[0];
@numbers=split(/\./, $ip); $ip_number=pack("C4", @numbers); $name = (gethostbyaddr($ip_number, 2))[0];
if ($name) { print "Nome associato all'IP $ip: $name\n"; } else { print "Nessun nome associato all'IP $ip\n"; } |
Versione in C:
| Codice: | #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netdb.h>
extern int h_errno;
main(int argc, char **argv) { int i,N; int var1,var2,var3,var4; int addr; struct hostent *remote_host;
if (argc<2) { printf ("Uso: %s <addr1> ... <addrn>\n", argv[0]); exit(1); }
N=argc-1;
for (i=0; i<N; i++) { if (sscanf(argv[i+1],"%d.%d.%d.%d", &var1, &var2, &var3, &var4) != 4) { printf ("Attenzione: %s non è un indirizzo IPv4 valido\n", argv[i+1]); exit(2); }
addr = (int) inet_addr(argv[i+1]); remote_host = gethostbyaddr((char*) &addr, 4, AF_INET);
printf ("Nome corrispondente all'indirizzo IPv4 %s: %s\n", argv[i+1], remote_host->h_name); }
exit(0); } |
|
|