Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hugo Duca

PHP Telnet

Recommended Posts

Pessoal, preciso fazer uma conexao telnet, atraves do php, achei uma classe, q supostamente faz isso, mas não está funcionando de jeito nenhum, por favor caso alguem saiba como fazer uma conexao telnet atraves do php ajude....vou postar a classe q uso ...desde já obrigado

<?php
/*
PHPTelnet 1.1
by Antone Roundy
adapted from code found on the PHP website
public domain
*/

class PHPTelnet {
	var $show_connect_error=1;

	var $use_usleep=0;	// change to 1 for faster execution
		// don't change to 1 on Windows servers unless you have PHP 5
	var $sleeptime=125000;
	var $loginsleeptime=1000000;

	var $fp=NULL;
	var $loginprompt;
	
	var $conn1;
	var $conn2;
	
	/*
	0 = success
	1 = couldn't open network connection
	2 = unknown host
	3 = login failed
	4 = PHP version too low
	*/
	function Connect($server,$user,$pass) {
		$rv=0;
		$vers=explode('.',PHP_VERSION);
		$needvers=array(4,3,0);
		$j=count($vers);
		$k=count($needvers);
		if ($k<$j) $j=$k;
		for ($i=0;$i<$j;$i++) {
			if (($vers[$i]+0)>$needvers[$i]) break;
			if (($vers[$i]+0)<$needvers[$i]) {
				$this->ConnectError(4);
				return 4;
			}
		}
		
		$this->Disconnect();
		
		if (strlen($server)) {
			if (preg_match('/[^0-9.]/',$server)) {
				$ip=gethostbyname($server);
				if ($ip==$server) {
					$ip='';
					$rv=2;
				}
			} else $ip=$server;
		} else $ip='127.0.0.1';
		
		if (strlen($ip)) {
			if ($this->fp=fsockopen($ip,5038)) {
				fputs($this->fp,$this->conn1);
				$this->Sleep();
				
				fputs($this->fp,$this->conn2);
				$this->Sleep();
				$this->GetResponse($r);
				$r=explode("\n",$r);
				$this->loginprompt=$r[count($r)-1];

				fputs($this->fp,"$user\r");
				$this->Sleep();

				fputs($this->fp,"$pass\r");
				if ($this->use_usleep) usleep($this->loginsleeptime);
				else sleep(1);
				$this->GetResponse($r);
				$r=explode("\n",$r);
				if (($r[count($r)-1]=='')||($this->loginprompt==$r[count($r)-1])) {
					$rv=3;
					$this->Disconnect();
				}
			} else $rv=1;
		}
		
		if ($rv) $this->ConnectError($rv);
		return $rv;
	}
	
	function Disconnect($exit=1) {
		if ($this->fp) {
			if ($exit) $this->DoCommand('exit',$junk);
			fclose($this->fp);
			$this->fp=NULL;
		}
	}

	function DoCommand($c,&$r) {
		if ($this->fp) {
			fputs($this->fp,"$c\r");
			$this->Sleep();
			$this->GetResponse($r);
			$r=preg_replace("/^.*?\n(.*)\n[^\n]*$/","$1",$r);
		}
		return $this->fp?1:0;
	}
	
	function GetResponse(&$r) {
		$r='';
		do { 
			$r.=fread($this->fp,1000);
			$s=socket_get_status($this->fp);
		} while ($s['unread_bytes']);
	}
	
	function Sleep() {
		if ($this->use_usleep) usleep($this->sleeptime);
		else sleep(1);
	}
	
	function PHPTelnet() {
		$this->conn1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).
			chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).
			chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).
			chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).
			chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).
			chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).
			chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).
			chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).
			chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).
			chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).
			chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).
			chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);
		$this->conn2=chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).
			chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);
	}
	
	function ConnectError($num) {
		if ($this->show_connect_error) switch ($num) {
		case 1: echo '<br />[PHP Telnet] <a href="http://www.geckotribe.com/php-telnet/errors/fsockopen.php">Connect failed: Unable to open network connection</a><br />'; break;
		case 2: echo '<br />[PHP Telnet] <a href="http://www.geckotribe.com/php-telnet/errors/unknown-host.php">Connect failed: Unknown host</a><br />'; break;
		case 3: echo '<br />[PHP Telnet] <a href="http://www.geckotribe.com/php-telnet/errors/login.php">Connect failed: Login failed</a><br />'; break;
		case 4: echo '<br />[PHP Telnet] <a href="http://www.geckotribe.com/php-telnet/errors/php-version.php">Connect failed: Your server\'s PHP version is too low for PHP Telnet</a><br />'; break;
		}
	}
}
?>




aki é o exemplo

<?php
require_once "PHPTelnet.php";

$telnet = new PHPTelnet();

// if the first argument to Connect is blank,
// PHPTelnet will connect to the local host via 127.0.0.1
$result = $telnet->Connect('xxx.xxx.x.xxx','xxx','xxxx');

