下面是一个将模型用作“密钥”时使用上述包的ssh示例:
忽略包添加的服务提供程序:
"extra": {
"laravel": {
"dont-discover": [
"Collective\\Remote\\RemoteServiceProvider"
]
}
},
添加一个
getConfig()
包含ssh详细信息的模型的方法:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Connection extends Model
{
public function getConfig(): array {
return [
'host' => '',
'username' => '',
'password' => '',
'key' => '',
'keytext' => $this->key,
'keyphrase' => '',
'agent' => '',
'timeout' => 10,
];
}
}
创建一个名为
App\Overrides\RemoteManager
:
<?php
namespace App\Overrides;
class RemoteManager extends \Collective\Remote\RemoteManager
{
protected function getConfig($model)
{
return $model->getConfig();
}
}
创建新的服务提供商:
<?php
namespace App\Providers;
use App\Overrides\RemoteManager;
class RemoteServiceProvider extends \Collective\Remote\RemoteServiceProvider
{
public function register()
{
$this->app->singleton('remote', function ($app) {
return new RemoteManager($app);
});
}
}
添加
\App\Providers\RemoteServiceProvider::class,
到
config/app.php
在“套餐服务提供商”下
这将如何工作的示例代码:
$connection = \App\Models\Connection::find(1);
SSH::into($connection)->run([
'echo "Hello world!"',
]);