PHP连接ssh服务器

首先需要安装php_ssh2扩展,这里就不再赘述了。

脚本实例:

$connection = ssh2_connect('127.0.0.1', 22);
ssh2_auth_password($connection, 'root', 'your password');


$stream = ssh2_exec($connection, "cd /; ls");
stream_set_blocking( $stream, true );  
$response = stream_get_contents($stream);
var_dump($response);

上面的脚本执行了两条命令(用逗号分隔):

1、cd /   切换到根目录 

2、ls  列出所有文件

测试环境为PHP7.1,执行结果如下:

为什么要使用 stream_set_blocking 呢?

PHP手册里这样写到:

该参数的设置将会影响到像 fgets() 和 fread() 这样的函数从资源流里读取数据。 在非阻塞模式下,调用 fgets() 总是会立即返回;而在阻塞模式下,将会一直等到从资源流里面获取到数据才能返回。

这样就很明确了,如果不设置成阻塞模式,php还没等到ssh服务器返回结果,脚本就执行完了,$response就会为空。

但是有些场景下,我们不关心返回值的时候,就可以设置成非阻塞模式了。

例如一些比较耗时的命令,如果是一直等待的话,也会导致一些不必要的麻烦。

转载于:https://my.oschina.net/crazymus/blog/3075039

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值