Foros del Web » Programando para Internet » PHP »

Problema con telnet vía SSH

Estas en el tema de Problema con telnet vía SSH en el foro de PHP en Foros del Web. Muy buenas, Estoy haciendo un programilla que necesita establecer una conexión SSH y posteriormente conectarse a otra IP vía telnet para comandear sobre ella. El ...
  #1 (permalink)  
Antiguo 07/07/2010, 06:30
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema con telnet vía SSH

Muy buenas,

Estoy haciendo un programilla que necesita establecer una conexión SSH y posteriormente conectarse a otra IP vía telnet para comandear sobre ella.
El tema es que consigo acceder correctamente a la primera máquina por SSH pero al poner el comando telnet <ip> me pide el USERNAME, se la envío y no la llega a ejecutar.
Le tendría que enviar los comandos de forma diferente, diferenciando entre comandos ssh y telnet??

Esta es una captura de lo que me saca el .php, es aquí donde no consigo pasar:

telnet 10.100.17.15 Trying 10.100.17.15... Connected to 10.100.17.15. Escape character is '^]'. ENTER USERNAME < 

Ahí le pongo el username pero no lo llega a ejecutar en el servidor...

Alguna idea??

Un saludo!!

Última edición por flipe_; 08/07/2010 a las 03:25
  #2 (permalink)  
Antiguo 07/07/2010, 07:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con telnet vía SSH

Postea lo que hayas hecho en el código de PHP.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/07/2010, 02:22
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con telnet vía SSH

Estes es el programa principal:

<?php

require_once ('ssh_in_php.php');

$host = "10.236.253.131";
$port = 22;
$user = "usuario";
$password = "password";

try {
$ssh = new SSH_in_PHP($host,$port);
$ssh->connect($user,$password);
$cycle = true;
while ($cycle) {
$data = $ssh->read();
echo $data;
if (ereg('\$',$data)) {
$cycle = false;
}
}

//YA ESTOY CONECTADO AL SSH
//A PARTIR DE AQUI EMPIEZA EL TELNET


echo ("<br>");
$ssh->write("telnet 10.200.47.2\n");
$cycle = true;
while ($cycle) {
$data = $ssh->read();
echo $data;
if (eregi('USERNAME',$data)) {
$cycle = false;
}
}
echo "<br>";
//Aquí le mando el usuario y es donde me da el problema porque no devuelve nada y no me da opción a meter la password, es como si no le llegase el comando, igual no detecta el retorno de carro...
$ssh->write("SYSTEM\n");
$cycle = true;
while ($cycle) {

$data = $ssh->read();

echo $data;

if (eregi('PASSWORD',$data)) {
$cycle = false;
}
}


$ssh->disconnect();
} catch (SSHException $e) {
echo "An Exception Occured: {$e->getMessage()} ({$e->getCode()})\n";
echo "Trace: \n";
echo print_r($e->getTrace());
echo "\n";
}
?>


Y esta es la función para conectar al ssh:

public function connect ($login,$passwd) {
/**
* open connection to host
*/
$this->fd = fsockopen($this->host,$this->port,$errno,$errstr);
if (!$this->fd) {
/**
* if connection was unsuccesfull, throw an exception
*/
throw new SSHException($errstr,$errno);
}

/**
* remember login and password
*/
$this->login = $login;
$this->passwd = $passwd;

/**
* create our packet forge
*/
$this->packet_forge = new SSH_packet_forge($this->fd);
$this->packet_disolver = new SSH_packet_disolver($this->fd);

/**
* get info about ssh on the other side
*/
$this->connect_get_peer_info();
$this->connect_send_our_info();
// $this->negotiate_algo();
// $this->kex();
$this->ex_pub_key();
try {
$this->login();
} catch (Exception $e) {
$this->disconnect();
throw new SSHException('Unable to authenticate - disconnecting!');
}
try {
$this->req_pty_and_shell();
} catch (Exception $e) {
$this->disconnect();
throw new SSHException($e->getMessage());
}
/**
* set nonblocking mode for unlimited reading
*/
$this->set_non_blocking();
}


Esta para mandar comandos:

public function write($data) {
if (!feof($this->fd)) {
if ($this->logged) {
$content = chr(SSH_CMSG_STDIN_DATA);
$content.=integer2dword(strlen($data));
$content.=$data;
$this->packet_forge->fill_data($content);
$this->packet_forge->build_packet();
} else {
throw new SSHException('You need to login first before reading and writing data');
}
} else {
throw new SSHException('Disconnected!');
}
}


Y esta para leerlos:

public function read($max_len = null) {
if (!feof($this->fd)) {
if ($this->logged) {
$this->read_update_inbuff();
if ($max_len != null && $max_len < strlen($this->inbuffer)) {
$ret = substr($this->inbuffer,0,$max_len);
$this->inbuffer = substr($this->inbuffer,$max_len,strlen($this->inbuffer)-$max_len);
} else {
$ret = $this->inbuffer;
$this->inbuffer = "";
}
return $ret;

} else {
throw new SSHException('You need to login first before reading and writing data');
}
} else {
throw new SSHException('Disconnected!');
}
}

private function read_update_inbuff() {
$this->packet_disolver->read_packet();
if (($this->packet_disolver->get_packet_type() == SSH_SMSG_STDOUT_DATA) ||
($this->packet_disolver->get_packet_type() == SSH_SMSG_STDOUT_DATA)) {
$newdata = $this->packet_disolver->get_data();
if (strlen($newdata) > 0) {
$str_len = dword2integer(substr($newdata,0,4));
$this->inbuffer .= substr($newdata,4,$str_len);
}
} else {

//throw new SSHException('Unknown data packet type: '.$this->packet_disolver->get_packet_type());
}
}



Y va todo bien hasta que conecto al telnet y me pide el usario y en vez de pedirme la contraseña no me devuelve nada...

Mucas gracias y un saludo!

Última edición por flipe_; 08/07/2010 a las 03:14
  #4 (permalink)  
Antiguo 21/07/2010, 07:56
 
Fecha de Ingreso: junio-2010
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Respuesta: Problema con SSH

Buenas, flipe_ y abimaelrc yo estoy desarrollando algo parecido a lo que ustedes estan conversando yo hago la conexión via ssh perfecta a un equipo de red remoto y me aparece la pantalla como si estuviera en el terminal, lo único es que hay me quedo porque no me quiere ejecutar ningun comando y no me trae tampoco la información, quisiera ejecutar varios comandos y traerme toda la informació a un archivo, espero sus respuesta que se que van a ser de mi satifacción Gracias

le pongo el código.
<?php
//función para conectar con el equipo via SSH
$con = ssh2_connect('xxx.xxx.xxx.xxx', 22);
echo $con;

// Autenticación del usuario al equipo.
$auth = ssh2_auth_password($con, 'usuario', 'clave');
echo "Estamos autenticado en el equipo...\n"; echo $auth;

$shell = ssh2_shell($con, 'vt102', null, 80, 40, SSH2_TERM_UNIT_CHARS);
$comand = 'enable';
fwrite($shell,'$comand');
sleep(1);
while($line = fgets($shell, 4096)){
flush();
echo $line."<br />";}
fclose($shell);

Etiquetas: ssh, telnet, vía
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:33.