【问题标题】:telnet connection using PHP使用 PHP 的 telnet 连接
【发布时间】:2010-10-28 16:01:23
【问题描述】:

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

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

【问题讨论】:

  • 为什么缺少用户名和密码选项???

标签: php telnet


【解决方案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);
    

    【讨论】:

      【解决方案3】:

      Pear::Net_Socket: http://pear.php.net/package/Net_Socket 为一个简单的 PHP telnet bot 或会话扩展这个类。

      【讨论】:

        【解决方案4】:
        <?php
        
        $file = 'somefile.txt';
        $remote_file = 'readme.txt';
        // set up basic connection
        $ftp_server = '127.0.0.1';
        $ftp_user_name = 'Till';
        $ftp_user_pass = 'Kcp05';
        $conn_id = ftp_connect($ftp_server);
        // login with username and password
        ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
        // upload a file
        ftp_nb_put($conn_id, $remote_file, $file, FTP_ASCII);
        // close the connection
        echo "$file sent to $ftp_server as $remote_file\n<br/>";
        ftp_close($conn_id);
        
        
        // finished copying the input.dat to the till now, just need to execute the print command.
        // That will copy somefile.txt in the same folder as this .php file to the ftp server root dir.
        
        
        $header1=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);
        
        $fp=pfsockopen("127.0.0.1",23);
        
        echo "Telnet session opening ...";
        
        sleep(4);
        
        fputs($fp,$header1); 
        sleep(4); 
        
        fputs($fp,"Till\r");
        sleep(2); 
        fputs($fp,"Kcp05\r"); 
        
        sleep(2);
        fputs($fp,"notepad\r"); 
        
        sleep(3);
        
        echo "Telnet session closing ...";
        
        fclose($fp);
        
        ?> 
        

        这对我有用。第一部分将ftp文件上传到服务器,第二部分将lo到telnet服务器,并执行一个可以使用您刚刚通过ftp上传的文件的程序。刚刚测试过了。

        【讨论】:

        猜你喜欢
        • 2016-08-01
        • 2015-09-30
        • 2021-02-18
        • 2011-02-23
        • 1970-01-01
        • 2018-12-25
        • 2011-12-07
        • 2017-07-26
        • 2018-03-26
        相关资源
        最近更新 更多