1.背景:最近做一个远程设备管理系统,要求输入远程设备的用户名和密码,登录到主机;登录成功之后可以输入shell命令,然后将执行结果返回
2.利用xampp快速搭建LAMP环境,之所以选用xampp,主要原因就是快!!
[root@iZ2zefbgycwbez4hr3fg6rZ local]# ./xampp-linux-x64-5.6.3-0-installer.run
3.安装ssh2的依赖
[root@iZ2zefbgycwbez4hr3fg6rZ local]# yum install libssh2 libssh2-devel gcc-c++
4.安装ssh2
首先下载ssh2
[root@iZ2zefbgycwbez4hr3fg6rZ local]# wget http://pecl.php.net/get/ssh2-0.12.tgz
解压
[root@iZ2zefbgycwbez4hr3fg6rZ local]# tar -zxvf ssh2-0.12.tgz
进入到ssh2目录
[root@iZ2zefbgycwbez4hr3fg6rZ local]# cd ssh2-0.12
执行phpize命令,提示要先安装autoconf
于是yum安装autoconf
[root@iZ2zefbgycwbez4hr3fg6rZ ssh2-0.12]# yum -y install autoconf
再次执行phpize,这次没有报错
[root@iZ2zefbgycwbez4hr3fg6rZ ssh2-0.12]# /opt/lampp/bin/phpize
[root@iZ2zefbgycwbez4hr3fg6rZ ssh2-0.12]# ./configure --with-php-config=/opt/lampp/bin/php-config LIBS=-ldl [root@iZwz9ccvnq6egujzif4sftZ ssh2-0.12]# make [root@iZwz9ccvnq6egujzif4sftZ ssh2-0.12]# make install
修改php.ini
[root@iZwz9ccvnq6egujzif4sftZ ssh2-0.12]# vim /opt/lampp/etc/php.ini
添加一行
extension=ssh2.so
5.测试
首先删除原先网站根目录下所有文件,并新建一个test.php
[root@iZ2zefbgycwbez4hr3fg6rZ ssh2-0.12]# cd /opt/lampp/htdocs/ [root@iZ2zefbgycwbez4hr3fg6rZ htdocs]# rm -rf * [root@iZ2zefbgycwbez4hr3fg6rZ htdocs]# vim test.php
test.php内容如下:
<?php $user="要连接的主机用户名"; $pass="要连接的主机密码"; $connection=ssh2_connect('要连的主机IP',22); ssh2_auth_password($connection,$user,$pass); $cmd="cd /usr;ls;"; $ret=ssh2_exec($connection,$cmd); stream_set_blocking($ret, true); echo (stream_get_contents($ret));
$cmd="cd /usr;ls";这行代码表示切换到/usr目录下并执行ls命令
分号将多条shell命令分隔开
浏览器地址访问 ip/test.php
发现将在远程主机上的shell命令已经执行成功!
如果你遇到什么问题或者对本篇文章有什么建议,,欢迎添加本人qq1822581649,,一同探讨技术问题!