fix: add sudo fallback to agent installer + improve error output
- AgentService: try sudo -n first, fall back to bash without sudo - AgentService: add sudo to uninstall command - AgentService: trim error output to last 20 lines for readability - View: show SSH output inline in error toast - Fix undefined $path variable in success path
This commit is contained in:
@@ -49,9 +49,12 @@ class AgentService
|
||||
|
||||
$script = file_get_contents($scriptPath);
|
||||
|
||||
$b64 = base64_encode($script);
|
||||
$remoteCommand = sprintf(
|
||||
'echo %s | base64 -d | bash -s -- %s %s 2>&1',
|
||||
escapeshellarg(base64_encode($script)),
|
||||
'echo %s | base64 -d | (sudo -n true 2>/dev/null && sudo bash -s -- %s %s || bash -s -- %s %s) 2>&1',
|
||||
escapeshellarg($b64),
|
||||
escapeshellarg($serverUrl),
|
||||
escapeshellarg($agentKey),
|
||||
escapeshellarg($serverUrl),
|
||||
escapeshellarg($agentKey)
|
||||
);
|
||||
@@ -67,17 +70,17 @@ class AgentService
|
||||
|
||||
$output = trim($result['output']);
|
||||
$exitStatus = $result['exit_status'] ?? -1;
|
||||
$path = '/usr/local/bin/servermanager-agent';
|
||||
|
||||
if ($exitStatus !== 0) {
|
||||
$lastLines = implode("\n", array_slice(explode("\n", $output), -20));
|
||||
return [
|
||||
'success' => false,
|
||||
'error' => 'Agent installation failed on remote server',
|
||||
'output' => $output,
|
||||
'output' => $lastLines,
|
||||
];
|
||||
}
|
||||
|
||||
$path = '/usr/local/bin/servermanager-agent';
|
||||
|
||||
$serverModel = new \ServerManager\Models\Server();
|
||||
$serverModel->setAgentInstalled($serverId, true, $path);
|
||||
|
||||
@@ -116,7 +119,7 @@ class AgentService
|
||||
$script = file_get_contents($scriptPath);
|
||||
|
||||
$remoteCommand = sprintf(
|
||||
'echo %s | base64 -d | bash 2>&1',
|
||||
'echo %s | base64 -d | sudo bash 2>&1',
|
||||
escapeshellarg(base64_encode($script))
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user