3 pièce(s) jointe(s)
Besoin d'aide script perl MERCI
Pièce jointe 34432
Pièce jointe 34433
Pièce jointe 34434
bonjour je suis nouveau dans la programmation et je dois faire du perl j'aurais aimer avoir de l'aide concernant des script perl car je n'y comprend rien serais t'il possible que quelqu'un m'aide à faire un exercices avec explication SVP MERCI
Code:
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
| En vous servant des scripts
cs2tgz2
et
install_env_fj
et en vous inspirant du script
cgz
écrivez un script qui récupère les fichiers mentionnés dans cs2tgz2
dans leur version présente sur l'ordinateur où le script s'exécute
et en fait une archive compressée semblable à
env_fj.30.tgz
le nombre devant '.tgz' doit être celui de la version de cs que vous récupérez,
et que vous pouvez obtenir par 'csver'
Pour faire cela, il faut créer une structure telle que celle produite par la décompression
de env_fj.30.tgz
et la compresser ensuite comme le fait cgz
cs2tgz2 = point de départ, donnant la liste des fichiers qui doivent se retrouver dans le tgz pour l'utilisation 'chez soi' des fonctions de 'cs'
install_env_fj = script contenu dans le tgz et à utiliser pour l'installer 'chez soi'
cgz = script faisant partie de la configuration 'cs' et automatisant un type de compression
env_fj.30.tgz = compression permettant d'installer un environnement de type 'cs', sans accès réseau
(version pas identique à celle que votre script doit réaliser) |
Voici les 2 script :
Code:
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
| #!/usr/bin/perl
$files = <<FILES;
raf_liste etc
raf bin x
alias_liste etc
adaf bin x
cgz bin
mt bin
nv bin
install_env_fj bin
csver bin
csv.pl bin r
cs bin
FILES
# $files contient maintenant tous les paramètres de ma configuration standard
# et je peux la modifier très simplement
# le format que j'ai choisi sera explicité dans le 'foreach' qui suit
# (et qui utilise ces paramètres) :
# fichier répertoire exécution
# le 3° paramètre (exécution) étant optionnel
# pour chaque ligne on définit donc :
# le nom du fichier qu'il faut télécharger du serveur
# dans quel sous-répertoire (de /usr/local/) il faut le mettre
# et s'il faut l'exécuter :
# x : immédiatement
# r : à chaque démarrage
# pour utiliser les paramètres contenus dans $files,
# je préfère les transférer dans une variable de type vecteur,
# pour pouvoir utiliser 'foreach'
# cela se fait simplement par un 'split' avec une 'fin de ligne' (\n) comme séparateur
# (pour éviter une composante vide,
# correspondant à ce qu'il y a derrière le dernier \n,
# je fais d'abord un 'chomp'
chomp $files;
@files = split(/\n/,$files); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #!/usr/bin/perl
$param = shift;
$id=`whoami`;
chomp $id;
if ($id ne "root") {
print "Il faut être 'root' pour pouvoir installer la configuration standard\n";
exit;
}
system("cp bin/* /usr/local/bin/");
system("cp etc/* /usr/local/etc/");
system("/usr/local/bin/raf");
system("/usr/local/bin/adaf");
system("chmod +s /sbin/fdisk"); |
et le fichier cgz
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/usr/bin/perl
$nom = shift; # 1° paramètre à la ligne de commande
chomp $nom;
if ($nom eq "") {
print "\n1° paramètre = nom du répertoire à compresser\n";
print "2° paramètre (optionnel) = numéro de la version\n\n";
exit;
}
$nom =~ s/\///;
$version = shift; # 2° paramètre à la ligne de commande
chomp $version;
if ($version eq "") {
system("tar czvf $nom.tgz $nom");
} else {
system("tar czvf $nom.$version.tgz $nom");
} |