Connexion a distance via le telnet en php

omarboutkhoum Messages postés 11 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 15 avril 2010 - 8 mai 2008 à 13:47
cs_gnarkk Messages postés 1 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 21 juillet 2008 - 21 juil. 2008 à 10:22
bonjour à tous,j'ai essayer la classe telnet suivant que j'ai trouve sur internet pour me connecter par telnet a un serveur unix,mais le probleme c'est que la commande emis ne s'execute pas,ce qui veut dire que le login et le mot de passe ne passent pas.
<?
error_reporting(-1);

class Telnet {
        /* (c) thies */

        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.1.85",23);
echo $tn->read_till("ogin:");
$tn->write("omar\r\n");
echo $tn->read_till("word:");
$tn->write("vide_123\r\n");
echo $tn->read_till("ar]$");
$tn->write("ls\r\n");
echo $tn->read_till("ar]$");
echo $tn->close();
?>
 
si quelqu'un avait une idée qu'il nous partage l'informatiuon?

1 réponse

cs_gnarkk Messages postés 1 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 21 juillet 2008
21 juil. 2008 à 10:22
Bonjour, si ce problème est toujours d'actualité, le soucis se situe sur la ligne 

   $tn = new telnet("192.168.1.85",23);

Il faut définir le port en texte: $tn = new telnet("192.168.1.85","23");
J'ai déjà eu ce pb mais il peut y avoir autre chose.

J'espère avoir pu aider ;)
Bonne journée
Rejoignez-nous