From: Peire VIDEAU Newsgroups: fr.comp.os.linux Subject: Parachevement de pppd Date: Thu, 03 Jul 1997 17:33:59 -0100 Message-ID: <33BBF097.884E900@cica.fr> Lorsque vous etes sur un reseau prive et que vous vous connectez via "ppp", vous devez bien souvent parachever votre connexion en mettant a jour la route par defaut, le nom du domaine et les adresses IP des serveurs de nom de votre "ISP" et tester ainsi votre nouveau "hostname". C'est ce que realise le petit script ci-dessous ecrit en Perl. #!/usr/bin/perl -w use strict; if (!$ARGV[0]) { print "usage : $0 provider\n"; exit; } # resolv # key words: # complete pppd, default route, domain name, hostname # author: Peire Videau (June 1997) my $provider = $ARGV[0]; my $ifconfig = "/sbin/ifconfig"; my $route = "/sbin/route"; my $cp = "/bin/cp"; my $netstat = "/bin/netstat"; my $nslookup = "/usr/bin/nslookup"; my $hostname = "/bin/hostname"; open(IFCON, "$ifconfig |") or die "Can't execute $ifconfig : $!\n"; my $count = 0; while() { if(/addr:(\S+)\s+P\-t\-P\:(\S+)\s/) { $count++; &delrte; system("$route add default gw $2"); print "Default route : $2\n"; system ("$cp /etc/resolv.$provider /etc/resolv.conf"); # in file /etc/resolv.$provider there are : # domain name, first name server address, second name server address # of the provider. &nslkp($1); last; } } if ($count == 0) { print "pppd for $provider is dead!\n"; } sub delrte { # Delete a previous default route if any open (DEFAULT, "$netstat -rn |") or die "Can't execute $netstat : $!\n"; while() { if (/^0\.0\.0\.0/) { system("$route del default"); last; } } } sub nslkp { # Find hostname with "nslookup" or "dig" my ($adr) = @_; my $count = 0; open (NSLOOKUP, "$nslookup $adr |") or die "Can't execute $nslookup : $!\n"; while () { if (/Name:\s+(\S+)/) { $count++; print "IP address : $adr, Hostname : $1\n"; &hstnme($1); last; } } if ($count == 0) { print "No hostname for $adr!\n"; } } sub hstnme { # Update hostname # Here, you can update the file: /etc/hosts my ($hstnme) = @_; my ($host, $domain) = split(/\./,$hstnme); system ("$hostname $host"); } --------------3B419E40227CCD3E4F6F6B22--