首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

()一个php telnet的有关问题

2013-01-23 
(在线等)求助一个php telnet的问题前几天看了网上一个牛人写的php telnet的源码?php/*** name:薛如飞* qq

(在线等)求助一个php telnet的问题
前几天看了网上一个牛人写的php telnet的源码


<?php
/**
* name:薛如飞
* qq:6706250
* e-mail:xuerufei@163.com
* blog:<a href="http://hi.baidu.com/" target="_blank">http://hi.baidu.com/</a>飞云盖天
* date:08.08.28
**/
if (isset($_POST['host']) and isset($_POST['user']))
  {
    $host= $_POST['host'];
    $user= $_POST['user'];
    $pass= $_POST['pass'];
    $cmd= stripslashes($_POST['cmd']);
require_once "phptelnet.php";
$telnet = new PHPTelnet();
$telnet->show_connect_error=0;
$result = $telnet->Connect($host,$user,$pass);
switch ($result)
   {
  case 0:
  $telnet->DoCommand($cmd, $result);
  echo $result;
  $telnet->Disconnect();
  break;
  case 1:
  echo '[PHP Telnet] Connect failed: Unable to open network connection';
  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;
   }
  }
else
  {
?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<form action="index.php" method="post" name="form0" id="form0">
   <p>   </p>
   <p align="center" >Telnet</p>
   <table width="200" border="0" align="center">
  <tr>
    <td width="81" height="18">host:</td>
    <td width="109"><input name="host" type="text" size="16" value="" /></td>
  </tr>
  <tr>
    <td width="81" height="18">user:</td>
    <td width="109"><input name="user" type="text" size="16" value="" /></td>
  </tr>
  <tr>
    <td width="81" height="18">pass:</td>
    <td width="109"><input name="pass" type="text" size="16" value="" /></td>
  </tr>
  <tr>
    <td width="81" height="18">cmd:</td>
    <td width="109">
          <textarea rows="6" name="cmd" cols="16"></textarea></td>
  </tr>
  <tr>
    <td> </td>
    <td><input type="submit" name="Submit" value="提交" /></td>
  </tr>
   </table>
   <p> </p>
</form>
<?php
   }
?>
 
<?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,23)) {
    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="<a href="http://www.geckotribe.com/php-telnet/errors/fsockopen.php" target="_blank">http://www.geckotribe.com/php-telnet/errors/fsockopen.php">Connect</a> failed: Unable to open network connection</a><br />'; break;
  case 2: echo '<br />[PHP Telnet] <a href="<a href="http://www.geckotribe.com/php-telnet/errors/unknown-host.php" target="_blank">http://www.geckotribe.com/php-telnet/errors/unknown-host.php">Connect</a> failed: Unknown host</a><br />'; break;
  case 3: echo '<br />[PHP Telnet] <a href="<a href="http://www.geckotribe.com/php-telnet/errors/login.php" target="_blank">http://www.geckotribe.com/php-telnet/errors/login.php">Connect</a> failed: Login failed</a><br />'; break;
  case 4: echo '<br />[PHP Telnet] <a href="<a href="http://www.geckotribe.com/php-telnet/errors/php-version.php" target="_blank">http://www.geckotribe.com/php-telnet/errors/php-version.php">Connect</a> failed: Your server\'s PHP version is too low for PHP Telnet</a><br />'; break;
  }
}
}
?>



我使用的是ubuntu 12.04的server版系统,自带的LAMP。然后再执行该程序的时候,一直报
[PHP Telnet] Connect failed: Login failed 的错误,
但是其他同事在其他电脑上面安装ubuntu 12.04,执行这套程序的时候却是正常工作的,弄了好几天,实在不知道是什么原因,恳请大牛解答,分数不多,就这么点了,多谢了!
[解决办法]
确认一下你和你同事的php版本


我觉得跟这个有关

热点排行