没有合适的资源?快使用搜索试试~ 我知道了~
PHP docker容器内调取宿主机SHELL命令行
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
11 下载量 91 浏览量
2021-01-09
07:23:23
上传
评论
收藏 48KB PDF 举报
温馨提示
试读
2页
最近公司有一个需求,需要调取同事开发的shell脚本,传入shell所需的值并唤起shell,获得shell执行的结果展示。 shell在测试服务器的宿主机上,PHP是放到docker容器内的,这就让人很无奈了,秉着办法总比困难多的思想,整理出了几个思路。 1:在宿主机上部署PHP环境,这样PHP和shell不存在跨容器的情况,但是这样就破坏掉先有的docker结构,不推荐; 2:如果mysql装在宿主机上的话,用mysql做触发器,把命令行当成一个字段存入,插入一条记录的时候,直接用触发器执行这条命令行,这种方法局限性很大,还得是mysql在宿主机上,不推荐; 3:docker容器内做ssh
资源详情
资源评论
资源推荐
PHP docker容器内调取宿主机容器内调取宿主机SHELL命令行命令行
最近公司有一个需求,需要调取同事开发的shell脚本,传入shell所需的值并唤起shell,获得shell执行的结果展示。
shell在测试服务器的宿主机上,PHP是放到docker容器内的,这就让人很无奈了,秉着办法总比困难多的思想,整理出了几
个思路。
1:在宿主机上部署PHP环境,这样PHP和shell不存在跨容器的情况,但是这样就破坏掉先有的docker结构,不推荐;
2:如果mysql装在宿主机上的话,用mysql做触发器,把命令行当成一个字段存入,插入一条记录的时候,直接用触发器执行
这条命令行,这种方法局限性很大,还得是mysql在宿主机上,不推荐;
3:docker容器内做ssh登陆操作,直接登陆到宿主机,这样可以直接在宿主机上调取shell,暂时算最合适的处理方法。
过程:首先要在docker内安装libssh2和ssh2 PHP扩展
安装libssh2时报了一个错,少了几个依赖库,忘记截图了,大概apt-get install zlib-devel openssl-devel libssh2-devel php-
devel,
提示少哪个自行安装一下:
cd tmp
wget https://www.libssh2.org/download/libssh2-1.8.0.tar.gz
tar zxvf libssh2-1.8.0.tar.gz
cd libssh2-1.8.0
./configure
make && make install
libssh2安装成功之后接下来是ssh2,百度基本都是复制说一定要下载1.0版本,但是我试了一下,报错!现在必须要求是最新
版本:
cd tmp
wget https://pecl.php.net/get/ssh2-1.2.tgz
tar zxvf ssh2-1.2.tgz
mv /tmp/ssh2-1.2.tgz /usr/src/php/ext/ssh2
docker-php-ext-install ssh2
ssh2安装完成,重启docker容器 docker restart 容器名
打开phpinfo()可以看到ssh2安装成功
接下来是PHP使用SSH2调用宿主机shell
$host=’127.0.0.1′; //服务器的ip
$user=’root’; //用户名
$passwd=’root’; //密码
// 链接远程服务器
$connection = ssh2_connect($host, 22);
if (!$connection) die(‘connection to ‘.$host.’:22 failed’);
// 获取验证方式并打印
$auth_methods = ssh2_auth_none($connection, $user);
if (in_array(‘password’, $auth_methods ))
{
// 通过password方式登录远程服务器
if (ssh2_auth_password($connection, $user, $passwd)){
$stream = ssh2_exec($connection, “ls”); // 一条一条地执行linux命令
stream_set_blocking($stream, true); // 获取执行pwd后的内容
if ($stream === FALSE)die(“pwd failed”);
echo stream_get_contents($stream).’
‘;
}else{
die( $user.’ login Failed
weixin_38567873
- 粉丝: 5
- 资源: 887
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0