114 lines
3.4 KiB
Plaintext

#!/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
}
}