使用 PHP 的远程登录连接

2022-08-30 23:34:09

我需要编写一个PHP脚本来远程登录到路由器,运行命令并获取结果。有谁知道PHP中的telnet连接库吗?

更新:这个要求(很明显)是很久以前的事了。最后,我不得不编写我自己需要的客户端库。这个库(以及更多模块)的代码是开源的,可以在github上找到。谢谢大家的回答。


答案 1

在Nicholas Hall的Github上有一个可爱的PHP telnet连接类:https://github.com/ngharo/Random-PHP-Classes/blob/master/Telnet.class.php


答案 2

使用stdin/stream_select和阻塞流可以为您提供20行telnet,如客户端

<?

$socket = fsockopen("192.168.52.1", 8000);

if(!$socket)return;
stream_set_blocking($socket, 0);
stream_set_blocking(STDIN, 0);

do {
  echo "$ ";
  $read   = array( $socket, STDIN); $write  = NULL; $except = NULL;

  if(!is_resource($socket)) return;
  $num_changed_streams = @stream_select($read, $write, $except, null);
  if(feof($socket)) return ;


  if($num_changed_streams  === 0) continue;
  if (false === $num_changed_streams) {
      /* Error handling */
    var_dump($read);
    echo "Continue\n";
    die;
  } elseif ($num_changed_streams > 0) {
    echo "\r";
    $data = fread($socket, 4096);
    if($data !== "") 
      echo "<<< $data";

    $data2 = fread(STDIN, 4096);

    if($data2 !== "") {
      echo ">>> $data2";
      fwrite($socket, trim($data2));
    }
  }

} while(true);

推荐