Reply to problem with stream (telnet to router)

Your name:

Reply:


Posted by mario.lat_ on 05/16/06 16:09

Hallo to all,
I have write a little script for connecting to cisco router BUT I have a
problem: I have to send to router all the commands and then I have to read
the output.
If I send a command1 and read the output for command1 the script works
well,
If I sent command1 , I send command2 and then I read output for command1
and command2 it works well.
If i send command1 and then I read the output for command1 then send
command2 I can't read the output for the command 2.
Why?
How can I do?
Thank you in advance,
Mario.

P.S. following the script and the password



================================ SCRIPT ================================
<?
include "router.php";

$r=new Router();

$r->connect('router_address', $errno, $errstr);

$r->login($myLogin,$myPassword);


$o=$r->runCommand('sho ver'); //<==== works
echo '<pre>';
var_dump($o);
echo '</pre>';

$o=$r->runCommand('sho int descr'); //<==== don't works

$r->disconnect();

?>



==================================== Class ==========================================

<?

Class Router
{

function Router()
{
$this->connesso=0;
}

function connect($ServerAddress, $errno, $errstr, $cfgPort=23,$cfgTimeOut=10)
{
$this->stream= fsockopen($ServerAddress, $cfgPort, $errno, $errstr, $cfgTimeOut);
if(!$this->stream)
{
$this->connesso=0;
}
else
{
$this->connesso=1;
}
}

function disconnect()
{
if($this->connesso==0){exit();}
fwrite ($this->stream, "lo\r\n");
fclose($this->stream);
$this->connesso=0;
}

function login ($login,$password)
{
if($this->connesso==0){exit();}

if(strlen($login)>0)
{
fputs ($this->stream, "$login\r\n");
fputs ($this->stream, "$password\r\n");
}
else
{
fputs ($this->stream, "$password\r\n");
}

stream_set_timeout($this->stream, 2);

fputs ($this->stream,"terminal length 0\r\n");
/*
if I send a list of commands here it get the command and i see the output
in next read of strream, for example:
fputs ($this->stream,"sho int desc\r\n"); fputs
($this->stream,"sho ver\r\n");
....
*/

}


function runCommand($command,$logoutput=0,$ntimeout=10)
{

if(strlen($command)>0)
{
fputs ($this->stream, $command."\r\n");
}


$output=array();
while(!feof($this->stream))
{
$info = stream_get_meta_data($this->stream);
if ($info['timed_out'])
{
$ntimeout--;
usleep(100000);
}
else
{
$line=fread($this->stream,1000);
$output[]=$line;
}
if ($ntimeout==0)
{
break;
}
}
return $output;
}



}//class Router
?>

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация