PHP调用php_ssh实现远程登陆并执行shell脚本
- 18033
- Linux
- 0
- super_dodo
- 2013/09/11
简单看了一下Linux的shell脚本,对Shell有了简单的了解(刚入门),故而想实现一个小功能,就是通过php脚本WEB端去链接Linux服务器,并调用Linux上面的脚本,传入参数执行简单的脚本,返回值。
Step1.需要安装php_ssh2组件的支持,各版本不一,烦请各位找到自己版本兼容的组件php_ssh2.dll,拷贝到php组件目录ext下,修改php.ini文件打开php_ssh2.dll的支持。打开phpinfo页面查看该组件是否已开启正常(安装php组件会有新的篇幅介绍).
Step2.在Linux下编写shell脚本,执行并测试.(dodo写了个简单的输入两个数实现相乘并返回值,很简陋)
#!bin/bash #Program #DoDoBook V2013-08-19 sum=$(($1*$2)) echo -e "The result of $1 x $2 is ==> $sum"
Step3.真正的操作在PHP里面,直接贴代码,细细品味!!
<?php // 通过SSH登录远程主机,实现远程执行shell的功能。 header('Content-Type:text/html;charset=UTF-8'); define('SSH_USER', 'root'); //登陆LINUX的用户名 define('SSH_PWD', '******'); //登陆LINUX的密码 define('SSH_PORT', 22); //登陆LINUX的端口--SSH默认端口22 define('SSH_HOST', '192.168.2.41'); //登陆LINUX的IP地址(虚拟机) if(!function_exists("ssh2_connect")){ exit('SSH扩展没有安装或者没有安装成功'); } //使用SSH2进行连接 $ssh2 = ssh2_connect(SSH_HOST, SSH_PORT); if(!$ssh2){ exit('服务器连接不上???'); }else{ echo '已经成功连接上了服务器!!!<hr>'; } // 验证用户名和密码 ssh2_auth_password( $ssh2, SSH_USER, SSH_PWD ); if(@$_POST['submit']){ //表单提交了值 $a = $_POST['numA'] ? $_POST['numA'] : 4 ; $b = $_POST['numB'] ? $_POST['numB'] : 5 ; $command = "sh sh_sum.sh {$a} {$b};pwd;ls;"; }else{ //表单未提交值 $command = 'pwd;whoami;ls -l;'; } $stream = ssh2_exec($ssh2, $command); $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); //阻塞模式--延伸阅读:http://blog.csdn.net/linvo/article/details/5466046 //关于文件流的阻塞与非阻塞模式 stream_set_blocking($stream, true); stream_set_blocking($errorStream, true); //stream_get_contents类似于file_get_contents $cmd = stream_get_contents( $stream ); $errorInfo = stream_get_contents( $errorStream ); fclose( $stream ); fclose( $errorStream ); print_r( $cmd ); //执行脚本后的返回正确的信息 echo '<hr>'; var_dump( $errorInfo ); //返回脚本错误的信息 ?> <form action="#" method="post"> 数值1 <input type="text" name="numA"><br> 数值2 <input type="text" name="numB"><br> <input type="submit" name="submit" value="提交"> </form>
看明白的请举手,没看明白的再看几遍!!!
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例