Zum Inhalt springen

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.

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:

  • projectId
  • serverId

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}/commands

Swagger-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:

  • projectId
  • serverId
  • commandId

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: testserver
2.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:

  1. Speichern Sie dieses Bash-Destringify-Skript in der Datei destringify.sh:

    #!/bin/bash
    ### Geben Sie unten den vollständigen Dateipfad Ihrer erstellten Eingabedatei ein
    input_file="input"
    ### Den stringified Inhalt aus der Eingabedatei lesen
    stringified_content=$(cat "$input_file")
    ### Den Inhalt mit sed destringify
    destringified_content=$(echo -e "$stringified_content" | sed 's/\\r/\r/g; s/\\n/\n/g')
    ### Den destringified Inhalt auf der Konsole ausgeben
    echo -e "$destringified_content"
    ### Den destringified Inhalt in eine separate Datei ausgeben
    output_file="${input_file}_destringified"
    echo -e "$destringified_content" > "$output_file"
  2. Machen Sie die Destringify-Skriptdatei ausführbar:

    Terminal-Fenster
    chmod +x destringify.sh
  3. Erstellen Sie eine Datei namens input, die den stringified Run Command-Ausgabewert enthält.

  4. Führen Sie das Destringify-Skript im selben Ordner wie die Datei input aus.
    Alternativ können Sie den Pfad der Datei input im 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_destringified im selben Ordner wie die Eingabedatei geschrieben.

  1. Ö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 ausgeben
    Write-Host $destringifiedContent
    ### Den destringified Inhalt in eine separate Datei schreiben
    $destringifiedContent | Out-File -FilePath $OutputContent
  2. Erstellen Sie eine neue Textdatei C:\temp\input_content.txt, die den stringified Inhalt enthält.

  3. Führen Sie das Skript aus.

    Das Skript liest den stringified Inhalt der Datei input_content.txt und entstringifiziert ihn, indem es die Escape-Zeichen ersetzt. Das Ergebnis wird auf der Konsole angezeigt und zusätzlich in eine Ausgabedatei namens output_content.txt im selben Ordner wie die Datei input geschrieben.

Für die Destringify stehen Online-Tools zur Verfügung.