Page 1 sur 1

script bash, ssh, cat >, oui un peu de tout ca

Posté : 25 mai 2007, 12:53
par jim
bonjour,
j'ai un script en bash qui fonctionne bien, celui ci contient une ligne du style "ssh [email protected] cat /proc/partitions > /usr/tmp/mes_partitions"
Quand je l'execute normalement, le fichier apparait bien sur la machine ou le script est executé et avec le contenu de la machine X.X.X.X. Mais quand je l'execute sous php avec la commande exec ou shell_exec, le fichier mes_partitions est créés, mais vide. :(
Ca doit etre un probleme de flux, ou je ne sais quoi, que je ne sais pas regler, si qq'un avait une solution a me proposer, cela serai super.
Merci
Cordialement
JM

Posté : 25 mai 2007, 13:15
par crash
Bonjour,

Essaie ceci:
<?php
echo '<pre>';
$last_line = system('cat /proc/partitions', $retval);
?>
Mais la meilleure méthode enfin ce n'est que mon avis si tu veux afficher tes partitions il faut plutot utiliser ceci:
<?php
echo '<pre>';
$last_line = system('df -h', $retval);
?>
En esperant que cela ira.

Cdt.

Posté : 25 mai 2007, 13:37
par Ripat
Le problème est que le script veut accéder en ssh à un compte situé sur un serveur distant. Je suppose qu'il y a échange de clé privée/publique afin d'éviter de devoir taper le mot de passe de l'utilisateur root. Le script peut donc s'exécuter sans prompt pour le mdp.

Premier point: du ssh en root, c'est courageux (si pas téméraire) mais pas top au niveau sécurité mais bon.

Ensuite, si ça marche en lançant le script depuis une console root, l'échange des clés fonctionne. Mais si le script est lancé depuis PHP, c'est une "console" www-data (user de httpd/apache) qui va demander la connexion ssh. Comme il n'y a pas de clés pour www-data, la connexion échoue certainement. Pour t'en assurer, fais:
exec ('ssh [email protected] cat /proc/partitions > /tmp/erreur-ssh 2>&1');
Et va voir le contenu de /tmp/erreur-ssh. Je mets ma main à couper qu'il y aura un message d'erreur du genre "Invalid Key".

Posté : 28 mai 2007, 14:25
par jim
Bonjour, et merci pour vos reponses,
Bon, je tiens à te rassurer Ripat, tu n'aura pas à te couper la main ;)
Donc, c'est bien mon probleme, mais je suis quelque peu embeter, je ne sais pas trop comment faire du coup pour l'échange des clés (si je n'etais pas le seul sur la machine, j'essairai tout et n'importe quoi, mais je prefere pas). J'ai regarder dans /etc/passwd et shadow, l'utilisateur www-data, n'y apparait pas, par contre j'ai un apache. Mais je ne sais pas trop comment creer la clé, ou la recuperer si elle existe deja. Je sais creer une cle avec ssh-keygen, mais normalement je suis connecter sur le compte correspondant. La je suis un peu perdu, dois-je creer l'utilisateur...? ou la clé est deja qqpart et je ne sais pas ou?

Merci d'avance.