Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Aller à la page:  1 2 Page suivante
Page: 1 sur 2
Afficher un bash dans une page html
Envoyé par: William

Bonjour,

Débutant sous linux, j'ai une commande qui me permet de connaitre la taille des boites mail :

du -ch /home/vpopmail/domains/monDomaine.fr/|grep Maildir/new | grep "M\b"|mail -s "Taille des boites mail" mon@domaine.fr

Cela me permet de recevoir chaque jour par mail l'espace occupé par l'ensemble de mes adresses.

Je souhaite afficher le résultat dans une page html visible depuis www.mondomaine.fr/mails.html

Comment dois-je m'y prendre ?

Merci de votre aide,

Cordialement,
William

Poste le Tuesday 21 June 2005 10:34:54
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan


Il te faut utiliser un langage coté serveur pour générer du html, tu utilises php ?

Si tu veux plus d'aide, je pense qu'il va te falloir être plus précis: quelques détails sur l'organisation de tes répertoires dans /home/vpopmail/domains/monDomaine.fr, par exemple ?

Il y a bien la méthode barbare pour afficher le retour d'une commande shell:
<?php 
$cmd = "du -ch /home/vpopmail/domains/monDomaine.fr/|grep Maildir/new | grep "M\b"|mail -s "Taille des boites mail" mon@domaine.fr";
shell_exec("$cmd");
?>

mais je doute que ce soit ce que tu cherches et cela ne marchera pas si le safe_mode est activé dans php.ini ...

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Tuesday 21 June 2005 17:51:45
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan

je me corrige, j'ai oublié le "echo":

<?php
$cmd = "du -ch /home/vpopmail/domains/monDomaine.fr/|grep Maildir/new | grep "M\b"|mail -s "Taille des boites mail" mon@domaine.fr";
echo shell_exec("$cmd");
?>

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Tuesday 21 June 2005 17:53:29
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Sve@r

Une page HTML est de nature statique, c'est à dire qu'elle est figée.
Pour ton pb, tu as 3 solutions
1) tu crées un bash qui génère lui-même la page HTML contenant l'info que tu souhaites et tu lances ton bash par le cron

2) tu utilises un serveur internet apache, tu installes ton script "du ... | grep... |..." dans le répertoire "cgi-bin" de ton serveur. Puis tu n'as plus qu'à faire la page HTML qui pointe vers ce script. Celui-ci sera exécuté et tout ce qu'il affiche sera vu comme du HTML
gros pb: si ton script n'envoie pas du HTML pur, tu ne verras rien du coté client. Une page totalement blanche. le cgi-bin est très très dur et très très lourd à mettre en oeuvre.

3) tu utilises un serveur internet apache et tu crées une page PHP. Le PHP ressemble au HTML, sauf que dès que tu as besoin d'avoir du dynamique, tu ouvres une balise spéciale "<SCRIPT language="php"> et ensuites tu écris ton code que tu termines par une balise "</SCRIPT>". Le serveur apache, quand il voit cette balise, délègue l'exécution à son module PHP qui crée du HTML de façon dynamique en fonction de ton code. Ensuite, le serveur apache récupère ce HTML et l'envoie au client.
Le code PHP ressemble beaucoup au C
Un exemple de PHP
<HTML>
<HEAD></HEAD>
<BODY>
<H1 align="center">Hello</H1>
<SCRIPT language="php">
for ($i=0; $i < 10; $i++)
printf("i=%d<BR>\n", $i);
</SCRIPT>
</BODY>
</HTML>

Tu insères ce script dans un fichier "toto.php" que tu bazardes dans ton site web, puis tu vas dans ton navigateur et tu affiches "toto.php"
Une fois que tu gères bien le principe, tu peux exécuter, en PHP, des scripts shell avec la fonction "system()"

Poste le Tuesday 21 June 2005 17:59:26
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan


Citation
sve@r
tu ouvres une balise spéciale "<SCRIPT language="php"> et ensuites tu écris ton code que tu termines par une balise "</SCRIPT>"

La, je crois que tu confonds php et javascript ;-) : le code php doit être placé entre des balises <?php et ?> (ou à la rigueur <? ?> mais cela n'est pas conseillé). La balise script n'est utilisé que pour les langages qui s'éxécutent coté client (comme javascript).

Le cgi-bin me semble un peu lourd à mettre en place vu la demande... :-/

Pour l'idée du bash qui s'éxécute périodiquement, je n'y avais pas pensé, mais l'avantage du php (ou autre langage éxécuté par le serveur) est qu'il permet d'avoir le résultat voulu en temps réel: il n'y a pas a attendre l'éxécution du cron ...

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Tuesday 21 June 2005 18:12:38
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Sve@r

Citation
Morgan
La, je crois que tu confonds php et javascript :
le code php doit être placé entre des balises
<?php et ?> (ou à la rigueur <? ?>
mais cela n'est pas conseillé). La balise script
n'est utilisé que pour les langages qui
s'éxécutent coté client (comme javascript).
Je savais pas que c'était réservé aux scripts clients. Mais je sais que ça fonctionne quand-même pour PHP

Citation
Morgan
Pour l'idée du bash qui s'éxécute périodiquement,
je n'y avais pas pensé, mais l'avantage du php (ou
autre langage éxécuté par le serveur) est qu'il
permet d'avoir le résultat voulu en temps réel: il
n'y a pas a attendre l'éxécution du cron ...

C'est un choix qu'on peut proposer => a-t-on besoin de temps réel ou peut-on se contenter du traitement périodique ?

Poste le Tuesday 21 June 2005 19:21:54
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan


Citation
sve@r
C'est un choix qu'on peut proposer => a-t-on besoin de temps réel ou peut-on se contenter du traitement périodique ?

oui oui, bien sur, ma remarque visait simplement à bien montrer l'alternative. :-)

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Tuesday 21 June 2005 19:38:20
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Sve@r

Citation
Morgan
oui oui, bien sur, ma remarque visait simplement à
bien montrer l'alternative.

Idem, quand j'ai parlé des scripts cgi, c'était juste pour expliquer l'existence de cette possibilité tout en sachant que c'était démesuré par rapport au problème proposé

];-)

Poste le Tuesday 21 June 2005 22:18:10
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: William

Bonjour,

En fait, je ne connais pas non plus php mais avec l'aide google je vais sans doute y arriver :-)
Concernant le script que je dois réaliser, il faut que pour chaque domaines se trouvant sur mon serveur, il puisse y avoir un page php ou html qui puisse refléter l'espace occupé par les boites mails du domaine concerné.

après vérification, le safe_mode n'est pas activé dans php.ini.

Je vais également regarder du coté de Perl pour savoir si cela ne peut pas coller

Merci de vos pistes et de vos idées ;-) .

D'autres commentaires sur le sujet sont bien entendu les bienvenues

Cordialement,
William

Poste le Wednesday 22 June 2005 10:49:22
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Sve@r

Citation
William
Je vais également regarder du coté de Perl pour
savoir si cela ne peut pas coller

Comme je l'ai dit, le HTML reste un langage figé. C'est à dire que tu ne peux pas, en HTML, faire exécuter un programme ou un script autrement que par
- PHP
- cgi-bin (mais cette option est maintenant dépassée face aux possibilités de PHP)

Maintenant, si tu utilises PHP, tu pourras, à partir de là, faire exécuter n'importe quel programme, qu'il soit écrit en shell ou en perl.

De la même manière, si tu utilises un langage pour générer ta page HTML à partir du résultat que tu veux afficher, tu peux utiliser shell, perl ou C si ça te chante.

Poste le Wednesday 22 June 2005 16:43:25
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan

puisque la safe_mode est désactivé, en php, cela pourrait te donner quelque chose dans ce genre (j'ai supposé que le répertoire monDomaine.fr contenait des sous répertoires correspondant chacun à un compte user, cela explique le masque "*/Maildir/new", à adapter si cela n'est pas le cas):

<?php 
$total = 0;
$repertoire = "/home/vpopmail/domains/monDomaine.fr";
$masque = "*/Maildir/new";
    
// On récupére les répertoires correspondants au masque:
$repsNew = glob($repertoire.$masque);
    
// Pour chacun d'entre eux ...
foreach ($repsNew as $rep) {

// ... on récupére sa taille, ...
____$du = shell_exec("du -k $rep");
____$du = explode("\t",$du);  

// ... on l'affiche ... 
____echo "\n<br />$rep occupe $du Ko"; 
____$total += $du; // ... et on l'ajoute au total.
}
echo "\n<br />La taille totale des dossiers est $total Ko";
?>

Ne tiens pas compte des _ en début de ligne, je les mets pour simuler la tabulation.

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Wednesday 22 June 2005 17:54:22
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: William

Alors là je ne sais que dire si ce n'est MERCI.
Bon certe, cela ne fonctionne pas mais c'est déjà un début méga top :-)

Pourtant, il y a effectivement bien mes sous répertoires car si je fais un
ls /home/vpopmail/domains/monDomaine.fr/info/Maildir/new/
je vois bien la liste des mails non récupérés.

Bien entendu, j'ai oté les _ devant les lignes correspondantes !

Le résultat donné est toujours de 0 Ko

Encore merci pour cette aide précieuse ;-)

Cordialement,
William



Citation
Morgan
puisque la safe_mode est désactivé, en php, cela
pourrait te donner quelque chose dans ce genre
(j'ai supposé que le répertoire monDomaine.fr
contenait des sous répertoires correspondant
chacun à un compte user, cela explique le masque
"*/Maildir/new", à adapter si cela n'est pas le
cas):

<?php
$total = 0;
$repertoire =
"/home/vpopmail/domains/monDomaine.fr";
$masque = "*/Maildir/new";

// On récupére les répertoires correspondants au
masque:
$repsNew = glob($repertoire.$masque);

// Pour chacun d'entre eux ...
foreach ($repsNew as $rep) {

// ... on récupére sa taille, ...
____$du = shell_exec("du -k $rep");
____$du = explode("\t",$du);

// ... on l'affiche ...
____echo "\n<br />$rep occupe $du Ko";
____$total += $du; // ... et on l'ajoute au
total.
}
echo "\n<br />La taille totale des dossiers
est $total Ko";
?>

Ne tiens pas compte des _ en début de ligne, je
les mets pour simuler la tabulation.

__________________________________________________
_
L'interface chaise-clavier se débuggue elle
aussi...

Poste le Wednesday 22 June 2005 19:16:08
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan

Citation
William
Alors là je ne sais que dire si ce n'est MERCI.

Je t'en prie. ;-)

Citation
William
Bon certe, cela ne fonctionne pas

Oui, j'ai fais une erreur d'inattention sur ce script: la fonction explode() en php renvoie un tableau et c'est la premiére valeur qui nous intéresse, donc la fin du script:

// ... on l'affiche ...
____echo "\n<br />$rep occupe $du Ko";
____$total += $du; // ... et on l'ajoute au total.

devient

// ... on l'affiche ...
____echo "\n<br />$rep occupe $du[0] Ko";
____$total += $du[0]; // ... et on l'ajoute au total.

En fait, j'avais testé aussi avec une autre méthode qu'avec shell_exec("du -k $rep") dans laquelle il n'y avait pas de tableau et j'ai oublié de remettre le [0].
Là, cela devrait marcher ... ;-)

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Thursday 23 June 2005 14:41:16
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan


Arf, et en plus, j'ai oublié le "/" à la fin de:
$repertoire = "/home/vpopmail/domains/monDomaine.fr";

Il faut écrire:
$repertoire = "/home/vpopmail/domains/monDomaine.fr/";


___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Thursday 23 June 2005 15:39:54
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: William

Bonjour Morgan,

J'ai modifié le fichier comme cité plus haut. Concernant le / de $répertoire
je l'avais déjà ajouté :-)

mais j'ai toujours un : La taille totale des dossiers est 0 Ko

<?php
$total = 0;
$repertoire = "/home/vpopmail/domains/monDomaine.fr/";
$masque = "*/Maildir/new";

// On récupére les répertoires correspondants au masque:
$repsNew = glob($repertoire.$masque);

// Pour chacun d'entre eux ...
foreach ($repsNew as $rep)
{

// ... on récupére sa taille, ...
$du = shell_exec("du -k $rep");
$du = explode("t",$du);

// ... on l'affiche ...
echo "\n<br />$rep occupe $du[0] Ko";
$total += $du[0];

// ... et on l'ajoute au total.
}
echo "n<br />La taille totale des dossiers est $total Ko";
?>

Je m'avance sans doute mais est il normal que la variable $du
ait 2 valeurs différentes ?

Cordialement,
William

Poste le Thursday 23 June 2005 17:42:28
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: William

// Pour chacun d'entre eux ...
foreach ($repsNew as $rep)

Heu j'ai trouvé un début :-)
Il manque visiblement un ; en fin de ligne

Par contre, maintenant que j'ai un affichage, je n'ai pas
la liste complete des comptes mais plutôt un truc du genre :

+-------------------------------------------+
| occupe 7472 ./dl 4 ./img/baniere/_no Ko |
| La taille totale des dossiers est 7472 Ko |
+-------------------------------------------+

Cordialement,
William

Poste le Thursday 23 June 2005 18:26:45
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan


Ce script marche parfaitement chez moi.

on ne met pas de ";" à la fin d'un foreach, c'est une boucle:

"Pour chaque occurence nommée $rep du tableau $repsNew ... "
foreach ($repsNew as $rep) {
____ traitement ....
}

Il est possible que la sortie de "du -k" ne correspond pas à la mienne parce que tu as des sous répertoires dans tes répertoires new, cas que je ne traites pas dans le script ci-dessus. Aprés lecture du man du, je te suggére de remplacer "du -k" par "du -sk" pour avoir seulement le total sur une ligne.

Jettes donc un coup d'oeil ici pour voir ce que font les fonctions utilisées dans ce script:
[fr2.php.net]

et n'hésites à demander s'il y a quelque chose qui n'est pas clair. ;-)

___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Thursday 23 June 2005 18:52:11
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: William

Bin pas chez moi :-(

Ne serait-ce pas lié à la version de php ?
Perso je suis en PHP 4.3.11

Encore un grand MERCI de ton aide et pour le lien

Cordialement,
William

Poste le Thursday 23 June 2005 19:10:28
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: Morgan

Citation
William
Ne serait-ce pas lié à la version de php ?
Perso je suis en PHP 4.3.11

Ce script doit marcher pour toutes les versions de php >= 4.3.0.

Vérifies deux choses:

- l'organisation de tes répertoires: il est possible que le masque utilisé ($masque = "*/Maildir/new"; ) ne sont pas bon.
Je te suggére de faire comme ceci:

$repsNew = glob($repertoire.$masque);
print_r($repsNew);

ceci t'affichera une représentation du tableau $repsNew, il doit contenir les chemins vers les répertoires new à prendre en compte.

- que le safe-mode ne soit pas activé: pour savoir, tu mets ceci:
<?php phpinfo(); ?>
dans un fichier phpinfo.php, tu regardes le résultat et tu cherches les valeurs des variables correspondantes au safe_mode, le détail est ici:
[fr2.php.net]

Tu peux aussi vérifier manuellement (dans une console) la sortie de "du -sk" (aprés tout, on ne sait jamais). Ce script considére que la sortie est de la forme:
taille \t nom_répertoire
le \t représentant une tabulation.


___________________________________________________
L'interface chaise-clavier se débuggue elle aussi...

Poste le Thursday 23 June 2005 19:48:23
Répondre     Citer    
Re: Afficher un bash dans une page html
Envoyé par: William

Vérifies deux choses:

- l'organisation de tes répertoires: il est
possible que le masque utilisé ($masque =
"*/Maildir/new"; ) ne sont pas bon.

Si si ! tu as fait à la base du bon boulot ;-)
j'ai vérifié et à la main j'arrive à visualiser tous les mails situés
dans le répertoires */Maildir/new/

Je te suggére de faire comme ceci:

$repsNew = glob($repertoire.$masque);
print_r($repsNew);

Le résultat est array() aucun autre affichage

ceci t'affichera une représentation du tableau
$repsNew, il doit contenir les chemins vers les
répertoires new à prendre en compte.

- que le safe-mode ne soit pas activé: pour
savoir, tu mets ceci:
<?php phpinfo(); ?>

Je confirme et je signe safe_mode est à off aussi bien en Local qu'en Master Value

Tu peux aussi vérifier manuellement (dans une
console) la sortie de "du -sk" (aprés tout, on ne
sait jamais). Ce script considére que la sortie
est de la forme: taille \t nom_répertoire
le \t représentant une tabulation.

ça fonctionne :-)

Je ne veux pas te faire suer avec tout ça j'ai déjà bien abusé ;-)
Je vais essayer de trouver la solution avec mon ami google et mes
gros doits boudinés :-))

Cordialement,
William

Poste le Thursday 23 June 2005 20:54:42
Répondre     Citer    
Aller à la page:  1 2 Page suivante
Page: 1 sur 2

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Afficher un bash dans une page html
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.
Nouveau sujet sur ce forum

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons