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
teste ce scritpt et affiche le résultat
#!/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('/'); # à modifier avec ton chemin while(my ($nom,$uid) = (getpwent())[0,2]){ my @tmp = Quota::query($dev,$uid); if (eval(join '+',@tmp) > 0){ my($u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2) = @tmp; print "$u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2\n"; } } __END__affiche aussi le résultat de
cat /etc/fstab mount
Voici les resultats :
[root@pc-b27-52 bin]# ./gregpython.pl Use of uninitialized value in numeric gt (>) at ./gregpython.pl line 26.
[root@pc-b27-52 bin]# cat /etc/fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 root@pc-b27-52 bin]# mount /dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
Sa doit surement etre un soucis de module perl j'ai remarqué que les lignes suivantes amene a l'erreur :
while(my ($nom,$uid) = (getpwent())[0,2]){ my @tmp = Quota::query($dev,$uid); if (eval(join '+',@tmp) > 0){ my($u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2) = @tmp; print "$u1,$s1,$h1,$g1,$u2,$s2,$h2,$g2\n"; } }
Autrement j'ai remplacer
par
et je n'est desormais plus d'erreur
par contre je ne voit pas comment vérifier si mes donneés son inscrit sur ma base
if (eval(join '+',@tmp) > 0){
par
if(scalar(grep{$_!=0}@tmp)>0){
et je n'est desormais plus d'erreur
par contre je ne voit pas comment vérifier si mes donneés son inscrit sur ma base
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est normal, il n'y a pas de données
Use of uninitialized value in numeric gt (>) at ./gregpython.pl line 26.
Mais tu n'auras pas puisque les partitions ne sont pas montées avec les options pour quota
tu dois avoir quelque chose de genre
Use of uninitialized value in numeric gt (>) at ./gregpython.pl line 26.
Mais tu n'auras pas puisque les partitions ne sont pas montées avec les options pour quota
tu dois avoir quelque chose de genre
root@debian:~# mount /dev/hda1 on / type ext3 (rw,usrquota,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) root@debian:~#
ja'i ceci
root@pc-b27-52 bin]# mount /dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
Retour : Bon pour l'instant je suis en standby car j'ai des petit soucis de quota sur ma maquette . mes systemes de fichier m'amen a des erreur s sytèmes ( de plus j'ai des petits soucis avec le sata ) je travail dessus pour l'instant je te redirais pour le script si tout est oki mais a priories il est bon je les testé pas a pas mise a par avec les variables que je n'est pas pu tester.
oups
je viens de me rendre compte que ton script s'appelle
gregpython.pl
pourquoi pas greperl.pl ??? :-DDD
je viens de me rendre compte que ton script s'appelle
gregpython.pl
pourquoi pas greperl.pl ??? :-DDD
Bon lamij j'ai bien crée tout mes quotas puis executé le script mes toujours rien je ne comprend pas pourkoi
Salut,
je ne vois toujours quota sur tes partitions
il y a moyen que je me connecte chez toi pour voir ?!
je ne vois toujours quota sur tes partitions
il y a moyen que je me connecte chez toi pour voir ?!
salut , enfaite je vient de voir que quen je fait quotaon -a j'est cela :
quotaon -a quotaon: utilisation de /home/aquota.group sur /dev/hda1 [/home] : Argument invalide quotaon: Essayez peut-être de créer un nouveau fichier de quotas avec quotacheck(8) ? quotaon: utilisation de /home/aquota.user sur /dev/hda1 [/home] : Argument invalide quotaon: Essayez peut-être de créer un nouveau fichier de quotas avec quotacheck(8) ?
Regarde ici (en gras)
Chez toi je ne vois pas.
Tes partitions ne sont pas monté avec l'option quota
affiche
lami20j
Chez toi je ne vois pas.
Tes partitions ne sont pas monté avec l'option quota
affiche
cat /etc/fstab--
lami20j
j'ai enlevé adquota.group car il ne me ser a rien et voila su que j'ai dans la fstab :
cat /etc/fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 /dev/hda1 /home ext3 defaults,usrquota, 1 0
Mets en commentaire la partie avec la base de donnée et laisse seulement le print
Ensuite exécute le script et affiche le résultat
Mets en commentaire aussi le if
Ensuite exécute le script et affiche le résultat
Mets en commentaire aussi le if
./gregperl.pl Global symbol "$u1" requires explicit package name at ./gregperl.pl line 28. Global symbol "$s1" requires explicit package name at ./gregperl.pl line 28. Global symbol "$h1" requires explicit package name at ./gregperl.pl line 28. Global symbol "$g1" requires explicit package name at ./gregperl.pl line 28. Global symbol "$u2" requires explicit package name at ./gregperl.pl line 28. Global symbol "$s2" requires explicit package name at ./gregperl.pl line 28. Global symbol "$h2" requires explicit package name at ./gregperl.pl line 28. Global symbol "$g2" requires explicit package name at ./gregperl.pl line 28. Execution of ./gregperl.pl aborted due to compilation errors.