Page 1 of 1

Remote login with php ?!

Posted: Tue Jul 08, 2003 1:27 am
by Tubbietoeter
Hi guys,

I need your help!!

We got a network of several unix pcs.
I need to build a website, that gets username and password in a form, logs on to a remote unix computer and executes programs, does directory listings and so on.

Sounds quite easy, but how do I log on to that remote computer?! rlogin and all these commands can't be used with username and password together, they always prompt for the password. This is not really what I need.

Are there any PHP functions I could use?

Thanks!

Stefanie

Posted: Tue Jul 08, 2003 1:52 am
by []InTeR[]
i think u are looking for fsockopen

Posted: Tue Jul 08, 2003 3:12 am
by Tubbietoeter
Thanks, this function is just what I needed.


Do you have an example for this with a unix connection? I tried both, the hostname and the ip, but it doesn't establish a connection.

Posted: Tue Jul 08, 2003 4:09 am
by m3mn0n
I think what you need is a program like this. =)

But then again, good luck if you contiue to do it with php.

Posted: Tue Jul 08, 2003 4:38 am
by Tubbietoeter
Japp, that would be it ...

now it does establish the connection, when i use the telnet or rlogin port. but i can't send any commands. i believe i'm in direct connection with the port when i connect with port 513 (rlogin). but how do i open a terminat or how do i get a prompt?!

Posted: Tue Jul 08, 2003 7:48 am
by Tubbietoeter
if anyone cares: i found a wonderful telnet class that does (nearly exaclty) what i need.

Code: Select all

<? 
error_reporting(-1); 


class Telnet &#123; 
        /* (c) thies@thieso.net */ 


        var $sock = NULL; 


        function telnet($host,$port) &#123; 
        $this->sock = fsockopen($host,$port); 
                socket_set_timeout($this->sock,2,0); 
        &#125; 


    function close() &#123; 
        if ($this->sock) 
            fclose($this->sock); 
        $this->sock = NULL; 
        &#125; 


    function write($buffer) &#123; 
                $buffer = str_replace(chr(255),chr(255).chr(255),$buffer); 
        fwrite($this->sock,$buffer); 
        &#125; 


        function getc() &#123; 
                return fgetc($this->sock); 
        &#125; 


    function read_till($what) &#123; 
        $buf = ''; 
                while (1) &#123; 
                        $IAC = chr(255); 


                        $DONT = chr(254); 
                        $DO = chr(253); 


                        $WONT = chr(252); 
                        $WILL = chr(251); 


                        $theNULL = chr(0); 


                        $c = $this->getc(); 


                        if ($c === false) 
                          return $buf; 


                        if ($c == $theNULL) &#123; 
                                continue; 
                        &#125; 


                        if ($c == "\021") &#123; 
                                continue; 
                        &#125; 


                        if ($c != $IAC) &#123; 
                                $buf .= $c; 


                                if ($what == (substr($buf,strlen($buf)-strlen($what)))) &#123; 
                                        return $buf; 
                                &#125; else &#123; 
                                        continue; 
                                &#125; 
                        &#125; 


                        $c = $this->getc(); 


                        if ($c == $IAC) &#123; 
                                $buf .= $c; 
                        &#125; else if (($c == $DO) || ($c == $DONT)) &#123; 
                                $opt = $this->getc(); 
                        // echo "we wont ".ord($opt)."\n"; 
                                fwrite($this->sock,$IAC.$WONT.$opt); 
                        &#125; elseif (($c == $WILL) || ($c == $WONT)) &#123; 
                                $opt = $this->getc(); 
                        // echo "we dont ".ord($opt)."\n"; 
                                fwrite($this->sock,$IAC.$DONT.$opt); 
                        &#125; else &#123; 
                        // echo "where are we? c=".ord($c)."\n"; 
                        &#125; 
                &#125; 


        &#125; 
&#125; 


$tn = new telnet("123.123.123.123",23); 
echo $tn->read_till("ogin: "); 
$tn->write("username\r\n"); 
echo $tn->read_till("word: "); 
$tn->write("password\r\n"); 
echo $tn->read_till(":> "); 
$tn->write("ps\r\n"); 
echo $tn->read_till(":> "); 
echo $tn->close(); 
?>