#!/usr/bin/expect -f # --- START: Anpassung für erzwungene Neu-Authentifizierung --- # Entferne den alten Konfigurationsordner, falls er existiert, um eine neue Sitzung zu erzwingen. set config_dir "/config/.tuya-data" if { [file isdirectory $config_dir] } { puts "Alter Konfigurationsordner gefunden. Wird entfernt, um Neu-Authentifizierung zu erzwingen." # Der 'catch'-Befehl fängt mögliche Fehler beim Löschen ab. if {[catch {file delete -force -- $config_dir} err]} { puts stderr "Fehler: Konnte den existierenden Ordner '$config_dir' nicht löschen: $err" exit 1 } } # --- ENDE: Anpassung --- puts "Starte den Authentifizierungsprozess..." set timeout 30 # Lese die Eingaben (Region, E-Mail, Passwort) von stdin gets stdin region if { [eof stdin] || $region eq "" } { puts stderr "Fehler: Region konnte nicht von stdin gelesen werden oder ist leer." exit 1 } gets stdin email if { [eof stdin] || $email eq "" } { puts stderr "Fehler: E-Mail konnte nicht von stdin gelesen werden oder ist leer." exit 1 } gets stdin password if { [eof stdin] || $password eq "" } { puts stderr "Fehler: Passwort konnte nicht von stdin gelesen werden oder ist leer." exit 1 } # Starte den Befehl zur Authentifizierung # Hinweis: Der Befehl wurde von 'auth add' auf 'users add' geändert, falls sich die CLI-Syntax geändert hat. # Passen Sie dies bei Bedarf an die von Ihnen verwendete Version an. spawn tuya-ipc-terminal users add $region $email --password # Behandele die Interaktion mit dem Prozess expect { "Password:" { send "$password\r" exp_continue } "Enter password:" { send "$password\r" exp_continue } "Please enter your password:" { send "$password\r" exp_continue } "Authentication successful" { puts "Authentifizierung erfolgreich abgeschlossen!" # Warte auf das Ende des Prozesses, um sicherzustellen, dass alles geschrieben wurde catch {expect eof} catch {wait} exit 0 } "Login successful" { puts "Login erfolgreich abgeschlossen!" catch {expect eof} catch {wait} exit 0 } "Authentication completed" { puts "Authentifizierung abgeschlossen!" catch {expect eof} catch {wait} exit 0 } "Invalid credentials" { puts stderr "Authentifizierung fehlgeschlagen: Ungültige Anmeldedaten" catch {expect eof} catch {wait} exit 1 } "Login failed" { puts stderr "Authentifizierung fehlgeschlagen: Login fehlgeschlagen" catch {expect eof} catch {wait} exit 1 } "Authentication failed" { puts stderr "Authentifizierung fehlgeschlagen" catch {expect eof} catch {wait} exit 1 } eof { # Ein unerwartetes EOF kann auch ein Erfolg sein, wenn das Tool keine Abschlussmeldung ausgibt. # Wir prüfen den Exit-Code des Prozesses. set exit_code [lindex [wait] 2] if { $exit_code == 0 } { puts "Prozess beendet, vermutlich erfolgreich." exit 0 } else { puts stderr "Prozess unerwartet beendet mit Exit-Code $exit_code." exit 1 } } timeout { puts stderr "Zeitüberschreitung beim Authentifizierungsprozess" catch {expect eof} catch {wait} exit 1 } }