if ($result == 0) {
$telnet->DoCommand('ListCommands', $result);
// NOTE: $result may contain newlines
echo $result;
//$telnet->DoCommand('ListCommands', $result);
//echo $result;
// say Disconnect(0); to break the connection without explicitly logging out
$telnet->Disconnect();
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explique melhor o que você quer, o que espera que aconteça.

Não está funcionando porque ? Dá erro ? se sim, qual erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Explique melhor o que você quer, o que espera que aconteça.

Não está funcionando porque ? Dá erro ? se sim, qual erro ?

Da erro no login, mas eu estou colocando o nome certo no login, e na senha tambem, pois estou conseguindo acessar telnet pelo DOS so nao consigo pelo php....se souber de algum outro script ou classe q faça isso tambem ajudaria, obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

A exibição de erros está habilitada, e está configurado para exibir todos os erros ?

Como você sabe que dá erro no login ? Posta a mensagem de erro que dá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A exibição de erros está habilitada, e está configurado para exibir todos os erros ?

Como você sabe que dá erro no login ? Posta a mensagem de erro que dá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja estes items aqui:

A exibição de erros está habilitada, e está configurado para exibir todos os erros ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que o erro reside no fato do host não ter sido encontrado, ou o mesmo não possuir o Telnet ativo (ou disponível pra conexão remota).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o host que você está tentando conectar ? qual o host que está o PHP ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o host que você está tentando conectar ? qual o host que está o PHP ?

estou tentando me conectar a um servidor, onde esta rodando o asterisk, e meu codigo em php esta rodando em outro servidor, os dois servidores sao linux, mas acredito eu q isso nao faz diferença

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a versão dessa classe você está usando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal resolvi o meu problema com telnet parcialmente....olha o q consegui fazer

 

<?
$fp = fsockopen("XXX.XXX.X.XXX", 23);
if(!$fp) 
{
 	echo "Falha ao se conectar ao servidor.";
} 
else
{
	$buf=fgets($fp);
 	echo $buf."<br>";
	
	fwrite($fp, "Action: Login\r\n");
	fwrite($fp, "UserName: digite o login\r\n");
	fwrite($fp, "Secret: digite a senha\r\n\r\n");
	
	$teste=fgets($fp);
	
	echo $teste."<br>";
	
 	fwrite($fp, "show ip bgp");
  
while($buf=fgets($fp))
{
	echo $buf."<br>";
}
	
} 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou usando da seguinte forma

 

<?php

 

require_once "PHPTelnet.php";

 

$telnet = new PHPTelnet();

 

 

$result = $telnet->Connect('smtp.gmail.com', 'email@gmail.com', 'senha');

/*

$telnet->DoCommand('helo', $result);

echo $result;

*/

$telnet->Disconnect();

 

?>

 

mais não esta funcionando, aparece o erro,

 Connect failed: Login failed, mais meu usuario e senha estão corretos, estou usando a porta 465 ,

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Obrigado pela resposta, chamei o arquivo de PHPTelnet.php

 

estou usando da seguinte maneira

 

<?php

 

require_once "PHPTelnet.php";

 

$telnet = new Telnet();

 

$result = $telnet->Connect('127.0.0.1', 'root', '');

 

echo $result ;

 

 

switch ($result) {

case 0:

$telnet->exec('helo', $result);

 

echo $result;

 

$telnet->Disconnect();

break;

case 1:

echo '

 Connect failed: <a href="http://www.geckotribe.com/php-telnet/errors/fsockopen.php">Unable to open network connection</a>';

break;

case 2:

echo '[php Telnet] Connect failed: Unknown host';

break;

case 3:

echo '[php Telnet] Connect failed: Login failed';

break;

case 4:

echo '[php Telnet] Connect failed: Your PHP version does not support PHP Telnet';

break;

}

 

$telnet->Disconnect();

?>

 

linha 46 da classe public function __construct($host = '127.0.0.1', $port = '80', $timeout = 10){

 

mais ta caindo no case 1 Unable to open network connection, tentei também com smtp.gmail.com na porta 465 e

meu usuario e senha do gmail mais deu no mesmo

 

Obrigado por responder,

baixei a classe em http://sourceforge.net/projects/php-ssh2/?source=dlp

 

como posso enviar comando telnet com essa classe?

 

não estou conseguindo usar essa classe, ta dando erro

na função ssh2_connect,

não estou achando muito material relevante a respeito

 

Obrigado pela resposta, chamei o arquivo de PHPTelnet.php

 

estou usando da seguinte maneira

 

<?php

 

require_once "PHPTelnet.php";

 

$telnet = new Telnet();

 

$result = $telnet->Connect('127.0.0.1', 'root', '');

 

echo $result ;

 

 

switch ($result) {

case 0:

$telnet->exec('helo', $result);

 

echo $result;

 

$telnet->Disconnect();

break;

case 1:

echo '[php Telnet] Connect failed: <a href="http://www.geckotribe.com/php-telnet/errors/fsockopen.php">Unable to open network connection</a>';

break;

case 2:

echo '[php Telnet] Connect failed: Unknown host';

break;

case 3:

echo '[php Telnet] Connect failed: Login failed';

break;

case 4:

echo '[php Telnet] Connect failed: Your PHP version does not support PHP Telnet';

break;

}

 

$telnet->Disconnect();

?>

 

linha 46 da classe public function __construct($host = '127.0.0.1', $port = '80', $timeout = 10){

 

mais ta caindo no case 1 Unable to open network connection, tentei também com smtp.gmail.com na porta 465 e

meu usuario e senha do gmail mais deu no mesmo

 

 

 

não estou conseguindo usar essa classe, ta dando erro

na função ssh2_connect,

não estou achando muito material relevante a respeito

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.