English 简体 繁體
  • 注册
  • 服务器技术 服务器技术 关注:1 内容:22

    在网页中执行shell脚本实现远程自动搭建

  • 查看作者
  • 打赏作者
    • 2
    • 服务器技术
    • 近期不少童靴倒腾在网站上面 直接一键搭建,基本都是利用php_ssh2组件 实现的,这里个大家分享下。

      首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装。window下则需要自行下载dll组件加载,具体方法自行搜索。

      安装完毕后就可以在PHP写执行shell脚本的程序了

      $ssh_user='root';        //登陆linux的ssh2用户名
      $ssh_pwd='********';      //登陆linux的密码
      $ssh_port='22';                          //端口号22
      $ssh_host='192.168.200.128';        //服务器IP地址
       
      //先测试拓展是否安装并开启
      if(!function_exists("ssh2_connect")){
              exit('SSH扩展没有安装或者没有安装成功');
          }
       
      //建立ssh2连接
      $ssh2 = ssh2_connect($ssh_host, $ssh_port);
          if(!$ssh2){
              exit('连接服务器失败');
          }else{
              echo '成功连接上了服务器';
          }
       
      //连接成功后进行密码验证,没验证无法进行其他操作。
      if(!ssh2_auth_password( $ssh2, $ssh_user,  $ssh_pwd )){
              return false;
          }

      成功连接,并且通过密码验证后就可以进行shell脚本的操作了,下面来一些简单的,例如建立一个文件夹。

      $e="mkdir -m 777 /var/www/html/35bokecom";   //shell脚本语句
      $stak=ssh2_exec($ssh2, $e);            //通过ssh2_exec执行语句

      命令执行后那想要知道执行结果呢,我们可以通过下面方式获取命令执行结果

      stream_set_blocking($stak, true);
      
      $output = stream_get_contents($stak);
      
      fclose($stak);

      此时,获取string类型的output。

      PS:如果你的服务器启用了sshkey那就使用下面方式的登陆

      $connection=ssh2_connect($ssh_host,$ssh_port);
      
      if(ssh2_auth_pubkey_file($connection, 'root', '/home/id_rsa.pub', '/home/id_rsa', 'secret'))
      
      {
      
          echo "Public Key Authentication Successful\n";
      
      } else {    
      
          die('Public Key Authentication Failed');
      
      }

      LV12
      vip6
      水晶之恋
      给力! [s-66]
      回复

      你这玩意完全架不起来啊

      回复

      请登录之后再进行评论

      登录
    • 任务
    • 管理
    • 回底部
    • 帖子间隔 侧栏位置: