j'utilise un serveur (dédié) de prod. hébergé (serveur http/ftp) et un
serveur local, les 2 sous FC7, les postes utilisateurs sont sous WinXP
(utilisateurs neuneux).
j'ai le contrôle sur les 2 serveurs - le local servant de test avant
mise en prod., il peut subir plus d'outrages que la machine distante.
je cherche à automatiser certaines opérations (par exemple transfert ftp
entre serveur local et prod.) en les déclenchant depuis des pages ouèbe
renseignées depuis les postes client.
étant peu érudi avec le système linux (et notamment ses shells) mais
n'ayant pas de problèmes avec le C, perl et le php, ma question est:
quelle peuvent être les meilleures façons de procéder pour lancer de
taches sur le serveur local (sans passer par une console distante) ?
merci pour toute piste, et n'hésitez pas à rediriger au besoin.
Sylvain.
Typique de ceux qui ne se tiennent pas au courant de ce qui existe :-)
Mon pauvre ami ... j'ai utilisé rsync il y a des années et je ne l'utilise plus depuis des années, car ça ne correspond pas à mon besoin. De toute façon le seul but de cette histoire était d'illustrer comment on peut lancer des commandes distantes à travers ssh et comment exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc ne montre absolument pas.
--
Michel TALON
Michel Billaud <billaud@serveur5.labri.fr> wrote:
Typique de ceux qui ne se tiennent pas au courant de ce qui existe :-)
Mon pauvre ami ... j'ai utilisé rsync il y a des années et je ne
l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
De toute façon le seul but de cette histoire était d'illustrer comment
on peut lancer des commandes distantes à travers ssh et comment
exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc
ne montre absolument pas.
Typique de ceux qui ne se tiennent pas au courant de ce qui existe :-)
Mon pauvre ami ... j'ai utilisé rsync il y a des années et je ne l'utilise plus depuis des années, car ça ne correspond pas à mon besoin. De toute façon le seul but de cette histoire était d'illustrer comment on peut lancer des commandes distantes à travers ssh et comment exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc ne montre absolument pas.
--
Michel TALON
Michel Billaud
(Michel Talon) writes:
Michel Billaud wrote:
Typique de ceux qui ne se tiennent pas au courant de ce qui existe :-)
Mon pauvre ami ...
Je ne suis pas pauvre, je te rassure.
j'ai utilisé rsync il y a des années et je ne l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
par contre, pour le monsieur qui est peut etre plus préoccupé de ses besoins que des tiens passés et présents, ça faisait très bien l'affaire.
De toute façon le seul but de cette histoire était d'illustrer comment on peut lancer des commandes distantes à travers ssh et comment exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc ne montre absolument pas.
Je suis intervenu parce que je ne trouve pas pertinent de lui montrer *uniquement* des contorsions à base de ssh/tar, ou cpio, ou netcat ou dieu sait quoi encore, quand de bons outils existent, et sont largement répandus pour une tâche aussi usuelle.
Le risque est d'induire dans l'esprit du lecteur innocent l'idée que c'est vachement compliqué de transférer un fichier avec unix.
Alors que, d'ailleurs, un "scp" (qui dérive de ssh) c'est pas mal non plus pour trimballer un fichier d'une machine à l'autre.
Sinoon, pour en rester à l'utilisation du protocole FTP en mode non interactif, il y a aussi ncftpput.
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
talon@lpthe.jussieu.fr (Michel Talon) writes:
Michel Billaud <billaud@serveur5.labri.fr> wrote:
Typique de ceux qui ne se tiennent pas au courant de ce qui existe :-)
Mon pauvre ami ...
Je ne suis pas pauvre, je te rassure.
j'ai utilisé rsync il y a des années et je ne
l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
par contre, pour le monsieur qui est peut etre plus préoccupé de ses
besoins que des tiens passés et présents, ça faisait très bien l'affaire.
De toute façon le seul but de cette histoire était d'illustrer comment
on peut lancer des commandes distantes à travers ssh et comment
exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc
ne montre absolument pas.
Je suis intervenu parce que je ne trouve pas pertinent de lui montrer
*uniquement* des contorsions à base de ssh/tar, ou cpio, ou netcat ou
dieu sait quoi encore, quand de bons outils existent, et sont
largement répandus pour une tâche aussi usuelle.
Le risque est d'induire dans l'esprit du lecteur innocent l'idée que
c'est vachement compliqué de transférer un fichier avec unix.
Alors que, d'ailleurs, un "scp" (qui dérive de ssh) c'est pas mal non plus
pour trimballer un fichier d'une machine à l'autre.
Sinoon, pour en rester à l'utilisation du protocole FTP en mode non interactif,
il y a aussi ncftpput.
MB
--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
Typique de ceux qui ne se tiennent pas au courant de ce qui existe :-)
Mon pauvre ami ...
Je ne suis pas pauvre, je te rassure.
j'ai utilisé rsync il y a des années et je ne l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
par contre, pour le monsieur qui est peut etre plus préoccupé de ses besoins que des tiens passés et présents, ça faisait très bien l'affaire.
De toute façon le seul but de cette histoire était d'illustrer comment on peut lancer des commandes distantes à travers ssh et comment exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc ne montre absolument pas.
Je suis intervenu parce que je ne trouve pas pertinent de lui montrer *uniquement* des contorsions à base de ssh/tar, ou cpio, ou netcat ou dieu sait quoi encore, quand de bons outils existent, et sont largement répandus pour une tâche aussi usuelle.
Le risque est d'induire dans l'esprit du lecteur innocent l'idée que c'est vachement compliqué de transférer un fichier avec unix.
Alors que, d'ailleurs, un "scp" (qui dérive de ssh) c'est pas mal non plus pour trimballer un fichier d'une machine à l'autre.
Sinoon, pour en rester à l'utilisation du protocole FTP en mode non interactif, il y a aussi ncftpput.
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Sylvain
Michel Billaud wrote on 14/01/2008 16:20:
j'ai utilisé rsync il y a des années et je ne l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
par contre, pour le monsieur qui est peut etre plus préoccupé de ses besoins que des tiens passés et présents, ça faisait très bien l'affaire.
le monsieur vous remercie des 2 propositions.
j'ignorais rsync et il réponds à certains problèmes. le tunneling ssh me donne également de nouveaux moyens.
reste que, pour le fond de ma question, je ne voulais *pas* lancer des commandes, plus clairement - puisqu'évidemment il y en aura bien quelques unes: j'ai un accès total au serveur local, donc je pourrais "faire du shell" pour tout besoin, toutefois 1) ce n'est pas ma première compétence, 2) je souhaite plutôt permettre à tous les utilisateurs finaux de provoquer / lancer des actions nécessaires via des pages ouèbe, Apache / PHP devront alors lancer la commande.
ce qui me gène le plus pour l'instant est le fait que PHP attende le retour d'exécution lorsqu'il lance une commande externe.
De toute façon le seul but de cette histoire était d'illustrer comment on peut lancer des commandes distantes à travers ssh et comment exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc ne montre absolument pas.
Je suis intervenu parce que je ne trouve pas pertinent de lui montrer *uniquement* des contorsions à base de ssh/tar, ou cpio, ou netcat ou dieu sait quoi encore, quand de bons outils existent, et sont largement répandus pour une tâche aussi usuelle.
la vérité sera peut être entre les 2, factuellement j'ai 2 besoins:
- pousser du local vers le prod. des fichiers: données non protégées (elles sont publiées par le site) mais écriture après authentification d'un compte user. cette opération est en batch (pour un paquet de fichiers présent sur le svr local) à l'initiative d'un client final, elle peut prendre des heures.
- recevoir, du serveur de prod et sur le serveur local, des notifications lors de certaines évènements (que l'on peux ramener à la génération d'une page php et/ou l'insertion d'un record dans une table MySQL). ici je manque cruellement de solutions notamment parce que le serveur local n'est pas visible du prod (IP 192.168.x.x), ma seule (mauvaise) solution serait de poster un mail sur une adresse mail scannée par le svr local ... mais j'ignore comment tuner postfix (ou autre) pour déclencher une action basée sur le contenu du mail (ni comment authentifier ce mail).
Le risque est d'induire dans l'esprit du lecteur innocent l'idée que c'est vachement compliqué de transférer un fichier avec unix.
sûrement simple de transférer - et oui c'est le cas, pour récupérer des distros ou envoyer fichier par fichier, je m'accomode très bien de la ligne de commande, là où mon innocence blesse c'est pour automatiser cela.
Alors que, d'ailleurs, un "scp" (qui dérive de ssh) c'est pas mal non plus pour trimballer un fichier d'une machine à l'autre. Sinoon, pour en rester à l'utilisation du protocole FTP en mode non interactif, il y a aussi ncftpput.
merci pour ces 2 pistes supplémentaires.
Sylvain.
Michel Billaud wrote on 14/01/2008 16:20:
j'ai utilisé rsync il y a des années et je ne
l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
par contre, pour le monsieur qui est peut etre plus préoccupé de ses
besoins que des tiens passés et présents, ça faisait très bien l'affaire.
le monsieur vous remercie des 2 propositions.
j'ignorais rsync et il réponds à certains problèmes.
le tunneling ssh me donne également de nouveaux moyens.
reste que, pour le fond de ma question, je ne voulais *pas* lancer des
commandes, plus clairement - puisqu'évidemment il y en aura bien
quelques unes: j'ai un accès total au serveur local, donc je pourrais
"faire du shell" pour tout besoin, toutefois 1) ce n'est pas ma première
compétence, 2) je souhaite plutôt permettre à tous les utilisateurs
finaux de provoquer / lancer des actions nécessaires via des pages
ouèbe, Apache / PHP devront alors lancer la commande.
ce qui me gène le plus pour l'instant est le fait que PHP attende le
retour d'exécution lorsqu'il lance une commande externe.
De toute façon le seul but de cette histoire était d'illustrer comment
on peut lancer des commandes distantes à travers ssh et comment
exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc
ne montre absolument pas.
Je suis intervenu parce que je ne trouve pas pertinent de lui montrer
*uniquement* des contorsions à base de ssh/tar, ou cpio, ou netcat ou
dieu sait quoi encore, quand de bons outils existent, et sont
largement répandus pour une tâche aussi usuelle.
la vérité sera peut être entre les 2, factuellement j'ai 2 besoins:
- pousser du local vers le prod. des fichiers: données non protégées
(elles sont publiées par le site) mais écriture après authentification
d'un compte user. cette opération est en batch (pour un paquet de
fichiers présent sur le svr local) à l'initiative d'un client final,
elle peut prendre des heures.
- recevoir, du serveur de prod et sur le serveur local, des
notifications lors de certaines évènements (que l'on peux ramener à la
génération d'une page php et/ou l'insertion d'un record dans une table
MySQL).
ici je manque cruellement de solutions notamment parce que le serveur
local n'est pas visible du prod (IP 192.168.x.x), ma seule (mauvaise)
solution serait de poster un mail sur une adresse mail scannée par le
svr local ... mais j'ignore comment tuner postfix (ou autre) pour
déclencher une action basée sur le contenu du mail (ni comment
authentifier ce mail).
Le risque est d'induire dans l'esprit du lecteur innocent l'idée que
c'est vachement compliqué de transférer un fichier avec unix.
sûrement simple de transférer - et oui c'est le cas, pour récupérer des
distros ou envoyer fichier par fichier, je m'accomode très bien de la
ligne de commande, là où mon innocence blesse c'est pour automatiser cela.
Alors que, d'ailleurs, un "scp" (qui dérive de ssh) c'est pas mal non plus
pour trimballer un fichier d'une machine à l'autre.
Sinoon, pour en rester à l'utilisation du protocole FTP en mode non interactif,
il y a aussi ncftpput.
j'ai utilisé rsync il y a des années et je ne l'utilise plus depuis des années, car ça ne correspond pas à mon besoin.
par contre, pour le monsieur qui est peut etre plus préoccupé de ses besoins que des tiens passés et présents, ça faisait très bien l'affaire.
le monsieur vous remercie des 2 propositions.
j'ignorais rsync et il réponds à certains problèmes. le tunneling ssh me donne également de nouveaux moyens.
reste que, pour le fond de ma question, je ne voulais *pas* lancer des commandes, plus clairement - puisqu'évidemment il y en aura bien quelques unes: j'ai un accès total au serveur local, donc je pourrais "faire du shell" pour tout besoin, toutefois 1) ce n'est pas ma première compétence, 2) je souhaite plutôt permettre à tous les utilisateurs finaux de provoquer / lancer des actions nécessaires via des pages ouèbe, Apache / PHP devront alors lancer la commande.
ce qui me gène le plus pour l'instant est le fait que PHP attende le retour d'exécution lorsqu'il lance une commande externe.
De toute façon le seul but de cette histoire était d'illustrer comment on peut lancer des commandes distantes à travers ssh et comment exploiter leur sortie à travers le tunnel ssh, ce que ta commande ad hoc ne montre absolument pas.
Je suis intervenu parce que je ne trouve pas pertinent de lui montrer *uniquement* des contorsions à base de ssh/tar, ou cpio, ou netcat ou dieu sait quoi encore, quand de bons outils existent, et sont largement répandus pour une tâche aussi usuelle.
la vérité sera peut être entre les 2, factuellement j'ai 2 besoins:
- pousser du local vers le prod. des fichiers: données non protégées (elles sont publiées par le site) mais écriture après authentification d'un compte user. cette opération est en batch (pour un paquet de fichiers présent sur le svr local) à l'initiative d'un client final, elle peut prendre des heures.
- recevoir, du serveur de prod et sur le serveur local, des notifications lors de certaines évènements (que l'on peux ramener à la génération d'une page php et/ou l'insertion d'un record dans une table MySQL). ici je manque cruellement de solutions notamment parce que le serveur local n'est pas visible du prod (IP 192.168.x.x), ma seule (mauvaise) solution serait de poster un mail sur une adresse mail scannée par le svr local ... mais j'ignore comment tuner postfix (ou autre) pour déclencher une action basée sur le contenu du mail (ni comment authentifier ce mail).
Le risque est d'induire dans l'esprit du lecteur innocent l'idée que c'est vachement compliqué de transférer un fichier avec unix.
sûrement simple de transférer - et oui c'est le cas, pour récupérer des distros ou envoyer fichier par fichier, je m'accomode très bien de la ligne de commande, là où mon innocence blesse c'est pour automatiser cela.
Alors que, d'ailleurs, un "scp" (qui dérive de ssh) c'est pas mal non plus pour trimballer un fichier d'une machine à l'autre. Sinoon, pour en rester à l'utilisation du protocole FTP en mode non interactif, il y a aussi ncftpput.
merci pour ces 2 pistes supplémentaires.
Sylvain.
Michel Billaud
Sylvain writes:
ce qui me gène le plus pour l'instant est le fait que PHP attende le retour d'exécution lorsqu'il lance une commande externe.
La fonction pcntl_fork(), couplée avec un pcntl_exec() qui lance un ftp/rsync/skevouvoulez, devrait vous rendre service de ce côté-là. http://fr.php.net/manual/en/function.pcntl-exec.php
Pas essayé. @#ç[& de copies à corriger.
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Sylvain <noSpam@mail.net> writes:
ce qui me gène le plus pour l'instant est le fait que PHP attende le
retour d'exécution lorsqu'il lance une commande externe.
La fonction pcntl_fork(), couplée avec un pcntl_exec() qui lance un
ftp/rsync/skevouvoulez, devrait vous rendre service de ce côté-là.
http://fr.php.net/manual/en/function.pcntl-exec.php
Pas essayé. @#ç[& de copies à corriger.
MB
--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
ce qui me gène le plus pour l'instant est le fait que PHP attende le retour d'exécution lorsqu'il lance une commande externe.
La fonction pcntl_fork(), couplée avec un pcntl_exec() qui lance un ftp/rsync/skevouvoulez, devrait vous rendre service de ce côté-là. http://fr.php.net/manual/en/function.pcntl-exec.php
Pas essayé. @#ç[& de copies à corriger.
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Michel Billaud
Michel Billaud writes:
Sylvain writes:
ce qui me gène le plus pour l'instant est le fait que PHP attende le retour d'exécution lorsqu'il lance une commande externe.
La fonction pcntl_fork(), couplée avec un pcntl_exec() qui lance un ftp/rsync/skevouvoulez, devrait vous rendre service de ce côté-là. http://fr.php.net/manual/en/function.pcntl-exec.php
Pas essayé. @#ç[& de copies à corriger.
J'ai craqué. Un petit test avec un rsync local, ça marche. Un "top" montre
que rsync tourne après la fin du script. M'en retourne aux copies.
<?php
// d'après http://de3.php.net/exec switch ($pid = pcntl_fork()) { case 0: fclose(STDOUT); // processus fils : on ferme les descripteurs ouverts fclose(STDIN); fclose(STDERR);
$cmd = "/usr/bin/rsync"; // prog $args = array("-a", // copie récursive "/home/billaud/COURS", // de quoi "/tmp"); // où pcntl_exec($cmd, $args); exit(0); default: echo "Le pid du fils est = $pidn"; break; } ?>
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Michel Billaud <billaud@serveur5.labri.fr> writes:
Sylvain <noSpam@mail.net> writes:
ce qui me gène le plus pour l'instant est le fait que PHP attende le
retour d'exécution lorsqu'il lance une commande externe.
La fonction pcntl_fork(), couplée avec un pcntl_exec() qui lance un
ftp/rsync/skevouvoulez, devrait vous rendre service de ce côté-là.
http://fr.php.net/manual/en/function.pcntl-exec.php
Pas essayé. @#ç[& de copies à corriger.
J'ai craqué. Un petit test avec un rsync local, ça marche. Un "top" montre
que rsync tourne après la fin du script. M'en retourne aux copies.
<?php
// d'après http://de3.php.net/exec
switch ($pid = pcntl_fork()) {
case 0:
fclose(STDOUT); // processus fils : on ferme les descripteurs ouverts
fclose(STDIN);
fclose(STDERR);
$cmd = "/usr/bin/rsync"; // prog
$args = array("-a", // copie récursive
"/home/billaud/COURS", // de quoi
"/tmp"); // où
pcntl_exec($cmd, $args);
exit(0);
default:
echo "Le pid du fils est = $pidn";
break;
}
?>
--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
ce qui me gène le plus pour l'instant est le fait que PHP attende le retour d'exécution lorsqu'il lance une commande externe.
La fonction pcntl_fork(), couplée avec un pcntl_exec() qui lance un ftp/rsync/skevouvoulez, devrait vous rendre service de ce côté-là. http://fr.php.net/manual/en/function.pcntl-exec.php
Pas essayé. @#ç[& de copies à corriger.
J'ai craqué. Un petit test avec un rsync local, ça marche. Un "top" montre
que rsync tourne après la fin du script. M'en retourne aux copies.
<?php
// d'après http://de3.php.net/exec switch ($pid = pcntl_fork()) { case 0: fclose(STDOUT); // processus fils : on ferme les descripteurs ouverts fclose(STDIN); fclose(STDERR);
$cmd = "/usr/bin/rsync"; // prog $args = array("-a", // copie récursive "/home/billaud/COURS", // de quoi "/tmp"); // où pcntl_exec($cmd, $args); exit(0); default: echo "Le pid du fils est = $pidn"; break; } ?>
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Sylvain
Michel Billaud wrote on 15/01/2008 21:12:
J'ai craqué. Un petit test avec un rsync local, ça marche. Un "top" montre que rsync tourne après la fin du script. M'en retourne aux copies.
merci, excellent, cela réponds parfaitement au pb.
Sylvain.
Michel Billaud wrote on 15/01/2008 21:12:
J'ai craqué. Un petit test avec un rsync local, ça marche. Un "top" montre
que rsync tourne après la fin du script. M'en retourne aux copies.
merci, excellent, cela réponds parfaitement au pb.