Aide sur mon script perl
Résolu
specimen35
Messages postés
343
Date d'inscription
Statut
Membre
Dernière intervention
-
specimen35 Messages postés 343 Date d'inscription Statut Membre Dernière intervention -
specimen35 Messages postés 343 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voici mon script
Bon on va structurer ce que j'ai vue :
1) il manque un ; à la fin de la ligne 7 : d'accor ou pas d'accord
2) Utiliser Sed est il bon d'apres vous car je ne suis pas sûr de ce que cela filtre.
avec sed voici le principe :
Code :
je ve recupérer les données que je vien de faire avec sed puis les mettre en variable soit :
Code :
d'accord du code ou pas d'accord
3) Pour moi le programme boucle indéfiniement, vu que ni $recup, ni $ligne ne sont modifiés dans la boucle. D'ailleurs, si je comprend bien le code, il serait même plus judicieux de "parser" le résultat du "repquota" dans la boucle. Mais comment ces une de mes grande question
d'autre suggestion sur mon code je suis prenneur merci
voici mon script
#!/usr/bin/perl -w use strict; use DBI; use CGI; my $cgi = new CGI; my $recup = ` sed -e '1,/-\+/d;/^$/,$d' repquota -v/chemin` my ($user1,$used1,$soft1,$hard1,$grace1,$used2,$soft2,$hard2,$grace2); print "Content-type: text/html\n\n"; #Connection à la base de données mysql avec le module dbd::mysql (conncetion à distance) $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", $user, $password, {RaiseError => 1}); #Requete sur la base de donnée my $query = sprintf("INSERT INTO foo VALUES (%d, %s)", $number, $dbh->quote("name")); $dbh->do($query); while ($ligne = $recup){ # récupération des éléments ($user1,$used1,$soft1,$hard1,$grace1,$used2,$soft2,$hard2,$grace2) = split /;/,$ligne; # et on insere dans la base $db->do("insert into client values ('$user1','$used1','$soft1','$hard1','$grace1','$used2','$soft2','$hard2','$grace2')" ); or die "pb de requete : $DBI::errstr";
Bon on va structurer ce que j'ai vue :
1) il manque un ; à la fin de la ligne 7 : d'accor ou pas d'accord
2) Utiliser Sed est il bon d'apres vous car je ne suis pas sûr de ce que cela filtre.
avec sed voici le principe :
Code :
sed -e '1,/-\+/d;/^$/,$d' rep //rep = fichier root -- 157696 0 0 12 0 0 uucp -- 40 0 0 76 0 0 fradin -- 2304352 2500000 2550000 12465 50000 55000
je ve recupérer les données que je vien de faire avec sed puis les mettre en variable soit :
Code :
my ($user1,$used1,$soft1,$hard1,$grace1,$used2,$soft2,$hard2,$grace2);
d'accord du code ou pas d'accord
3) Pour moi le programme boucle indéfiniement, vu que ni $recup, ni $ligne ne sont modifiés dans la boucle. D'ailleurs, si je comprend bien le code, il serait même plus judicieux de "parser" le résultat du "repquota" dans la boucle. Mais comment ces une de mes grande question
d'autre suggestion sur mon code je suis prenneur merci
A voir également:
- Aide sur mon script perl
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Denon perl pro test - Accueil - Audio
51 réponses
#!/usr/bin/perl use strict;use warnings; use DBI; use Quota; my $base = 'test'; my $host = '10.27.0.51'; my $user = 'user'; my $pass = ''; my $mysql_sock = '/var/run/mysqld/mysqld.sock'; #Connection à la base de données #my $db = DBI->connect("DBI:mysql:database=$base; # host=$host; # mysql_socket=$mysql_sock", # $user, # $pass, # {RaiseError => 1} # ); my $dev = Quota::getdev('/home'); # à modifier avec ton chemin while(my ($nom,$uid) = (getpwent())[0,2]){ my @tmp = Quota::query($dev,$uid); # if(scalar(grep{$_!=0}@tmp)>0){ # my($u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2) = @tmp; print "$u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2\n"; } #} __END__ ~ ~ ~ ~ ~ ~ ~
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fait comme ça
while(my ($nom,$uid) = (getpwent())[0,2]){ my @tmp = Quota::query($dev,$uid); # if(scalar(grep{$_!=0}@tmp)>0){ # my($u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2) = @tmp; # print "$u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2\n"; # } print "@tmp\n"; }
voila se que j'ai dans mon script
Et sa me donne un gros trou blanc !! quand je l'execute ( trou blanc = a la ligne plein de fois )
#!/usr/bin/perl use strict;use warnings; use DBI; use Quota; my $base = 'test'; my $host = '10.27.0.51'; my $user = 'user'; my $pass = ''; my $mysql_sock = '/var/run/mysqld/mysqld.sock'; #Connection à la base de données #my $db = DBI->connect("DBI:mysql:database=$base; # host=$host; # mysql_socket=$mysql_sock", # $user, # $pass, # {RaiseError => 1} # ); my $dev = Quota::getdev('/home'); # à modifier avec ton chemin while(my ($nom,$uid) = (getpwent())[0,2]){ my @tmp = Quota::query($dev,$uid); # if(scalar(grep{$_!=0}@tmp)>0){ # my($u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2) = @tmp; # print "$u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2\n"; # } print "@tmp\n"; } ~ ~ ~ ~ ~ ~ ~
Et sa me donne un gros trou blanc !! quand je l'execute ( trou blanc = a la ligne plein de fois )
affiche le résultat de la commande (attention c'est une seule ligne)
ainsi que
perl -MQuota -e '$dev=Quota::getdev("/home"); while(my ($nom,$uid) = (getpwent())[0,2]){ print Quota::query($dev,$uid),"\n"}'
ainsi que
repquota /dev/hda1
alors :
pareil que le script que de l'affichage null
et voici le deuxieme :
perl -MQuota -e '$dev=Quota::getdev("/home"); while(my ($nom,$uid) = (getpwent())[0,2]){ print Quota::query($dev,$uid),"\n"}'
pareil que le script que de l'affichage null
et voici le deuxieme :
repquota /dev/hda1 *** Rapport pour les quotas user sur le périphérique /dev/hda1 Période de sursis bloc : 7days ; période de sursis inode : 7days Limites bloc Limites fichier Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis ---------------------------------------------------------------------- root -- 10921 0 0 28 0 0 test -- 4 9000 10000 4 9000 10000
exécute le script en tant que root
regarde chez moi
en tant que lami20j
regarde chez moi
en tant que lami20j
lami20j@debian:~$ perl -MQuota -e '$dev=Quota::getdev("/home"); while(my ($nom,$uid) = (getpwent())[0,2]){ print Quota::query($dev,$uid),"\n"}' 1876318800098012000 lami20j@debian:~$en tant que root
debian:~# perl -MQuota -e '$dev=Quota::getdev("/home"); while(my ($nom,$uid) = (getpwent())[0,2]){ print Quota::query($dev,$uid),"\n"}' 1762000004000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1876318800098012000 00000000 160004000 00000000 00000000 00000000 00000000 00000000 160004000 160004000 00000000 debian:~#
Oui je les fait en root ,
Je vien de voir un soucis au niveau de mes quotas quand je fait quotaon j'ai un messages d'erreur :(
Je vien de voir un soucis au niveau de mes quotas quand je fait quotaon j'ai un messages d'erreur :(
ok c'est bon c'étais mon quota qui étais mal fait quand je faisait quotaon -a j'avais une erreur donc c'est bon mainteanant je part sur un script pour les quota impression et mail. je vais ouvrrir un autre topic pour cela , . Je vais toujours garder les meme script que l'on a fait pour les suota disque et essayer de voir si on peut le faire avec les quota impression et mail !!
Voila et encore merci ( maintenant si tu veut m'aider pour les autres script :) je ne dirais pas non lol )
En tout les cas je dirai : ENCORE UNE VICTOIRE DE CAN... EU DE LAMI20J
Voila et encore merci ( maintenant si tu veut m'aider pour les autres script :) je ne dirais pas non lol )
En tout les cas je dirai : ENCORE UNE VICTOIRE DE CAN... EU DE LAMI20J