在Ubuntu下PHP的使用ssh2扩展开发web

在php下使用shell去开发web管理Ubuntu系统其实并不难,按照一般步骤就可以了,不过要注意2个坑

1.首先安装ssh扩展

apt-get install libssh2-1-dev libssh2-php

php -m |grep  ssh2 查看ssh2是否安装成功

service apache2 restart


2.编写代码测试

<?php
$connection = ssh2_connect( '127.0.0.1', 22 );
if ( ssh2_auth_password( $connection, 'newpo', '123456' ) ) {
	echo '登陆成功!<br>';
}
else{
	echo '登陆失败<br>';
	return;
}

?>

运行后输出以下内容,表示成功

登陆成功!


现在开始要注意下面2个坑:

1.ssh2扩展使用shell命令与用户权限有关:

通常用安装系统创建的用户使用shell命令,在ssh里面都会提示输密码,因为他还不是root权限;ssh2扩展执行没有报错误,但root权限的shell都无法使用

$connection = ssh2_connect( '127.0.0.1', 22 );
if ( ssh2_auth_password( $connection, 'newpo', '123456' ) ) {
	echo '登陆成功!<br>';
}
else{
	echo '登陆失败<br>';
	return;
}

$stream = ssh2_exec($connection, "service smbd restart");
stream_set_blocking( $stream, true ); 
echo "Output: " . stream_get_contents($stream); 

我之前想过在Service smbd restart先执行sudo -i,然后输入密码,但是发现这种方法也是不行,根本就不出现输入密码提示。

最后想到一种办法就是以root身份登录,ssh2扩展就不会受到权限限制,不过Ubuntu本身root是没有密码,需要手动把root密码加上,执行passwd root,输入2次密码即可,设置好后修改登录代码在执行出现下面即可

$connection = ssh2_connect( '127.0.0.1', 22 );
if ( ssh2_auth_password( $connection, 'root', '123456' ) ) {
	echo '登陆成功!<br>';
}
else{
	echo '登陆失败<br>';
	return;
}

$stream = ssh2_exec($connection, "service smbd restart");
stream_set_blocking( $stream, true ); 
echo "Output: " . stream_get_contents($stream); 

登陆成功!

Output: smbd stop/waiting smbd start/running, process 24734


2.如果解决ssh扩展获取不了刷屏命令(如top)的信息和执行shell独占web资源

用web控制Ubuntu,最常见的功能就是获取系统的cpu占有率,内存等等,就使用top命令

$stream = ssh2_exec($connection, "top");
stream_set_blocking( $stream, true ); 
echo "Output: " . stream_get_contents($stream); 
web打开什么信息都没有获取到(暂时不知道原因),网上提供了另一些方式取这信息

$stream = ssh2_exec($connection, "top -b -n 2 | grep -E '(Mem)|(Cpu)'");
stream_set_blocking( $stream, true ); 
echo "Output: " . stream_get_contents($stream); 
如果执行,可以获取信息,只是web会等待几秒才可以获取到信息

解决上面情况有2种方法:

1.使用多线程php扩展或第3方扩展swoole等,需要编译php,所以没有去尝试,有空试一下

2.系统里面写一个脚本不断获取cpu和内存的信息,ssh执行这个脚本即可


ssh2扩展开发api 参考文档http://php.net/manual/en/ref.ssh2.php

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值