Re: Has anyone tried to make telnet client with php?

From: Date: Fri, 11 May 2001 17:44:28 +0000
Subject: Re: Has anyone tried to make telnet client with php?
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-52492@lists.php.net to get a copy of this message
Thanks! This works. And this give me a clue how to work on it. Grishick. ----- Original Message ----- From: "Thies C. Arntzen" <thies@thieso.net> To: "Grishick" <grisha@kasenna.com> Cc: <php-general@lists.php.net> Sent: Friday, May 11, 2001 1:39 AM Subject: Re: [PHP] Has anyone tried to make telnet client with php? > On Thu, May 10, 2001 at 08:28:59PM -0700, Grishick wrote: > > Has anyone ever tried to make a telnet client with PHP? Any ideas how to > > make it? > > Tried to make it with socket, fsockopen, fputs, freads - does not work for > > telnet. > > Probably cURL will help? > > Deadly need an advice. > > Thanks. > > Grishick. > > grisha@kasenna.com > > the attached code was written in a hurry and does _no_ error > checking - but it does work (for me). > > <? > error_reporting(-1); > > class Telnet { > /* (c) thies@thieso.net */ > > var $sock = NULL; > > function telnet($host,$port) { > $this->sock = fsockopen($host,$port); > socket_set_timeout($this->sock,2,0); > } > > function close() { > if ($this->sock) > fclose($this->sock); > $this->sock = NULL; > } > > function write($buffer) { > $buffer = str_replace(chr(255),chr(255).chr(255),$buffer); > fwrite($this->sock,$buffer); > } > > function getc() { > return fgetc($this->sock); > } > > function read_till($what) { > $buf = ''; > while (1) { > $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) { > continue; > } > > if ($c == "\021") { > continue; > } > > if ($c != $IAC) { > $buf .= $c; > > if ($what == (substr($buf,strlen($buf)-strlen($what)))) { > return $buf; > } else > continue; > } > } > > $c = $this->getc(); > > if ($c == $IAC) { > $buf .= $c; > } else if (($c == $DO) || ($c == $DONT)) { > $opt = $this->getc(); > // echo "we wont ".ord($opt)."\n"; > fwrite($this->sock,$IAC.$WONT.$opt); > } elseif (($c == $WILL) || ($c == $WONT)) { > $opt = $this->getc(); > // echo "we dont ".ord($opt)."\n"; > fwrite($this->sock,$IAC.$DONT.$opt); > } else { > // echo "where are we? c=".ord($c)."\n"; > } > } > > } > } > > $tn = new telnet("192.168.255.100",23); > echo $tn->read_till("ogin: "); > $tn->write("admin\r\n"); > echo $tn->read_till("word: "); > $tn->write("thieso\r\n"); > echo $tn->read_till(":> "); > $tn->write("ps\r\n"); > echo $tn->read_till(":> "); > echo $tn->close(); > ?> >

« previous php.general (#52492) next »