Befehlsergebnisse über die API prüfen
Zuletzt aktualisiert am
Nachdem Sie einen Run Command auf Ihrem Server ausgeführt haben, benötigen Sie Informationen über den aktuellen Fortschritt des in der Warteschlange befindlichen Jobs sowie die Ausgabe des Befehls selbst.
Die folgende Dokumentation beschreibt, wie Sie die Ergebnisse der Befehle überprüfen können und welche Einschränkungen derzeit bestehen.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Swagger-API-Definition für die STACKIT Run Command-Service-API.
- Sie haben den Server Agent installiert.
- Der Run Command-Dienst wurde aktiviert.
- Informationen zur Ausführung eines Befehls.
Ergebnisse aller Run Commands auf Ihrem Server abrufen
Abschnitt betitelt „Ergebnisse aller Run Commands auf Ihrem Server abrufen“Sie müssen die folgenden Informationen in Ihren API-Anfragen angeben:
projectIdserverId
Verwenden Sie die folgende GET-Anfrage, um eine Übersicht über alle Befehle zu erhalten, die bisher an Ihren Server gesendet wurden. Sie können diese Anfrage verwenden, wenn Sie die commandID eines Run Command-Jobs verloren haben, den Sie überprüfen möchten.
GET https://run-command.api.eu01.stackit.cloud/v1/projects/{projectId}/servers/{serverId}/commandsSwagger-API-Definition für die STACKIT Run Command-Service-API: GetCommands.
Beispielausgabe der GET-Anfrage:
GET https://run-command.api.eu01.stackit.cloud/v1/projects/{projectId}/servers/{serverId}/commands
{ "items": [ { "id": 775, "startedAt": "2024-02-08T16:22:29Z", "finishedAt": "2024-02-08T16:22:48Z", "status": "completed", "commandTemplateId": "windowsResetPassword", "commandTemplateTitle": "Reset Password" } ]}Ergebnisse eines spezifischen Run Commands abrufen
Abschnitt betitelt „Ergebnisse eines spezifischen Run Commands abrufen“Wenn Sie das Ergebnis eines spezifischen Befehls überprüfen möchten (beispielsweise den zuletzt ausgeführten Befehl), verwenden Sie die commandID aus der POST-Anfrage-Ausgabe der entsprechenden API-Anfrage (Befehl über die API ausführen) und fügen Sie diese commandID der unten gezeigten GET-Anfrage hinzu.
Geben Sie die folgenden Informationen in Ihren API-Anfragen an:
projectIdserverIdcommandId
Verwenden Sie die folgende GET-Anfrage, um weitere Informationen über den spezifischen Befehl zu erhalten:
GET https://run-command.api.eu01.stackit.cloud/v1/projects/{projectId}/servers/{serverId}/commands/{commandId}Swagger-API-Definition für die STACKIT Run Command-Service-API: GetCommandDetails.
Beispielausgabe der commandID 775 nach dem erfolgreich abgeschlossenen Durchlauf des Run Commands (Befehlsvorlage > ResetPassword):
GET https://run-command.api.eu01.stackit.cloud/v1/projects/{projectId}/servers/{serverId}/commands/775
{ "id": 775, "startedAt": "2024-02-08T16:22:29Z", "finishedAt": "2024-02-08T16:22:48Z", "output": "Password for user 'testuser' has been reset successfully.\n", "exitCode": 0, "status": "completed", "commandTemplateId": "windowsResetPassword", "commandTemplateTitle": "Reset Password", "script": "param (\r\n [Parameter(Mandatory = $true)]\r\n [ValidateNotNullOrEmpty()]\r\n [string]$Username,\r\n\r\n [Parameter(Mandatory = $true)]\r\n [ValidateNotNullOrEmpty()]\r\n [string]$Password\r\n)\r\n\r\nfunction Reset-LocalUserPassword {\r\n [CmdletBinding()]\r\n param(\r\n [Parameter(Mandatory = $true)]\r\n [ValidateNotNullOrEmpty()]\r\n [string]$Username,\r\n\r\n [Parameter(Mandatory = $true)]\r\n [ValidateNotNullOrEmpty()]\r\n [string]$Password\r\n )\r\n\r\n$complexityRequirementsUrl =\r\n\"https://docs.stackit.cloud/stackit/en/security-settings-windows-63182010.html\"\r\n$minPasswordLength = 14\r\n$complexityRequirements = @\"\r\nFailed to set password for user '$Username'. The password does not meet the complexity requirements.\r\nPasswords must meet the following complexity requirements:\r\n- Passwords may not contain the user's samAccountName (Account Name) value or entire displayName (Full Name value). Both checks aren't case-sensitive.\r\n- The password must contain characters from at least three of the following categories:\r\n - Uppercase letters of European languages (A through Z, with diacritic marks, Greek, and Cyrillic characters)\r\n - Lowercase letters of European languages (a through z, sharp-s, with diacritic marks, Greek, and Cyrillic characters)\r\n - Base 10 digits (0 through 9)\r\n - Non-alphanumeric characters (special characters): ~!@#$%^&*_-+=`|\(){}[]:;\"'<>,.?/\r\n - Any Unicode character that's categorized as an alphabetic character but isn't uppercase or lowercase. This group includes Unicode characters from Asian languages.\r\n- The minimum password length is $minPasswordLength characters.\r\n\r\nPlease refer to the password complexity requirements at $complexityRequirementsUrl for more information.\r\n\"@\r\n\r\n # Check if the local user exists\r\n $user = Get-LocalUser -Name $Username -ErrorAction SilentlyContinue\r\n if ($user -eq $null) {\r\n # Create a new local user\r\n $minPasswordLength = 14\r\n $regexPattern = \"^(... [truncated]}Die Ausgabe Ihres destringify Run Command-Ergebnisses
Abschnitt betitelt „Die Ausgabe Ihres destringify Run Command-Ergebnisses“Beachten Sie, dass die Ausgabe des oben ausgeführten Beispiel-Skripts in einem stringified Format (JSON-String) vorliegt, das schwer lesbar sein kann. Wenn Sie die Ausgabe in einer besser lesbaren Form benötigen oder sie weiterverarbeiten möchten, können Sie diese destringify.
So sieht eine stringified Ausgabe aus:
"Current physical memory usage for host: testserver\n2.02 GB RAM in Use (25.31%)\n5.97 GB RAM Available (74.69%)\n8.00 GB RAM Total (100%)\n"Nach der Konvertierung in eine menschenlesbare Form sieht dieselbe Ausgabe so aus:
Current physical memory usage for host: testserver2.02 GB RAM in Use (25.31%)5.97 GB RAM Available (74.69%)8.00 GB RAM Total (100%)Um stringified Inhalte in eine menschenlesbare Form zu konvertieren, gibt es verschiedene Möglichkeiten:
Linux (Destringify über Bash)
Abschnitt betitelt „Linux (Destringify über Bash)“-
Speichern Sie dieses Bash-Destringify-Skript in der Datei
destringify.sh:#!/bin/bash### Geben Sie unten den vollständigen Dateipfad Ihrer erstellten Eingabedatei eininput_file="input"### Den stringified Inhalt aus der Eingabedatei lesenstringified_content=$(cat "$input_file")### Den Inhalt mit sed destringifydestringified_content=$(echo -e "$stringified_content" | sed 's/\\r/\r/g; s/\\n/\n/g')### Den destringified Inhalt auf der Konsole ausgebenecho -e "$destringified_content"### Den destringified Inhalt in eine separate Datei ausgebenoutput_file="${input_file}_destringified"echo -e "$destringified_content" > "$output_file" -
Machen Sie die Destringify-Skriptdatei ausführbar:
Terminal-Fenster chmod +x destringify.sh -
Erstellen Sie eine Datei namens
input, die den stringified Run Command-Ausgabewert enthält. -
Führen Sie das Destringify-Skript im selben Ordner wie die Datei
inputaus.
Alternativ können Sie den Pfad der Dateiinputim Skript hinzufügen:input_file="/pfad/zu/input".Das Destringify-Skript liest den stringified Inhalt der Datei „input“ und entstringifiziert ihn, indem es die Escape-Zeichen ersetzt. Das Ergebnis wird auf der Konsole angezeigt und zusätzlich in eine Ausgabedatei namens
input_destringifiedim selben Ordner wie die Eingabedatei geschrieben.
Windows (Destringify über PowerShell)
Abschnitt betitelt „Windows (Destringify über PowerShell)“-
Öffnen Sie eine PowerShell ISE-Sitzung und fügen Sie das Skript dort ein.
Terminal-Fenster ## Geben Sie unten den vollständigen Pfad und Dateinamen Ihrer erstellten Eingabedatei ein$InputContent = "C:\temp\input_content.txt"$OutputContent = "C:\temp\output_content.txt"### Den stringified Inhalt aus der Eingabedatei lesen$GetInput = Get-Content -Path $InputContent### Ersetzen von Escape-Sequenzen durch entsprechende Zeichen$destringifiedContent = $GetInput -replace "\\r", "`r" -replace "\\n", "`n"### Den destringified Inhalt auf der Konsole ausgebenWrite-Host $destringifiedContent### Den destringified Inhalt in eine separate Datei schreiben$destringifiedContent | Out-File -FilePath $OutputContent -
Erstellen Sie eine neue Textdatei
C:\temp\input_content.txt, die den stringified Inhalt enthält. -
Führen Sie das Skript aus.
Das Skript liest den stringified Inhalt der Datei
input_content.txtund entstringifiziert ihn, indem es die Escape-Zeichen ersetzt. Das Ergebnis wird auf der Konsole angezeigt und zusätzlich in eine Ausgabedatei namensoutput_content.txtim selben Ordner wie die Dateiinputgeschrieben.
Online-Tools verwenden
Abschnitt betitelt „Online-Tools verwenden“Für die Destringify stehen Online-Tools zur Verfügung.