Aide sur mon script perl

Résolu/Fermé
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 - 11 janv. 2008 à 10:11
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 - 29 janv. 2008 à 14:00
Bonjour,

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:

51 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
15 janv. 2008 à 18:21
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
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 10:11
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)
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 10:32
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";
	}
}
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 12:07
Autrement j'ai remplacer

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 janv. 2008 à 14:41
Salut,

ben, tu n'as qu'à faire un select dans la table pour vérifier ;-)
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 14:43
salut , non il n'y a aucaun enregistrement :(
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
16 janv. 2008 à 15:00
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

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:~#

0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 15:03
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)
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 15:03
je test pas a pas mon script pour le moment mais apres i don't know
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
16 janv. 2008 à 15:37
oui mince j'ai aumis les systemes de fichier et les quotas autant pour moi je vais tester cela
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
18 janv. 2008 à 11:28
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.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
18 janv. 2008 à 19:59
oups
je viens de me rendre compte que ton script s'appelle
gregpython.pl

pourquoi pas greperl.pl ??? :-DDD
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
21 janv. 2008 à 09:11
a oui mince , au debut je voulait faire mon script avec python et j'ai oublié de changer oups :)))
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
24 janv. 2008 à 11:34
Bon lamij j'ai bien crée tout mes quotas puis executé le script mes toujours rien je ne comprend pas pourkoi
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
24 janv. 2008 à 12:54
Salut,

je ne vois toujours quota sur tes partitions

il y a moyen que je me connecte chez toi pour voir ?!
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
24 janv. 2008 à 14:44
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) ?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
24 janv. 2008 à 14:53
Regarde ici (en gras)
Chez toi je ne vois pas.
Tes partitions ne sont pas monté avec l'option quota

affiche
cat /etc/fstab
--

lami20j
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
24 janv. 2008 à 14:56
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 
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
24 janv. 2008 à 15:08
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
0
specimen35 Messages postés 343 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 16 août 2011 17
24 janv. 2008 à 15:17
./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.
0