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:
Versione in C:
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);
}