美文网首页
自动重启交换机

自动重启交换机

作者: hel2o | 来源:发表于2016-08-09 17:27 被阅读0次
    <?php
    error_reporting(-1); 
    class Telnet {
    var $sock = NULL;  
    function telnet($host,$port) {
      $this->sock = fsockopen($host,$port);
      socket_set_timeout($this->sock,2,0);
     }
     
    function close() {
      if ($this->sock)  fclose($this->sock);
      $this->sock = NULL;
     }
      
    function write($buffer) {
      $buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
      fwrite($this->sock,$buffer);
     }
      
    function getc() {
      return fgetc($this->sock); 
     }
     
    function read_till($what) {
      $buf = '';
      while (1) {
       $IAC = chr(255);    
       $DONT = chr(254);
       $DO = chr(253);    
       $WONT = chr(252);
       $WILL = chr(251);    
       $theNULL = chr(0);  
       $c = $this->getc();    
       if ($c === false) return $buf;
       if ($c == $theNULL) {
        continue;
       }  
       if ($c == "1") {
        continue;
       } 
       if ($c != $IAC) {
        $buf .= $c;   
        if ($what == (substr($buf,strlen($buf)-strlen($what)))) {
         return $buf;
        }
        else {
         continue;
        }
       } 
       $c = $this->getc();    
       if ($c == $IAC) {
       $buf .= $c;
       }
       else if (($c == $DO) || ($c == $DONT)) {
        $opt = $this->getc();
        // echo "we wont ".ord($opt)."\n";
        fwrite($this->sock,$IAC.$WONT.$opt);
       }
       elseif (($c == $WILL) || ($c == $WONT)) {
        $opt = $this->getc();
        // echo "we dont ".ord($opt)."\n";
        fwrite($this->sock,$IAC.$DONT.$opt);
       }
       else {
        // echo "where are we? c=".ord($c)."\n";
       }
      }
     }
    }
    
    $ips = array('172.22.91.2','172.22.92.2','172.22.93.2');
    for ($i=0; $i < count($ips); $i++) { 
      $telnet = new telnet($ips[$i],23);
      $telnet->read_till("Username: ");
      $telnet->write("admin\r\n");
      $telnet->read_till("Password: ");
      $telnet->write("qifu@123\r\n");
      $telnet->write("\r\n");
      $telnet->read_till("> ");
      $telnet->write("reboot\r\n");
      sleep(10);
      $telnet->write("Y\r\n");
      $telnet->close(); 
    }```

    相关文章

      网友评论

          本文标题:自动重启交换机

          本文链接:https://www.haomeiwen.com/subject/gzsdsttx.html