前几天看了网上一个牛人写的php 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 {?>
telnet
host:
user:
pass:
cmd:
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 '
[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 server\'s php version is too low for php telnet
'; break; }}}?>
我使用的是ubuntu 12.04的server版系统,自带的lamp。然后再执行该程序的时候,一直报
[php telnet] connect failed: login failed 的错误,
但是其他同事在其他电脑上面安装ubuntu 12.04,执行这套程序的时候却是正常工作的,弄了好几天,实在不知道是什么原因,恳请大牛解答,分数不多,就这么点了,多谢了!
回复讨论(解决方案) 其实我就是想在网页中嵌入一个 ssh或者telnet的远程登录程序。有其他的方法更好,多谢了
确认一下你和你同事的php版本
我觉得跟这个有关
\r换成\n,linux不认\r的