note 100575 rejected from function.ssh2-exec by danbrown
| From: | danbrown@php.net | Date: | Mon, 25 Oct 2010 00:09:22 +0000 |
| Subject: | note 100575 rejected from function.ssh2-exec by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-173420@lists.php.net to get a copy of this message | ||
Note Submitter: pablo at lanzate dot com
----
Hi, i'm using this code for connect to other machine and execute a command with a button. Ok,
when i press the button "Conectar" the ssh connection has entablished with out problems,
but when i press the button "Comando", i get the next error:
"Warning: ssh2_exec() expects parameter 1 to be resource, null given in /var/www/index.php on
line 69
Fallo: No se puede ejecutar el comando."
<html><head>
<h1>Entorno de pruebas para SSH via PHP</h1>
<p>Esta aplicacion es para la implementacion de futuros usos para las Remotas.</p>
</head>
<body>
<FORM NAME = "FormularioIP" METHOD = "POST" ACTION =
"index.php">
Introduzce una IP para conectar:<INPUT TYPE= "text" VALUE= ""
NAME="servidor"></INPUT>
<INPUT TYPE= "submit" NAME= "Conectar" VALUE=
"Conectar"></INPUT>
</FORM>
<?php
//if ($_SERVER['REQUEST_METHOD'] == 'POST'){
if (isset($_POST['Conectar'])) {
$direccion = $_POST["servidor"];
conectarse($direccion);
}
function conectarse($server) {
if ($server == '') {
echo "<br>La direccion IP no puede estar vacia";
} else {
// Aqui se empieza todo el proceso de conexion por SSH
echo "<br>Conectando con el servidor: ", $server;
echo "<br>-------------------------------<br>";
echo "Comprobando si esta instalada la funcion necesaria:<br>";
if (!function_exists("ssh2_connect")) die("La función ssh2_connect no esta
instalada");
echo "Esta instalada, continuamos para bingo, <br>";
echo "-----------------------------------------<br>";
echo "Nos intentamos conectar: <br>";
// Nos conectamos a la direccion espeficada a mano mas abajo y comprobamos si hay fallo
if(!($con = ssh2_connect($server, 22))){
echo "Fallo, no llego al servidor. <br>";
} else {
// Se intenta la conexion con usuario y contraseña
if(!ssh2_auth_password($con, "asda", "asdd")) {
echo "Fallo, no me he podido conectar, revisa el nombre de usuario o la contraseña.
<br>";
} else {
// Hasta la cocina
echo "Vale, me he conectado, <br>";
echo "------------------------------ <br>";
}
}
}
}
if (isset($_POST['Comando'])) {
echo "<br>Enviando el comando \"ls -ns\" al sistema al que estamos conectado
<br>";
// Lanzamos el comando y a la vez comprobamos si ha fallado
if (!($stream = ssh2_exec($con, "ls -ns"))) {
echo "Fallo: No se puede ejecutar el comando.";
} else {
//Recojemos la salida del comando
stream_set_blocking($stream, true);
$data = "";
while ($buf = fread($stream,4096)) {
$data .= $buf;
}
echo $data;
fclose($stream);
}
}
?>
<FORM NAME = "FormularioConectar" METHOD = "POST" ACTION =
"index.php">
Presionamos para mandar un "ls -ns": <INPUT TYPE= "submit" NAME=
"Comando" VALUE = "Comando"></INPUT>
</FORM>
</body></html>