Commande SSH2 via un fichier PHP

Eléphant du PHP | 115 Messages

16 août 2016, 17:55

Bonjour,

Je cherche via le SSH2 a me connecter et a écrire dans mon crontab en passant via un fichier php.

exemple :

Code : Tout sélectionner

<?php include('./config/phpseclib/Net/SSH2.php'); $connection = ssh2_connect('IP serveur'); if (ssh2_auth_password($connection, 'user', 'mots de passe')) { echo "Authentication Successful!\n"; [b]echo $ssh->exec('pwd'); echo $ssh->exec('ls -la');[/b] } else { die('Authentication Failed...'); } ?>
C'est un test cela :

Il me dit bien que je suis connecter mais n’exécute pas mon code de test en gras.

j'ai cette erreur
Authentication Successful! Fatal error: Call to a member function exec() on a non-object in ....... on line 11

Pouvez-vous me dire comment faire pour déjà exécuter des commande via mon fichier PHP.

Merci de votre aide,

Eléphant du PHP | 176 Messages

16 août 2016, 19:41

Bonjour,

Je ne connais pas du tout la classe que tu utilises mais :

1. Ta variable ssh sort d'où ?
2. C'est la variable connection que tu initialise... pas ssh
Cordialement
Naroth

Mammouth du PHP | 2703 Messages

16 août 2016, 19:42

$connection = ssh2_connect('IP serveur');
$ssh->exec('pwd');
d'où ce message d'erreur très logique.

Eléphant du PHP | 115 Messages

17 août 2016, 09:26

Bonjour,

C'est un script récupérer sur le net, quant je modifie le mots de passe il me remonte une erreur, mais je vient de faire un test avec la commande

last -n 10

et là pas de connexion de mon fichier php, pouvez-vous m'aidez.

je cherche a me connecter en SSH2 avec des commande pour écrire dans mon crontab.
Y-a-t-il une scripte a utiliser ?

Merci de votre aide.

Eléphant du PHP | 134 Messages

17 août 2016, 10:18

<?php
$login = "sshUser";
$password = "tIoeK38k_3J$";
 
$connection = ssh2_connect('200.XXX.XXX.XXX', '22');
ssh2_auth_password($connection, $login, $password);
$stream = ssh2_exec($connection, 'ls -la'); 
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
?>

Eléphant du PHP | 115 Messages

18 août 2016, 09:11

Bonjour,

Merci de votre aide,

J'arrive a me connecter et a remplir un fichier, mais je dois utiliser SSH2 pour me connecter a CRONTAB pour remplir le fichier.
Pour cela je fait

Code : Tout sélectionner

crontab -l | sed -e '0 9 * * 6 /usr/bin/php /home/www/site_exemple/site/page.php' | crontab -
Pouvez-vous m'aider pour écrire cette commande.
J'utilise le code de WENKz, et essayer d'autre mais celui là est le plus simple.

Code : Tout sélectionner

<?php $login = "test"; $password = "12345"; $connection = ssh2_connect('00.00.00.00', '22'); ssh2_auth_password($connection, $login, $password); $stream = ssh2_exec($connection, 'crontab -l | sed -e '0 9 * * 6 /usr/bin/php /home/www/site_exemple/site/page.php' | crontab -'); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); echo stream_get_contents($stream_out); ?>
J'ai cette erreur 'Parse error: syntax error, unexpected '0' (T_LNUMBER)'

Merci a vous de votre aide,

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 août 2016, 09:45

Tu as un problème de guillemets qui te font fermer ta chaine de caractères au milieu de ta commande d'où le message d'erreur.
C'est assez visible avec la coloration syntaxique.

La solution est d'utiliser des guillemets doubles " à l'extérieur et des simples à l'intérieur '

Code : Tout sélectionner

"crontab -l | sed -e '0 9 * * 6 /usr/bin/php /home/www/site_exemple/site/page.php' | crontab -"
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 115 Messages

18 août 2016, 10:43

Merci,

Je vient de faire le teste plus d'erreur mais rien ne s’écrie dans mon fichier CRONTAB.
Quant le tape en ligne de commande

crontab -e le fichier s'ouvre est j'ai rien décris.

voilà le code

Code : Tout sélectionner

<?php $login = "root"; $password = "12345"; $connection = ssh2_connect('00.00.00.00', '22'); ssh2_auth_password($connection, $login, $password); $stream = ssh2_exec($connection, "crontab -l | sed -e '0 9 * * 6 /usr/bin/php /home/www/site_exemple/site/page.php' | crontab -"); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); echo stream_get_contents($stream_out); ?>
je comprend pas , n'arrive pas a écrire dans un fichier avec sed.

Eléphant du PHP | 115 Messages

19 août 2016, 09:05

Bonjour,

Avez-vous une idée pour pouvoir faire cela, je ne trouve rien.

Merci de votre aide,

Eléphant du PHP | 176 Messages

19 août 2016, 19:16

Bonjour,

Il manquerait pas le "-e" sur ta commande ?

Code : Tout sélectionner

crontab -l | sed -e '0 9 * * 6 /usr/bin/php /home/www/site_exemple/site/page.php' | crontab -e
Cordialement
Naroth