Files
2026-09-14 12:43:38 +02:00

117 lines
3.1 KiB
Plaintext
Executable File

#!/usr/bin/expect -f
log_user 0
if { [llength $argv]==0 } {
puts "Hostname missing\n(all,tv,pc,serverhost,quiethost)"
exit 0
}
set color [lindex $argv 1]
if { $color == "-c" } {
set red "\033\[1;31m"
set blue "\033\[1;34m"
set norm "\033\[1;0m"
} else {
set red ""
set blue ""
set norm ""
}
set ret1 ""
array set host { 0 "serverhost" 1 "quiethost" }
array set user { 0 "lucas" 1 "lucas" }
array set port { 0 "3032" 1 "1504"}
set TARGET [lindex $argv 0]
set start 0
set end -1
if { ${TARGET} == "all" || ${TARGET} == "pc" } {
set start 0
set end 1
} elseif { ${TARGET} == "serverhost" } {
set start 0
set end 0
} elseif { ${TARGET} == "quiethost" } {
set start 1
set end 1
} else {
puts "Target ${TARGET} not known"
exit 0
}
#if {[string match 10.0.0.26* $env(SSH_CLIENT)]} {
# exec ssh -o ConnectTimeout=4 -p 1504 lucas@quiethost notify-send "Shutdown ${TARGET}"
#}
for {set i $start} {$i <= $end} {incr i 1} {
spawn ssh -o ConnectTimeout=4 -p $port($i) $user($i)@$host($i)
expect {
"Connection timed out" {
puts "$host($i)\t\[${red} FAIL ${norm}\]"
}
"$ " {
send "cat /home/lucas/.auto_shutdown\r"
expect "$ "
set ret $expect_out(buffer)
if {[string match *no* $ret ]} {
puts "Shutdown disabled! $host($i) Shutdown aborted!"
exit 0
} else {
puts "Shutdown enabled"
}
send "ps -elf | grep scripts/backup | grep -v grep\r"
expect "$ "
set ret $expect_out(buffer)
if {[string match *bash* $ret ]} {
puts "Backup in Progress! $host($i) Shutdown aborted!"
exit 0
} else {
puts "No Backup in Progress"
}
send "ps -elf | grep scripts/upgrade | grep -v grep\r"
expect "$ "
set ret $expect_out(buffer)
if {[string match *bash* $ret ]} {
puts "Update in Progress! $host($i) Shutdown aborted!"
exit 0
} else {
puts "No Update in Progress"
}
send "sudo /sbin/shutdown -P 1 +6\r"
#send "echo Shutdown\r"
expect "$ "
set ret $expect_out(buffer)
send "exit\r"
expect "$ "
set ret1 [exec echo $ret | grep -o "Shutdown scheduled"]
}
}
if {$ret1 == "Shutdown scheduled"} {
puts "$host($i)\t\[${blue} DOWN${norm} ]"
if {[string match 10.0.0.26* $env(SSH_CLIENT)]} {
exec ssh -o ConnectTimeout=4 -p 1504 lucas@quiethost notify-send "Shutdown SUCESSFULL for ${TARGET}"
}
} else {
puts "$host($i)\t\[${red} FAIL${norm} ]"
if {[string match 10.0.0.26* $env(SSH_CLIENT)]} {
exec ssh -o ConnectTimeout=4 -p 1504 lucas@quiethost notify-send "Shutdown FAILED for ${TARGET}"
}
}
}
if { ${TARGET} == "quiethost-win" } {
spawn ssh -o ConnectTimeout=6 -p 1504 LF@quiethost
expect {
"Connection timed out" {
puts "quiethost\t\[ ${red} FAIL ${norm} ]"
}
"LF>" {
send "shutdown /p\r"
expect {
"LF>Received disconnect" {
puts "quiethost\t\[${blue} DOWN${norm} ]"
send "exit\r"
}
}
}
}
}
if { ${TARGET} == "all" || ${TARGET} == "tv" } {
spawn bash /home/lucas/Raspberry/scripts/samsung_remote.sh OFF
puts "TV\t\[ ${blue} DOWN${norm} ]"
}