Re: Howto send command over ssh using sockets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Instead of ssh, you could use telnet to connect to the Cisco router
(which incidentally runs on port 23, but is likely to be disabled on
the cisco router, unless you have a pre-SSH capable IOS running on it
(like my old cisco crap :( ) ), because i strongly doubt you have
written or are willing to write your own encryption libraries for this
project, you might also want to read IETF RFC 854
[http://tools.ietf.org/html/rfc854] about the telnet protocol, as you
are writing your own client, and not using a pre-made one, judging
from your script.
Or if you do not like the idea of sending clear-text passwords to the
router, you might want to learn about proc_open() (or popen()) and use
the native ssh utility that most likely is present on the server,
taking great care to READ THE MANUAL for the ssh command, because you
most likely do _not_ want it to spit out ANSI-escapes to you script.

Kind regards from
Johan Lidström
Örnsköldsvik, Sweden
irc://irc.freenode.net/Dr_Kao
frozendude+phpdev@xxxxxxxxx

P.S. currently borrowing a friends account.

2010/4/5 Radek Krejča <radek.krejca@xxxxxxxxxx>:
> Hello,
>
> I am trying send command to remote host over ssh with sockets. But I need to set up username/password. I am trying to modify this script (from www.php.net - function fsockopen), but I dont know, where set username/password because I got this message:
> Bad protocol version identification 'password' from ip
>
> Library ssh2 is not currentu userfull for me, because I am not admin of server.
>
> Thank you
> Radek
>
>
> <?php
> /************************************************************
> * Author: Richard Lajaunie
> * Mail : richard.lajaunie@xxxxxxxxxxxxxxxx
> *
> * subject : this script retreive all mac-addresses on all ports
> * of a Cisco 3548 Switch by a telnet connection
> *
> * base on the script by: xbensemhoun at t-systems dot fr on the same page
> **************************************************************/
>
> if ( array_key_exists(1, $argv) ){
>   $cfgServer = $argv[1];
> }else{
>   echo "ex: 'php test.php 10.0.0.0' \n";
>   exit;
> }
>
> $cfgPort    = 23;                //port, 22 if SSH
> $cfgTimeOut = 10;
>
> $usenet = fsockopen($cfgServer, $cfgPort, $errno, $errstr), $cfgTimeOut);
>
> if(!$usenet){
>       echo "Connexion failed\n";
>       exit();
> }else{
>       echo "Connected\n";
>       fputs ($usenet, "password\r\n");
>       fputs ($usenet, "en\r\n");
>       fputs ($usenet, "password\r\n");
>       fputs ($usenet, "sh mac-address-table\r\n");
>       fputs ($usenet, " "); // this space bar is this for long output
>
>       // this skip non essential text
>       $j = 0;
>       while ($j<16){
>       fgets($usenet, 128);
>       $j++;
>       }
>   stream_set_timeout($usenet, 2); // set the timeout for the fgets
>   $j = 0;
>       while (!feof($usenet)){
>       $ret = fgets($usenet, 128);
>       $ret = str_replace("\r", '', $ret);
>       $ret = str_replace("\n", "", $ret);
>       if  (ereg("FastEthernet", $ret)){
>           echo "$ret \n";
>       }
>       if (ereg('--More--', $ret) ){
>           fputs ($usenet, " "); // for following page
>       }
>       $info = stream_get_meta_data($usenet);
>       if ($info['timed_out']) {
>           $j++;
>       }
>       if ($j >2){
>           fputs ($usenet, "lo");
>           break;
>       }
>   }
> }
> echo "End.\r\n";
> ?>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux