Quel methode à adopter avec une Bdd??
Fermé
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
-
8 janv. 2008 à 10:03
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 10 janv. 2008 à 10:08
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 10 janv. 2008 à 10:08
A voir également:
- Quel methode à adopter avec une Bdd??
- Adopte une mature ✓ - Forum Réseaux sociaux
- Votre appareil est hors connexion. essayez une autre méthode de connexion - Forum Windows 10
- Le client et le serveur ne sont pas compatibles avec une version de protocole ou une méthode de chiffrement ssl commune. ✓ - Forum Réseaux sociaux
- Ce coeur n'est plus a prendre adopte ✓ - Forum Mail
- Comment débloquer une personne sur adopte ✓ - Forum Réseaux sociaux
21 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
8 janv. 2008 à 10:14
8 janv. 2008 à 10:14
Je suis surfcontrolé et ne peut pas voir ton image, mais j'imagine que tu as un serveur "central" sur lequel la base de données tourne, et les 4 autres serveurs qui lui envoi des infos.
Pour mettre à jour régulièrement la base de donnée, il faudrait donc que tu développe un petit script (dans le language qui va le mieux par rapport à la manipulation de tes données) qui mette à jour ces informations dans la base de données.
Ensuite pour ce qui est de lancer régulièrement ce script, je ne sais pas sous quel OS tourne ton serveur principal, mais tu peux définir ton script comme un tache cron qui s'éxécute toutes les X heures.
Pour mettre à jour régulièrement la base de donnée, il faudrait donc que tu développe un petit script (dans le language qui va le mieux par rapport à la manipulation de tes données) qui mette à jour ces informations dans la base de données.
Ensuite pour ce qui est de lancer régulièrement ce script, je ne sais pas sous quel OS tourne ton serveur principal, mais tu peux définir ton script comme un tache cron qui s'éxécute toutes les X heures.
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 10:26
8 janv. 2008 à 10:26
Pour ta deduction du shema oui c'est sa :)
Jusqu'a la je suis d'accord avec toi , pour mes scripts
oui , mais il faut que j'en crée un sur chaque serveur ??
Je suis sous nunux ( linux )
Pour le language j'ai le choix entre Python, php, perl d'apres toi la meilleur solution pour un mega novice ( et oui mon domaine est le réseau )
Jusqu'a la je suis d'accord avec toi , pour mes scripts
il faudrait donc que tu développe un petit script
oui , mais il faut que j'en crée un sur chaque serveur ??
je ne sais pas sous quel OS tourne ton serveur principal
Je suis sous nunux ( linux )
Pour le language j'ai le choix entre Python, php, perl d'apres toi la meilleur solution pour un mega novice ( et oui mon domaine est le réseau )
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
8 janv. 2008 à 10:39
8 janv. 2008 à 10:39
Et bien pour ce qui est de un script ou plusieurs, ca dépend d'une chose, est ce que tes autres serveurs envoi quotidiennement des fichiers sur ton serveur principal ? (fichiers ressenscant les informations à mettre à jour)
Si oui alors il te suffit de développer qu'un script sur ton serveur principal, script utilisant ces fichiers d'informations pour mettre à jour la base.
Si non, et bien tu peux toujours dév un script générique que tu lance sur chaque serveur... mais le mieux (et je suis sur que tu sera d'accord sur ce point si tu es plutot accé réseau :) ), c'est que tes serveurs secondaires envoi les infos sur le serveur principal, et qu'il n'y ai que ton serveur principal qui fasse les acces base de données (plus sécurisé, moins de traffic réseau et bdd).
Pour ce qui est du language dans lequel développer ton script, j'ai fais un peu de perl il y a un moment, c'est pas mal. Le python est très bien aussi il me semble (jamais fait).
En php c'est sur que c'est faisable (connait tres bien), donc pour les deux autres languages je dirais qu'il faut l'avis d'une personnes plus aisée dans ce milieu. (sebsauvage (http://www.commentcamarche.net/communaute/profil sebsauvage) me semble être la bonne personne si tu veux le joindre ;) )
Ha oui, le language du script dépends aussi de la facon dont tu vas organiser les informations envoyées par les autres serveurs.
Si oui alors il te suffit de développer qu'un script sur ton serveur principal, script utilisant ces fichiers d'informations pour mettre à jour la base.
Si non, et bien tu peux toujours dév un script générique que tu lance sur chaque serveur... mais le mieux (et je suis sur que tu sera d'accord sur ce point si tu es plutot accé réseau :) ), c'est que tes serveurs secondaires envoi les infos sur le serveur principal, et qu'il n'y ai que ton serveur principal qui fasse les acces base de données (plus sécurisé, moins de traffic réseau et bdd).
Pour ce qui est du language dans lequel développer ton script, j'ai fais un peu de perl il y a un moment, c'est pas mal. Le python est très bien aussi il me semble (jamais fait).
En php c'est sur que c'est faisable (connait tres bien), donc pour les deux autres languages je dirais qu'il faut l'avis d'une personnes plus aisée dans ce milieu. (sebsauvage (http://www.commentcamarche.net/communaute/profil sebsauvage) me semble être la bonne personne si tu veux le joindre ;) )
Ha oui, le language du script dépends aussi de la facon dont tu vas organiser les informations envoyées par les autres serveurs.
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 11:12
8 janv. 2008 à 11:12
deja merci pour le temps que tu ma consacré
Mon serveur principal ( http) ne recoit rien il me sert seulement de "passerelle" entre les serveur secondaire et l'utilisateur final, il recevra des donnée avec mes script .
Donc la solution a garder est la deuxieme soit un script sur chaque serveur.
Ma base de donnée du serveur pricipal contient seulement une table ( a quoi sa sert alors ? c'est pour une soucis d'évolution) , elle est come ceci :
Table utilisateur : (francisé)
nom user
pwd user
quota max dique
quota utilisé disque
quota max mail
quota utilisé mail
Nb d'imbression max
Nb d'impression utilisé
Mon serveur principal ( http) ne recoit rien il me sert seulement de "passerelle" entre les serveur secondaire et l'utilisateur final, il recevra des donnée avec mes script .
Donc la solution a garder est la deuxieme soit un script sur chaque serveur.
Ma base de donnée du serveur pricipal contient seulement une table ( a quoi sa sert alors ? c'est pour une soucis d'évolution) , elle est come ceci :
Table utilisateur : (francisé)
nom user
pwd user
quota max dique
quota utilisé disque
quota max mail
quota utilisé mail
Nb d'imbression max
Nb d'impression utilisé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 11:46
8 janv. 2008 à 11:46
que pense tu de cela en script
http://www.commentcamarche.net/forum/affich 2757680 parser fichier txt en perl
http://www.commentcamarche.net/forum/affich 2757680 parser fichier txt en perl
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
8 janv. 2008 à 11:55
8 janv. 2008 à 11:55
Ce script me semble pas mal en effet, si tes données sont dans un fichier texte c'est nickel, ca permet de lire et d'enregistrer dans la base de données à la volée. Et tu peux le prendre tel quel ca devrait fonctionner (en remplacer bien sur le chemin du fichier texte à parser, ainsi que les paramètres de connexion à la base de données (url, user, pwd, basename))
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 12:04
8 janv. 2008 à 12:04
J'ai regarder pour mes quota il n'y a pas ( je n'en suis pas sur a 100%) de fichier mais je sais qu'il a une commande edquota -u user
donc je pense que je peut remplacer la ligne
par
system(edquota -u)
or die "La commande n'existe pas ! : $!\n";
qu'en penses tu ?
donc je pense que je peut remplacer la ligne
open FICHIER,"< monfichier.log" or die "Le fichier n'existe pas ! : $!\n";
par
system(edquota -u)
or die "La commande n'existe pas ! : $!\n";
qu'en penses tu ?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
8 janv. 2008 à 12:07
8 janv. 2008 à 12:07
Mum, aucune idée, mais ce que tu peux faire c'est un batch qui fais :
- la commande : edquota -u user > mon_fichier.txt
- exécution de ton script
Et ton script va lire le fichier 'mon_fichier.txt'
Ca me semble être un bon contournement si jamais ce que tu propose ne fonctionne pas.
- la commande : edquota -u user > mon_fichier.txt
- exécution de ton script
Et ton script va lire le fichier 'mon_fichier.txt'
Ca me semble être un bon contournement si jamais ce que tu propose ne fonctionne pas.
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 12:07
8 janv. 2008 à 12:07
soit :
#!/usr/bin/perl -w use strict; use DBI; use CGI; my $cgi = new CGI; my ($block,$soft); print "Content-type: text/html\n\n"; system(edquota -u) or die "Le fichier n'existe pas ! : $!\n"; #Connection à la base de données mysql my $db = DBI -> connect (("dbi:mysql:dbname=penst;host=localhost;","root","******" )) or die "connection impossible!"; while ($ligne = <FICHIER>){ # récupération des éléments ($block,$soft) = split /;/,$ligne; # et on insere dans la base $db->do("insert into utilisateurenst values ('$block', '$soft')"); or die "pb de requete : $DBI::errstr"; }# fin de traitement de fichier exit;
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 12:08
8 janv. 2008 à 12:08
A ouet pas mal j'avais pas pensé a sa je vais tester
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
8 janv. 2008 à 12:09
8 janv. 2008 à 12:09
Non non ca ne fonctionnera pas comme ca ^^, ou alors il faut faire une redirection sur un fichier texte dans ta commande, puisque ensuite ton script lit un fichier texte pour y prendre les infos.
Je pense qu'avec tout ca t'as de quoi t'en sortir (voir ma remarque précédente sur le scritp shell qui exécute la commande avec redirection, puis ton script)
Je pense qu'avec tout ca t'as de quoi t'en sortir (voir ma remarque précédente sur le scritp shell qui exécute la commande avec redirection, puis ton script)
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 14:10
8 janv. 2008 à 14:10
oki je vais tester cela et faire une ptit reunion avec quelque personne pour voire si on est bien partie je te redit pour la suite et metterai mais script a disposition
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 15:30
8 janv. 2008 à 15:30
je revien sur notre histoire de edquota -u user > mon_fichier.txt
Le truc c'est que les quota change constament donc il faudrait faire une boucle continu ??
Le truc c'est que les quota change constament donc il faudrait faire une boucle continu ??
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
8 janv. 2008 à 16:14
8 janv. 2008 à 16:14
Le quota change constament.
C'est une chose, mais tu veux enregistrer ces infos toutes les X heures non ?
Dans ce cas là puisque ton script shell est lancé comme un cron toutes les Xheures et que c'est lui qui lance la commande des quotats, ces quotats seront raffraichi dans ta base de données toutes les X heures.
Je pense que ca suffit amplement puisque tu n'as qu'une seule table, et que forcément tu ne gère pas tes quotats dans le temps mais uniquement à des instants précis (sinon la base de données devraient être plus étoffée en table)
Je ne me trompe pas ?
C'est une chose, mais tu veux enregistrer ces infos toutes les X heures non ?
Dans ce cas là puisque ton script shell est lancé comme un cron toutes les Xheures et que c'est lui qui lance la commande des quotats, ces quotats seront raffraichi dans ta base de données toutes les X heures.
Je pense que ca suffit amplement puisque tu n'as qu'une seule table, et que forcément tu ne gère pas tes quotats dans le temps mais uniquement à des instants précis (sinon la base de données devraient être plus étoffée en table)
Je ne me trompe pas ?
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
8 janv. 2008 à 17:45
8 janv. 2008 à 17:45
oui mais il faut donc que je crée un cron sur la commande edquota -u user > mon_fichier.txt pour qu'apres les informations lu par mon script ce mette a jour dans la base
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
9 janv. 2008 à 09:22
9 janv. 2008 à 09:22
Oui, soit tu fais un cron pour ta commande edquota, puis un autre cron pour ton script, soit tu fais un seul cron pour ton script, et ton script lance la commande edquota juste avant de s'effectuer.
La différence ? Avec la premiere tu peux raffraichir les quota plus souvent en donnant un temps plus petit (exécution toutes les deux minutes par exemple)
L'intérêt ? Personnellement je n'en vois aucun puisque ce que tu veux faire c'est actualiser les quota dans ta base. Conclusion même si tu lance plusieurs fois / heure ta commande edquota, les quota sauvegardés seront ceux qui ont été établi juste avant l'éxécution du script (les autres non). Donc à part si tu te sert ailleurs de ces quota, je ne vois pas l'intéret de séparer ta commande systeme de ton script de lecture / update.
Après libre à toi d'effectuer ce qui te semble le plus adapté à ta situation, j'ai peut etre mal compris le but :D
La différence ? Avec la premiere tu peux raffraichir les quota plus souvent en donnant un temps plus petit (exécution toutes les deux minutes par exemple)
L'intérêt ? Personnellement je n'en vois aucun puisque ce que tu veux faire c'est actualiser les quota dans ta base. Conclusion même si tu lance plusieurs fois / heure ta commande edquota, les quota sauvegardés seront ceux qui ont été établi juste avant l'éxécution du script (les autres non). Donc à part si tu te sert ailleurs de ces quota, je ne vois pas l'intéret de séparer ta commande systeme de ton script de lecture / update.
Après libre à toi d'effectuer ce qui te semble le plus adapté à ta situation, j'ai peut etre mal compris le but :D
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
9 janv. 2008 à 09:28
9 janv. 2008 à 09:28
Salut , bon petite conclusion d'une reunion de hier soir :
- pas de fichier texte
Solution :
- travailler en memoire avec a la pace d'ouvrir un fichier on insert la commande edquota -u user en lui faisanr affiché se que l'on veut avec de grep par exemple.
comme cela :
`edquota -u user` .....
je vais voir des tuto sur ce type d'expression
- pas de fichier texte
Solution :
- travailler en memoire avec a la pace d'ouvrir un fichier on insert la commande edquota -u user en lui faisanr affiché se que l'on veut avec de grep par exemple.
comme cela :
`edquota -u user` .....
je vais voir des tuto sur ce type d'expression
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
9 janv. 2008 à 10:45
9 janv. 2008 à 10:45
Deplus pour la connexion j'ai trouvé un module que l'on appel dbd::mysql qui permet de se connecter a distance sur ma base de donnée .
Aujourdh'ui je commence a etre content lol .
Aujourdh'ui je commence a etre content lol .
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
9 janv. 2008 à 10:58
9 janv. 2008 à 10:58
Si tu veux utiliser grep c'est comme ceci :
Ca te sélectionnera uniquement les lignes contenant "blabla" sur la sortie de ta premiere commande.
Je te laisse parcourrir le man de grep pour en savoir plus.
Bon courage.
edquota -u user | grep "^blabla$"
Ca te sélectionnera uniquement les lignes contenant "blabla" sur la sortie de ta premiere commande.
Je te laisse parcourrir le man de grep pour en savoir plus.
Bon courage.
specimen35
Messages postés
343
Date d'inscription
vendredi 14 décembre 2007
Statut
Membre
Dernière intervention
16 août 2011
17
10 janv. 2008 à 09:38
10 janv. 2008 à 09:38
Bon retour , voici le debut du script
Qu'en pense tu ???
#!/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";
Qu'en pense tu ???