devildant Posté(e) le 20 avril 2012 Partager Posté(e) le 20 avril 2012 Bonjour a tous, voila comme le nom du message l'indiquer je désirerai installer la lib libssh2 dans apache afin de pouvoir utiliser les commande ssh de php. j'ai fait quelque recherche et je n'est trouver que 2 lien. http://forum.synology.com/enu/viewtopic.php?f=35&t=36411 malheureusement aucun n'a réussi. je me tourne vers vous pour savoir si quelqu'un la déjà installer? et comment? cordialement 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 23 avril 2012 Auteur Partager Posté(e) le 23 avril 2012 enfaite se que j'aimerais c'est créer un tunnel ssh entre le syno et un autre serveur (sur lequel je ne peux pas modifier la configuration) a travers se tunnel j'aimerais y faire passé du ftp (pour conserver les principe de reprise de téléchargement....) mon problème c'est que le serveur au quelle je me connecte accepte seulement une authentification login/password pour le ssh (l’authentification par clé est refusé) du coup je n'arrive pas a automatiser la commande ssh pour le tunnel car mon mots de passe est a chaque fois demandé. auriez vous une solution pour palier se problème? (d'ou l'intéret d'avoir la libssh2 ^^) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 25 avril 2012 Auteur Partager Posté(e) le 25 avril 2012 bon j'ai trouver une lib ssh écrite en php pour ceux que cela intéressé, je n'est pas trouver comment établir un tunnel, cependant elle fonctionne bien. http://phpseclib.sourceforge.net/ cordialement 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
macbenoit Posté(e) le 25 avril 2012 Partager Posté(e) le 25 avril 2012 lol 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 25 avril 2012 Auteur Partager Posté(e) le 25 avril 2012 ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
macbenoit Posté(e) le 25 avril 2012 Partager Posté(e) le 25 avril 2012 c ton post en discution solo ca ma fait rire mais pas mechament hein 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
p_tony Posté(e) le 25 avril 2012 Partager Posté(e) le 25 avril 2012 bon j'ai trouver une lib ssh écrite en php pour ceux que cela intéressé, je n'est pas trouver comment établir un tunnel, cependant elle fonctionne bien. http://phpseclib.sourceforge.net/ cordialement Bonjour, Je recherche également un moyen d'utiliser ssh. L'installation de libssh2 me parait pas vraiment simple. J'essaye donc phpseclib depuis hier, mais pas pour faire la même chose que toi. Mon objectif à moi étant d'éxecuter une commande sudo, mais pour l'instant je n'arrive pas à détecter le moment où cela demande le password et malheuresement le forum de support est HS aujourd'hui. Enfin bref, ton topic m'intéresse 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 25 avril 2012 Auteur Partager Posté(e) le 25 avril 2012 (modifié) c ton post en discution solo ca ma fait rire mais pas mechament hein lol effectivement je me suis senti un peux seul ^^ Bonjour, Je recherche également un moyen d'utiliser ssh. L'installation de libssh2 me parait pas vraiment simple. J'essaye donc phpseclib depuis hier, mais pas pour faire la même chose que toi. Mon objectif à moi étant d'éxecuter une commande sudo, mais pour l'instant je n'arrive pas à détecter le moment où cela demande le password et malheuresement le forum de support est HS aujourd'hui. Enfin bref, ton topic m'intéresse je viens de trouver ce que vous recherchiez @p_tony <?php include('Net/SSH2.php'); $sftp = new Net_SSH2('www.domain.tld'); $sftp->login('username', 'password'); echo $sftp->read('username@username:~$'); $sftp->write("sudo ls -la\n"); $output = $sftp->read('#Password:|username@username:~\$#', NET_SSH2_READ_REGEX); echo $output; if (preg_match('#Password:#', $lines)) { $ssh->write("password\n"); echo $sftp->read('username@username:~$'); } ?> http://phpseclib.sou.../documentation/ Modifié le 25 avril 2012 par devildant 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 25 avril 2012 Auteur Partager Posté(e) le 25 avril 2012 pour mon problème toujours pas de solution je désirerais faire la même chose que ce tuto http://www.ftpgetter.com/ftp-ssh-tunnel.php mais directement depuis le syno en php ou avec un script bash ou sh. si quelqu'un avais une idée ou autre je suis preneur ^^ 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 26 avril 2012 Auteur Partager Posté(e) le 26 avril 2012 (modifié) victoire, tunnel ssh + ftp ok etape 1 : creer un user avec 0 droit etape 2: lui donnée l'acces en ssh etape 3: se connecter en root via ssh puis faite les commandes suivantes: su usersshsyno entrer yes a la question pauser ssh -N -f -L3131:ipserveurdistant:21 loginserveurdistant@ipserveurdistant entrer yes a la question pauser puis faites ctrl c etape 4: le code php include('Net/SSH2.php'); function findTunnel($ssh) { $proc = $ssh->exec('ps | grep userssh'); $procarray = array(); $procarray = explode("\n", $proc); foreach ($procarray as $v) { if (strpos($v, "ssh -N -f -L3131:ipserveurdistant:21")) return true; } return false; } $ssh = new Net_SSH2('ipsyno'); if (!$ssh->login('userssh', 'passuserssh')) { exit('Login Failed'); } if (findTunnel($ssh) == false) { $ssh->read('NomDuSyno>'); $ssh->write("ssh -N -f -L3131:ipserveurdistant:21 loginserveurdistant@ipserveurdistant\n"); $ssh->read("Debian GNU/Linux 6.0"); $ssh->read("loginserveurdistant@ipserveurdistant's password:"); $ssh->write("passusersshdistant\n"); $ssh->read('NomDuSyno>'); } $ssh->write("exit\n"); $ftp_server = "127.0.0.1"; $ftp_user_name = "loginserveurdistant"; $ftp_user_pass = "passusersshdistant"; $conn_id = ftp_connect($ftp_server, 3131); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); ftp_pasv ($conn_id , true); Modifié le 26 avril 2012 par devildant 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
p_tony Posté(e) le 26 avril 2012 Partager Posté(e) le 26 avril 2012 je viens de trouver ce que vous recherchiez @p_tony <?php include('Net/SSH2.php'); $sftp = new Net_SSH2('www.domain.tld'); $sftp->login('username', 'password'); echo $sftp->read('username@username:~$'); $sftp->write("sudo ls -la\n"); $output = $sftp->read('#Password:|username@username:~\$#', NET_SSH2_READ_REGEX); echo $output; if (preg_match('#Password:#', $lines)) { $ssh->write("password\n"); echo $sftp->read('username@username:~$'); } ?> http://phpseclib.sou.../documentation/ Oui, je me suis basé là dessus mais ça ne fonctionne pas. Peut -être parce que je test avec xampp, va savoir. Je vais tester directement dans mon syno pour voir. En tout cas content de voir que tu as trouvé ta solution. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 26 avril 2012 Auteur Partager Posté(e) le 26 avril 2012 @p_tony montrez moi votre code ou envoyer le moi par mp si vous voulez je pourrais peu être vous aider. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
p_tony Posté(e) le 28 avril 2012 Partager Posté(e) le 28 avril 2012 (modifié) Finalement, j'ai fini par y arriver. Voici un exemple pour ceux que ça intéressent: <?php $connexion=1; switch ($connexion) { case 0: $cible='localhost'; $login='user'; $password='pass'; break; case 1: $cible='192.168.0.10'; $login='user'; $password='pass'; break; case 2: $cible='192.168.0.9'; $login='user'; $password='pass'; break; } include('Net/SSH2.php'); define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX); // pour récupérer les logs avec $ssh->getLog(); $ssh = new Net_SSH2($cible); if (!$ssh->login($login, $password)) { exit('Login Failed'); } $ssh->setTimeout(5); // pour ne pas attendre indéfiniment un read() qui ne trouve rien. //echo $ssh->read('[prompt]'); $ssh->write("sudo ls -l\n"); // Le motif détecte entre autres: 'Mot de passe :', 'Password:', '[sudo] password for tony:' $output = $ssh->read('/((Mot\sde\spasse|Password)[^:]*\|(\[prompt\])/i', NET_SSH2_READ_REGEX); echo "<pre>$output</pre>"; if (preg_match('/(Mot\sde\spasse|Password)[^:]*\:/i', $output)) { $ssh->write("$password\n"); echo "<pre>".$ssh->read('[prompt]')."</pre>"; } //echo "<pre>".$ssh->getLog()."</pre>"; ?> Modifié le 28 avril 2012 par p_tony 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 28 avril 2012 Auteur Partager Posté(e) le 28 avril 2012 je suis ravie de voir que vous avez trouver une solution a votre problème, je vous piquerais surement vos regex ^^ 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
devildant Posté(e) le 29 avril 2012 Auteur Partager Posté(e) le 29 avril 2012 (modifié) Pour avoir la fonction setTimeout que utilise @p_tony il faut télécharger phpseclib sur le svn. j'ai trouver une petit fonction qui est bien pratique, elle permet de tester une url en php. vous allez me dire a quoi cela sert ^^ enfaite je me suis rendu compte que lorsque que je perdais le net, la page php que j'ai codé et qui fait office de client ftp ne répondais plus(logique ^^), c'est la que la fonction suivante rentre en scène, elle permet de savoir si la page répond(et bien d'autre) avec un timeout ^^. function monFileGetContentsCurl($url, $montrerContenu, $timeout){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $resultat = curl_exec($ch); $CurlErr = curl_error($ch); curl_close($ch); if ($CurlErr) { echo $CurlErr; return false; }elseif ($montrerContenu){ return $resultat; } return true; } $url = "http://www.google.fr"; //votre url $montrerContenu = false; // mettre a true si vous voulez voir la page appeler $timeout = 3 //en seconde if (monFileGetContentsCurl($url, $montrerContenu, $timeout) == false) exit(); Modifié le 29 avril 2012 par devildant 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.