1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#!/usr/bin/perl
#author : pierre olier
#version : 1.9
#desc : script de modification du fichier squid.conf en fonction des parametres : nom du pc, valeur a changer, valeur a modifie
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
#on appelle la methode de modification
&update();
#on affiche une page qui permet le retour sur la page interface
print $cgi->header(),
$cgi->start_html( -title=>'graphisme proxy', -style=>{src=>'style.css'});
print '<div \n id=lgd>';
print $cgi->h1('Salle informatique'),
$cgi->p('La modification a bien été effectuee.'),
$cgi->a({-href => 'interface_pc_proxy.cgi'},'Retour à l\'interface de connection internet.');
print '<div>';
print $cgi->end_html();
#update
#modifie le fichier squid.conf
sub update
{
require "cgi-lib.pl";
#on creer un tableau
$champs= {};
#on affecte la valeur qui sont dans l entree standard dans le tableau
ReadParse($champs);
#on affecte ces valeurs a des variables plus facile a utiliser
$pc = $champs->{"pc"};
$perm = $champs->{"perm"};
$chang = $champs->{"chang"};
#J'ouvre mon fichier en lecture
open FILE, "< squid.conf" or die "$!\n";
#J'en crée et ouvre un 2ème pour l'écriture
open FILE_DEST, ">> squid.conf.new" or die "$!\n";
while(<FILE>){
#Je détecte le PC que je veux modifier ainsi que le mot à changer
if(/$pc\b/ and /$chang/){
#Si je trouve, je fais ma modification et je l'écris sur le
#2ème fichier
s/$chang/$perm/g;
print FILE_DEST;
}
else {
#Sinon, je ne fais qu'écrire sur le 2ème fichier
print FILE_DEST;
}
}
close FILE and close FILE_DEST;
#Je détruis le premier fichier et je renomme le 2ème au nom du premier
unlink("squid.conf");
rename("squid.conf.new", "squid.conf");
unlink("squid.conf.new");
#################FINI !!!#################
}
1; |
Partager