Laravel Collective SSH结果

时间:2017-12-14 01:03:17

标签: laravel laravel-5 laravelcollective

我在Laravel中执行SSH,我连接到另一台服务器并下载文件。我正在使用Laravel Collective https://laravelcollective.com/docs/5.4/ssh

所以,建议的方法是这样的

$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path);

if($result) {
   return $path;
} else {
    return 401;
}

现在成功下载文件并将其移至本地服务器。但是,我总是返回401,因为$ result似乎是Null。

我找不到或从SSH获得结果。我也试过

$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path, function($line){
    dd( $line.PHP_EOL);
});

但是这永远不会进入内在的功能。

有什么方法可以从SSH获得结果吗?如果出现错误,我只想正确处理它。

由于

2 个答案:

答案 0 :(得分:0)

您可以检查文件是否以其他方式成功下载,而不是依赖于$result给您true / false /错误:

// download the file
$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path);

// see if downloaded file exists
if ( file_exists($path) ) {
  return $path;
} else {
  return 401;
}

答案 1 :(得分:0)

u还需要在get和put方法中传递类似的文件名:

$fileName = "example.txt";

$get = \SSH::into('scripts')->get('/remote/somelocation/'.$fileName, base_path($fileName));

设置方法

$set = \SSH::into('scripts')->set(base_path($fileName),'/remote/location/'.$fileName);

在列表中

$command = SSH::into('scripts')->run(['ls -lsa'],function($output) {
    dd($output);
});