info("→ {$unit} ({$action})"); // Existiert die Unit? $existsCmd = sprintf('systemctl status %s >/dev/null 2>&1', escapeshellarg($unit)); exec($existsCmd, $_o, $existsRc); if ($existsRc !== 0) { $this->line(" {$unit} existiert nicht – übersprungen"); continue; } // Restart/Reload via sudo (ohne Passwort) $cmd = sprintf('sudo -n /usr/bin/systemctl %s %s', escapeshellarg($action), escapeshellarg($unit)); exec($cmd . ' 2>&1', $out, $rc); foreach ($out as $line) { $this->line(" $line"); } $rc === 0 ? $this->line(' [✓] Erfolgreich') : $this->warn(" [!] Fehler (rc={$rc})"); } return self::SUCCESS; } } //class MailwoltRestart extends Command //{ // protected $signature = 'mailwolt:restart-services'; // protected $description = 'Restart or reload MailWolt-related system services'; // // public function handle(): int // { // $units = config('mailwolt.units', []); // $allowed = ['reload','restart','try-reload-or-restart']; // // foreach ($units as $u) { // $base = (string)($u['name'] ?? ''); // $unit = str_ends_with($base, '.service') ? $base : $base . '.service'; // $action = $u['action'] ?? 'try-reload-or-restart'; // if (!in_array($action, $allowed, true)) $action = 'try-reload-or-restart'; // // // existiert Unit überhaupt? // $probe = Process::fromShellCommandline("systemctl status $unit >/dev/null 2>&1"); // $probe->run(); // if ($probe->getExitCode() !== 0) { // $this->warn("→ {$unit} existiert nicht – übersprungen"); // continue; // } // // $this->info("→ {$unit} ({$action})"); // $p = new Process(['sudo','-n','/usr/bin/systemctl',$action,$unit]); // $p->setTimeout(15); // $p->run(); // // if (!$p->isSuccessful()) { // $this->warn(" [!] Fehler (rc={$p->getExitCode()})"); // Log::warning('service restart failed', [ // 'unit'=>$unit,'action'=>$action, // 'out'=>$p->getOutput(), 'err'=>$p->getErrorOutput() // ]); // } else { // $this->line(" [✓] Erfolgreich"); // } // } // return self::SUCCESS; // } //} // //use Illuminate\Console\Command; // //class MailwoltRestart extends Command //{ // protected $signature = 'mailwolt:restart-services'; // protected $description = 'Restart or reload MailWolt-related system services'; // // public function handle(): int // { // $units = config('mailwolt.units', []); // // foreach ($units as $u) { // $unit = rtrim($u['name'] ?? '', '.service') . '.service'; // $action = $u['action'] ?? 'try-reload-or-restart'; // // $cmd = sprintf('sudo -n /usr/bin/systemctl %s %s', escapeshellarg($action), escapeshellarg($unit)); // $this->info("→ {$unit} ({$action})"); // // exec($cmd . ' 2>&1', $out, $rc); // foreach ($out as $line) { // $this->line(" $line"); // } // // if ($rc !== 0) { // $this->warn(" [!] Fehler beim Neustart von {$unit} (rc={$rc})"); // } else { // $this->line(" [✓] Erfolgreich"); // } // } // // return self::SUCCESS; // } //}