【173免费下载论坛】

 找回密码
 注册

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

[复制链接]
向往草原403  发表于 2023-11-10 16:33:35 | 显示全部楼层 |阅读模式
近期不少童靴倒腾在网站上面 直接一键搭建,基本都是利用php_ssh2组件 实现的,这里个大家分享下。
首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装。window下则需要自行下载dll组件加载,具体方法自行搜索。

安装完毕后就可以在PHP写执行shell脚本的程序了
  1. $ssh_user='root';        //登陆linux的ssh2用户名
  2. $ssh_pwd='********';      //登陆linux的密码
  3. $ssh_port='22';                          //端口号22
  4. $ssh_host='192.168.200.128';        //服务器IP地址
  5.   
  6. //先测试拓展是否安装并开启
  7. if(!function_exists("ssh2_connect")){
  8.         exit('SSH扩展没有安装或者没有安装成功');
  9.     }
  10.   
  11. //建立ssh2连接
  12. $ssh2 = ssh2_connect($ssh_host, $ssh_port);
  13.     if(!$ssh2){
  14.         exit('连接服务器失败');
  15.     }else{
  16.         echo '成功连接上了服务器';
  17.     }
  18.   
  19. //连接成功后进行密码验证,没验证无法进行其他操作。
  20. if(!ssh2_auth_password( $ssh2, $ssh_user,  $ssh_pwd )){
  21.         return false;
  22.     }
复制代码
成功连接,并且通过密码验证后就可以进行shell脚本的操作了,下面来一些简单的,例如建立一个文件夹。
  1. $e="mkdir -m 777 /var/www/html/35bokecom";   //shell脚本语句
  2. $stak=ssh2_exec($ssh2, $e);            //通过ssh2_exec执行语句
复制代码
命令执行后那想要知道执行结果呢,我们可以通过下面方式获取命令执行结果
  1. stream_set_blocking($stak, true);

  2. $output = stream_get_contents($stak);

  3. fclose($stak);
复制代码
此时,获取string类型的output。

PS:如果你的服务器启用了sshkey那就使用下面方式的登陆
  1. $connection=ssh2_connect($ssh_host,$ssh_port);

  2. if(ssh2_auth_pubkey_file($connection, 'root', '/home/id_rsa.pub', '/home/id_rsa', 'secret'))

  3. {

  4.     echo "Public Key Authentication Successful\n";

  5. } else {   

  6.     die('Public Key Authentication Failed');

  7. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|【173免费下载论坛】 ( 桂ICP备2022010778号-6 )

GMT+8, 2025-8-14 03:03 , Processed in 0.104399 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2012 Comsenz Inc. Template by 600xin

返回顶部