HowTo: Zeitgesteuertes Neustarten des Konnektors mit Windows Boardmitteln

In diesem Forum dreht sich alles um den TI-Konnektor "KoCoBox" der CGM und die kommende Lösung "TIaaS" ("TI as a Service"). Egal ob Fragen, Probleme, Tipps, Hilfestellungen: Alle Beiträge zum Thema TI, KoCoBox, KIM, eAU usw. sind hier genau richtig.
Antworten
CGM-FTW
Beiträge: 59
Registriert: Mittwoch 15. November 2023, 08:10
1
PVS: CGMMANAGEDTI
Konnektortyp: Kocobox
Hat Dank erhalten: 37 mal

HowTo: Zeitgesteuertes Neustarten des Konnektors mit Windows Boardmitteln

Beitrag von CGM-FTW »

Es häufen sich die Anfragen bei mir, dass eine Lösung für einen automatischen Konnektorneustart zu Tagesbeginn aufgrund des TLS-Bugs benötigt wird. Das ganze natürlich unter Windows und keine kryptischen .exe Dateien, deren Inhalt man nicht verifizieren kann.

Macht euch das Werkzeug zu eigen, um selbst Lösungen zu entwickeln.
Ich werde vermutlich zum Jahresbeginn nicht mehr für einen Managed TI Anbieter arbeiten und habe daher weder die Zeit, noch die Mittel (Konnektor), noch die Motivation hier weiter Werkzeuge zur Verfügung zu stellen.

Vorgehen:
- Kopiert den Quellcode in einen Editor
- Tragt eure IP-Adresse und das koco-root Kennwort bei IP und Pass an der Stelle "Ab hier PowerShell"
- Speichert Sie unter KonnektorReboot.cmd (Dateityp ändern von "Textdatei" auf "Alle Dateien")

- Prüft mit einem Doppelklick, ob alles funktioniert
- Legt über die Aufgabenplanung eine neue, "einfache Aufgabe" an. Verwendet die Zeitsteuerung, um die Aufgabe z.B. jeden morgen auszuführen.

Code: Alles auswählen

@echo off
%windir%\System32\more +8 "%~f0" > "%temp%\%~n0.ps1"
powershell -NoProfile -ExecutionPolicy Bypass -File "%temp%\%~n0.ps1" %*
del %temp%\%~n0.ps1
pause
exit /b

*** Ab hier PowerShell ***
$IP = "127.0.0.1"
$User = "koco-root"
$Pass = "GEHEIM"

#Reboot
$PerformAction = "reboot"
$Data = ''

# Login
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }
$LoginUri = "https://" + $IP + ":9443/j_security_check"
$LoginBody = @{
    j_username = "$User"
    j_password = "$Pass"
}
$LoginResponse = Invoke-WebRequest -Uri $LoginUri -SessionVariable "Session" -Body $LoginBody -Method "POST" 

# Get X-Token
$BackendUri = "https://" + $IP + ":9443/administration/json-retrieve/infoservice"
$BackendResponse = Invoke-WebRequest -Uri $BackendUri -WebSession $Session -Headers @{'Content-Type' = 'application/json'}
$xtoken = (((($BackendResponse.Headers."Set-Cookie") -Split ";")[0]) -Split "=")[1]

# Perform Action
$PerformUri = "https://" + $IP + ":9443/administration/perform/" + $PerformAction
$PerformHeaders = @{
'Content-Type' = 'application/json'
'X-TOKEN' = "$xtoken"
}
$PerformResponse = Invoke-WebRequest -Uri $PerformUri -WebSession $Session -Body $Data -Method "POST" -Headers $PerformHeaders
echo $PerformResponse.content
P.S.: Wenn sich das Fenster am Ende schließen soll, macht das "Pause" in Zeile 5 weg.
P.P.S.: Von PS1 nach CMD konvertiert mit dem Heise PS1 to CMD converter. Danke Heise!

Grüße Christian Krause
Zuletzt geändert von CGM-FTW am Sonntag 8. Dezember 2024, 16:06, insgesamt 1-mal geändert.
CGM-FTW
Beiträge: 59
Registriert: Mittwoch 15. November 2023, 08:10
1
PVS: CGMMANAGEDTI
Konnektortyp: Kocobox
Hat Dank erhalten: 37 mal

Re: HowTo: Zeitgesteuertes Neustarten des Konnektors mit Windows Boardmitteln

Beitrag von CGM-FTW »

Wer eine alte Windows oder Powershell Version verwendet, der muss ggf. TLS auf Version 1.2 forcieren, um eine Verbindung aufzubauen.
Sonst erhält man: Invoke-WebRequest : Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden..

Die Zeile

Code: Alles auswählen

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
sollte das Problem lösen, wenn man sie unmtitelbar unterhalb von "# Login" einfügt.
Ihr könnt ja hier mal Feedback hinterlassen.

EDIT: Hab ich jetzt direkt ins obige Skript übernommen, weil Sie vermutlich auch bei neueren Windows Versionen keinen Nachteil bereitet.

MarcusD hatte mich auch darauf hingewiesen, dass auch hier wieder einige Kennwörter zurückgewiesen werden, weil Sie von der Shell interpretiert und daher nicht korrekt übermittelt werden.
Falls ihr als Feedback statt ein "True" die Login-Seite erhaltet, hat der Login nicht geklappt.

In diesem Fall müsst ihr das verwendete Kennwort der KocoBox so abändern, dass im Idealfall als einziges Sonderzeichen die # enthalten ist. Ihr könnt hierfür einen separaten User erstellen oder das vorhandene Kennwort abändern. Ihr könnt auch versuchen mit Anführungszeichen im Quellcode zu arbeiten.

Auch die Verwendung von nicht-ASCII Buchstaben (ä, ö, ü, ß) könnte zu einem Problem mit der Zeichenkodierung und einer falschen Übermittlung führen.

Der Fehler sieht dann so aus:

Code: Alles auswählen

!DOCTYPE html>
<html lang="de">

<head>
        <meta charset="UTF-8">
        <meta name="thisIsTheKoCoLoginPage" content="yes">
        <title>KoCoBox-Managementschnittstelle Login</title>
        <link rel="icon" type="image/png" sizes="32x32" href="icons/favicon/favicon-32x32.png?v=202304">
        <link rel="icon" type="image/png" sizes="16x16" href="icons/favicon/favicon-16x16.png?v=202304">
        <link rel="shortcut icon" href="icons/favicon/favicon.ico?v=202304">
        <link rel="stylesheet" href="login.css">
CGM-FTW
Beiträge: 59
Registriert: Mittwoch 15. November 2023, 08:10
1
PVS: CGMMANAGEDTI
Konnektortyp: Kocobox
Hat Dank erhalten: 37 mal

Re: HowTo: Zeitgesteuertes Neustarten des Konnektors mit Windows Boardmitteln

Beitrag von CGM-FTW »

Hier gibt es alle Programme noch einmal auf meiner Webseite zusammengefasst.
Ihr habt nun auch die Möglichkeit, kostenpflichtigen Support zu erwerben, sofern das für eine rechtliche Absicherung benötigt wird oder Unterstützung bei der Einrichtung benötigt wird.

https://www.krause-computer.de/telemati ... ardmitteln
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste