Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-01-2011 23:52:27

caracole
Membre
Lieu : Au soleil en Espagne
Distrib. : Ubuntu Maverick + Natty ( en test Debian Lenny)
Noyau : 2.6.35.24-genericpae et 2.6.37 (Natty)
(G)UI : Gnome
Inscription : 03-12-2010
Site Web

comment convertir script php en script bash

Bonjour,
j'aimerai savoir s'il est possible de convertir un script php en bash mon cas d'ecole est le script php ci-après que j'aimerai traduire en script bash.

d'une manière générale, existe-il un outil ? je n'ai pas trouvé.

merci
pierre

#!/usr/bin/php
 
<?php
 
$dest = array('monitoring@test.com');
$archives = '/var/archives';
 
$host = trim(file_get_contents('/etc/hostname'));
 
clearstatcache();
 
$dir = opendir($archives);
if($dir) {
        while(false !== ($filename = readdir($dir))) {
                if($filename[0]!='.' && preg_match('/'.date('Ymd').'/',$filename)) {
                        $thefile = $archives.'/'.$filename;
                        $size = exec("ls -l '".$thefile."' | awk '{print $5}'");
                        if($size>0) {
                                $pagetext.= $filename." (".round($size/1000000000,2)." Go)n";
                        } else {
                                $pagetext.= $filename." (? Go)n";
                        }
                        $totalsize += $size;
                }
        }
        $pagetext .= "nTotal : ".round($totalsize/1000000000,2)." Gon";
}
 
foreach($dest as $d) {
        mail($d,'['.$host.'] Backup OK',$pagetext);
}
 
?>


Le peu que je savais de Linux on me l'a enseigné; le reste je l'ai appris ici grâce à la communauté...[moi]
Les arbres enseignent la patience: Ils ne baissent pas les bras à la première tempête venue. [C.Beaupré]

Hors ligne

#2 08-01-2011 02:27:51

Asmodée
Membre
Lieu : /dev/null
Distrib. : Squeeze
Inscription : 16-05-2010

Re : comment convertir script php en script bash

D'une manière générale, non, il n'existe pas un tel outil : il faut le faire à la main.

Je ne parle pas du tout PHP, mais ce que tu sembles vouloir faire ne doit pas trop être compliqué à faire en bash... En fait, j'ai l'impression que tu te compliques la vie, mais peut-être est-ce parce que je ne parle pas un mot de php...

Hors ligne

#3 08-01-2011 08:18:54

caracole
Membre
Lieu : Au soleil en Espagne
Distrib. : Ubuntu Maverick + Natty ( en test Debian Lenny)
Noyau : 2.6.35.24-genericpae et 2.6.37 (Natty)
(G)UI : Gnome
Inscription : 03-12-2010
Site Web

Re : comment convertir script php en script bash

Asmodée a écrit :

D'une manière générale, non, il n'existe pas un tel outil : il faut le faire à la main.

Je ne parle pas du tout PHP, mais ce que tu sembles vouloir faire ne doit pas trop être compliqué à faire en bash... En fait, j'ai l'impression que tu te compliques la vie, mais peut-être est-ce parce que je ne parle pas un mot de php...


je veux seulement étudier ce script rien de plus.
merci

pierre


Le peu que je savais de Linux on me l'a enseigné; le reste je l'ai appris ici grâce à la communauté...[moi]
Les arbres enseignent la patience: Ils ne baissent pas les bras à la première tempête venue. [C.Beaupré]

Hors ligne

#4 08-01-2011 16:49:12

Asmodée
Membre
Lieu : /dev/null
Distrib. : Squeeze
Inscription : 16-05-2010

Re : comment convertir script php en script bash

Ben, il est certain que je ne pourrai pas t'aider. PHP ne m'a jamais intéressé et je n'ai pas le temps de décrypter... Mais bon, il me semble quand même très simple ce script : sans rien n'y connaître, son but me semble assez simple.

Hors ligne

#5 08-01-2011 19:51:34

caracole
Membre
Lieu : Au soleil en Espagne
Distrib. : Ubuntu Maverick + Natty ( en test Debian Lenny)
Noyau : 2.6.35.24-genericpae et 2.6.37 (Natty)
(G)UI : Gnome
Inscription : 03-12-2010
Site Web

Re : comment convertir script php en script bash

Je vais chercher les instructions php et voir l'equivalent bash ca ne doit pas etre sorcier...

Le peu que je savais de Linux on me l'a enseigné; le reste je l'ai appris ici grâce à la communauté...[moi]
Les arbres enseignent la patience: Ils ne baissent pas les bras à la première tempête venue. [C.Beaupré]

Hors ligne

#6 09-01-2011 03:08:48

tux12
Membre
Lieu : ./
Distrib. : Squeeze
Noyau : Linux 2.6.32-5-686-bigmem
(G)UI : KDE
Inscription : 27-02-2008

Re : comment convertir script php en script bash

Bonsoir,

En gros, ton script calcule la taille totale des fichiers nommés d'après la date du jour (20110109 aujourd'hui) et contenus dans un répertoire donné ($archive). Il envoie ensuite un mail à chaque destinataire déclaré dans un tableau ($dest).

Au final en bash, c'est du genre

# creation des variables
datejour=`date +%Y%m%d`
archive='/home/tux12/tmp/'
# execution
ls $archive |grep "/$datejour" |du -hsS | mail -s "$HOST Backup OK" un_dest@qqpart


on liste le répertoire, on "greppe" sur la date du jour, on donne les noms des restants à du et on récupère le résultat dans le corps d'un mail.

Reste à faire une boucle si besoin de plusieurs destinataires, mais tel quel ça tient tout sur une ligne. smile

datejour=`date +%Y%m%d`; archive='/home/tux12/tmp/'; ls $archive |grep "/$datejour" |du -hsS | mail -s "$HOST Backup OK" un_dest@qqpart


bash, c'est maAgic! big_smile
@+

Dernière modification par tux12 (09-01-2011 03:11:08)

Hors ligne

#7 09-01-2011 09:31:58

caracole
Membre
Lieu : Au soleil en Espagne
Distrib. : Ubuntu Maverick + Natty ( en test Debian Lenny)
Noyau : 2.6.35.24-genericpae et 2.6.37 (Natty)
(G)UI : Gnome
Inscription : 03-12-2010
Site Web

Re : comment convertir script php en script bash

tux12 a écrit :

En gros, ton script calcule la taille totale des fichiers nommés d'après la date du jour (20110109 aujourd'hui) et contenus dans un répertoire donné ($archive). Il envoie ensuite un mail à chaque destinataire déclaré dans un tableau ($dest).

Au final en bash, c'est du genre

# creation des variables
datejour=`date +%Y%m%d`
archive='/home/tux12/tmp/'
# execution
ls $archive | grep "/$datejour" | du -hsS | mail -s "$HOST Backup OK" un_dest@qqpart


on liste le répertoire, on "greppe" sur la date du jour, on donne les noms des restants à du et on récupère le résultat dans le corps d'un mail.

Reste à faire une boucle si besoin de plusieurs destinataires, mais tel quel ça tient tout sur une ligne. smile

datejour=`date +%Y%m%d`; archive='/home/tux12/tmp/'; ls $archive |grep "/$datejour" |du -hsS | mail -s "$HOST Backup OK" un_dest@qqpart


Alors je reste gaga ! le bash c'est simple ? mais pas si facile... mais je vais étudier grep , |  mail -s et compagnie..

!tux12 tu es un chef en bash ¡


Le peu que je savais de Linux on me l'a enseigné; le reste je l'ai appris ici grâce à la communauté...[moi]
Les arbres enseignent la patience: Ils ne baissent pas les bras à la première tempête venue. [C.Beaupré]

Hors ligne

#8 09-01-2011 10:12:52

tux12
Membre
Lieu : ./
Distrib. : Squeeze
Noyau : Linux 2.6.32-5-686-bigmem
(G)UI : KDE
Inscription : 27-02-2008

Re : comment convertir script php en script bash

Bonjour,

Non, je suis loin d'être "un chef" en bash. Je suis certain que l'on peut trouver une écriture plus courte (mais pas forcément plus lisible). Ce qui me paraît important de comprendre, c'est qu'il ne s'agit pas de remplacer "mot à mot" chaque instruction PHP par un équivalent bash (ou autre langage) mais de comprendre ce que fait le programme puis de le re-écrire dans le langage cible. Dans le cas présent une bonne partie du script source ne fait que permettre la prise en compte par PHP de choses qui en bash sont "évidentes", comme lister un répertoire (opendir() + listdir() + boucle <=> ls), ou inutiles comme clearstatcache().
Au final et quelque soit le langage que l'on souhaite utiliser, il faut assurément apprendre à connaître les possibilités qu'il offre, les fonctionnalités qu'il propose. Ça s'apprend, il faut juste y passer un peu de temps. smile

Si tu creuses un peu, il n'y a rien de particulièrement compliqué; uniquement des commandes simples (ls, du, grep) qui sont mises bout à bout par des pipes ( | , prononcer "païpe") pour que ce qu'aurait affiché normalement la commande à l'écran soit redirigé pour servir d'entrée pour la commande suivante.

L'utilisation de 'du' me permet d'éviter d'avoir à faire la somme des tailles des fichiers dans une boucle, comme c'est le cas dans le script initial.

Une précision, contrairement au script initial qui se base sur la taille des données des fichiers (*) pour calculer la somme, 'du' renvoie la place prise sur le disque, qui par défaut est un multiple de 4ko (la taille d'un bloc sur le disque). Dit autrement, la taille utile du fichier affichée par ls est arrondie au multiple de 4ko supérieur par du.

(*) le script utilise le résultat d'une commande ls:

$size = exec("ls -l '".$thefile."' | awk '{print $5}'")


@+

Dernière modification par tux12 (09-01-2011 10:23:47)

Hors ligne

#9 09-01-2011 14:46:54

caracole
Membre
Lieu : Au soleil en Espagne
Distrib. : Ubuntu Maverick + Natty ( en test Debian Lenny)
Noyau : 2.6.35.24-genericpae et 2.6.37 (Natty)
(G)UI : Gnome
Inscription : 03-12-2010
Site Web

Re : comment convertir script php en script bash

Bonjour tux12,

Tes commentaires sont interessants. bien sur j'ai quelques notions de php, bash j'ai du boulot asp je maitrice le C je l'ai en horreur ( odio en español ) pascal je m'en souvient un peu, basic et compagnie j'adore python ca passe bien, ruby ( avec sketchup je ne m'ennuie pas ) vala j'ai horreur java c'est com c par contre javascript j'aime bien...
Je te rejoins parfaitement sur l'importance de la compréhension de ce que fait un programme - autrement dit "l'algorithme" de mon temps on disait "l'organigrame" et ensuite de transposer.
Je me souviens avoir écrit des traducteurs, compilateurs inventé même un langage dans mon passé d'informaticien smile
Le problème aujourd'hui pour moi c'est le temps - il court il court vite à 67 balais.
je continue à potasser passion oblige

Merci pour tes points de vue, conseils et disponibilité.


@plus.
Pierre

Le peu que je savais de Linux on me l'a enseigné; le reste je l'ai appris ici grâce à la communauté...[moi]
Les arbres enseignent la patience: Ils ne baissent pas les bras à la première tempête venue. [C.Beaupré]

Hors ligne

Pied de page des forums