Utilise la dernière version (du moins que j’ai trouvé je lui vois une grosse “bizarrerie” que je virerais dans la journée)
[code]#!/usr/bin/perl
Voici un script écris en perl, un langage de script au niveau très utilisé dans le monde Unix.
Ce script donc est une adaptation d’un script précédement posté mais en simplifié à fin
de mieux coller à un usage serveur.
En effet ce script tente de découvrir les machines d’un réseau local simple.
J’entends par simple un réseau qui possède un masque de sous-réseau de 255.255.255.0
En effet ce script va tenter d’envoyer une requête ICMP à chaque adresse du réseau.
Sa rapidité viens du délai de timeout très cours en prenant comme postulat que les
réseau ethernet sont aujourd’hui suffisement rapide.
Ce script possède comme dépendances le module Net::Ping qu’il faudras
installer si vous souhaitez vous en servir (si vous ne souhaitez pas vous en servir c’est
inutile de l’installer à moins que vous en ayez un autre usage mais cela dépasse alors
le cadre de ce texte descriptif)
TODO :
- le programme n’a jamais était démontré
- il faudrait qu’il cherche sur l’ordinateur l’adresse du réseau
(ou le couple adresse IP de la machine + masque de sous réseau)
- je ne sais plus si ce code a déjà était licencié, peut être faudrait-il le faire ?
- le passage à perl 6 n’a pas était testé
- je ne sais pas non plus à partir de quel version de l’interpréteur perl ce script fonctionne
- internationaliser ce script voir si des variables ne devrais pas être nommées en anglais
- traduire ce commentaire
- traduire la future démonstration de ce programme
- analyser les performances de ce programme, le profiler et tenter d’arrêter
les goulôts d’étranglements
- trouver des packageurs pour que le programme soit facilement installable sur divers
distributions
- vérifier si le programme est portable sur OpenBSD, NetBSD et FreeBSD notamment
- vérifier les performances sur divers architectures
- déployer un dépôt dans une forge logicielle
use strict;
use Switch;
use Net::Ping;
Initialisation
sub sizetot ()
{
stty -a
=~ /columns (\d*)/;
return $1;
}
my $nb = 0;
my $boucle = 0;
my $ping = Net::Ping->new(“icmp”, 0.3);
my $pourcent = 0;
my $size = 0;
$|++;
Déroulement
print “Scan des ordinateurs :\n”;
foreach my $i ( 1 … 254 ){
$size=$i/254*sizetot();
$pourcent=int($size/sizetot()*100);
my $u = length($bar) + 5;
if ($pourcent > 9){
++$u;
}
if ($ping->ping(“192.168.1.”.$i)){
++$nb;
}
}
$ping->close();
if ($nb == 0) {
system “shutdown -h now”;
}[/code]
Normalement je repasse dans le matinée pour virer des trucs qui vont être inutile pour toi.
Edit : J’ai enlevé les prints, je pense que tu l’utilise sur un serveur, non ?
Edit 2: J’ai retiré les appels à grep, cut et tr pour tout faire en perl.