当前位置: 首页 > 知识库问答 >
问题:

如何使用Laravel特使运行SSH命令

越麒
2023-03-14

我想在Linux上运行SSH命令来启动/停止带有Laravel特使的服务器。但是,对于SSH::into()的语法,我得到了一个错误。我不知道该怎么办完全卡住了。我们需要一种方法来解决这个问题,让它发挥作用。特使设置并与“php artisan”命令配合使用:

// Envoy.blade.php
@setup
     $connection = ['web' => $user.'@'.$host.' -p '. '22'];
@endsetup
@servers($connection)
@task('foo', ['on' => 'web'])
     php artisan
@endtask

命令:特使运行foo--user=root--host=94.130.97.242

这就是我为SSH::into()启动/停止服务器所做的。

// Envoy.blade.php
@include('vendor/autoload.php')
     $connection = ['web' => $user.'@'.$host.' -p '. '22'];
     $target = [
          'host' => $host,
          'username' => $user,
          'password' => $password,
          'timeout' => 10,
     ];

     Config::set('remote.connections.runtime.host', $target['host']);
     Config::set('remote.connections.runtime.port', '22');
     Config::set('remote.connections.runtime.username', $target['username']);
     Config::set('remote.connections.runtime.password', $target['password']);

@endsetup
@servers($connection)
@task('foo', ['on' => 'web'])
     SSH::into('runtime')->run(array(
          'docker stop ' . $server
     ));
@endtask

命令:特使运行foo--user=root--host=94.130.97.242口令--server=22运行后,它会给出一个错误语法错误意外令牌'运行时'。我需要你的帮助。谢谢你!

共有1个答案

郎鸿
2023-03-14

下面是Symfony进程的一种方法(在Laravel中本机可用)

php prettyprint-override">use Symfony\Component\Process\Process;

function start(string $user, string $host)
{
    $sshSetting = sprintf('ssh://%s@%s', $user, $host);

    $process = new Process([
        'docker', '-H', $sshSetting, 'start'
    ]);

    $process->run(); //synchronous
    $process->mustRun(); //synchronous, throw an exception whenever fail
    $process->start(); //asynchronous
}

这里是官方留档https://symfony.com/doc/current/components/process.html#running-processes-asynchronously

 类似资料:
  • 问题内容: Scenerio:我想通过ssh从Java程序在远程机器上运行命令(我在开发机器上使用OpenSSH)。我也想通过传递密码来建立ssh连接,而不是像使用“期望”那样设置密钥。 问题:尝试执行“期望”之类的密码登录时,使用ProcessBuilder创建的流程似乎看不到密码提示。当运行常规的非ssh命令(例如’ls’)时,我可以获取流并与它们进行交互。我将标准错误和标准输出合并为一个流因

  • 我尝试在java中执行以下步骤 1。ssh到远程机器(使用jsch完成),如下所示。 无法继续下一步 我尝试了以下步骤来实现第3步和第4步。尝试运行时。getRuntime()。执行官(“docker exec

  • 问题内容: 我正在编写一个脚本来自动化Python中的某些命令行命令。目前,我正在打电话: 但是我需要在远程计算机上运行一些命令。手动地,我将使用ssh登录,然后运行命令。我将如何在Python中自动执行此操作?我需要使用(已知)密码登录到远程计算机,所以我不能只使用,我想知道是否应该使用一个模块? 问题答案:

  • 我试图使用提供的ssh密钥在远程服务器上运行我的Anable剧本。 我已将以下配置添加到我的清单文件: 我在我的剧本中引用了以下内容: 我使用以下命令运行脚本: 我得到的错误如下: 致命:[server1]:无法访问= 我的在我的库存文件中是错误的还是我称之为错误的?帮助会很好

  • 我试图在unix中使用JSCHSSH类(com.jcraft.jsch)执行一些工具。我的工具有一个选择菜单。我需要转到工具所在的文件夹,执行它并选择请求的选项。在每个命令之后,(cd,execute,…)我希望检查输出并检查状态代码(0/1)。我有下面的代码按预期执行它,但在这段代码中,我找不到一种方法来检查每个命令后的输出。 我无法找到一种方法,但我怎么能分开的命令,并打印他们一个接一个(在同

  • 问题内容: 我正在SSH shell会话上运行命令,为了获得该命令,我在官方示例后面使用了JSch 。 我也在 StackOverflow* 上也遵循此示例编写了自己的代码 * 这是 我的代码: 看起来不错,但奇怪的是 它只能在调试模式下工作 。如果我运行它,程序将无法执行。我认为它锁定 了while循环, 但是我不明白为什么。没有while循环,代码将到达终点,但是不执行任何shell命令。 我