在网页中执行shell脚本实现远程自动搭建-35博客圈 在网页中执行shell脚本实现远程自动搭建 - 35博客圈
服务器技术 服务器技术 关注:1 内容:12

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

  • 查看作者
  • 打赏作者
  • 2
  • 服务器技术
  • LV11
    vip3
    admin

    近期不少童靴倒腾在网站上面 直接一键搭建,基本都是利用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]

    想手机挣米刷视频,一年1W左右Q我:10102369

    回复

    你这玩意完全架不起来啊

    回复

    请登录之后再进行评论

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