NUT (Network UPS Tool) upssched Skript Problem

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
linuxfreak1
Beiträge: 4
Registriert: 02.05.2021 15:58:11

NUT (Network UPS Tool) upssched Skript Problem

Beitrag von linuxfreak1 » 02.05.2021 16:33:53

Hallo zusammen,

ich habe ein Problem bei der Ausführung meines upssched Skript.
Das Skript wird zwar ausgeführt und es werden auch Logeinträge geschrieben aber das ssh Kommando wird nicht ausgeführt.
Wenn ich es als root oder nut user von manuell starte funktioniert es.
Ich habe testweise mal die envs ausgegeben und eine Datei per touch erstellt. Das hat auch funktioniert.
Hat jemand von euch eine Idee was da nicht stimmt.

/etc/nut/upssched.conf

Code: Alles auswählen

CMDSCRIPT /etc/nut/upssched/upssched-cmd
PIPEFN /etc/nut/upssched/upssched.pipe
LOCKFN /etc/nut/upssched/upssched.lock

AT ONBATT * START-TIMER onbatt 30
AT ONLINE * CANCEL-TIMER onbatt online
AT LOWBATT * EXECUTE onbatt
AT COMMBAD * START-TIMER commbad 30
AT COMMOK * CANCEL-TIMER commbad commok
AT NOCOMM * EXECUTE commbad
AT SHUTDOWN * EXECUTE powerdown
AT REPLBATT * EXECUTE replacebatt


/etc/nut/upssched/upssched-cmd

Code: Alles auswählen

#!/bin/bash
  
LOGFILE="/var/log/upssched-cmd.log"

WRITE_TO_LOG() {
        echo "$(date +'%Y_%m_%d %H:%M') - $1" >> ${LOGFILE}
}

case $1 in
        onbatt)
                WRITE_TO_LOG "The UPS is on battery"
                ;;
        online)
                WRITE_TO_LOG "The UPS is back on power"
                ;;
        powerdown)
                /usr/bin/env >> ${LOGFILE}
                /usr/bin/touch /tmp/test.touch >> ${LOGFILE}
                WRITE_TO_LOG "The UPS is shutting down the system"
                /usr/bin/ssh -o ConnectTimeout=10 user@server "sudo /sbin/poweroff" >> ${LOGFILE} 2>&1
                ;;
esac
/var/log/upssched-cmd.log

Code: Alles auswählen

LANGUAGE=en_US:en
PWD=/
NOTIFYTYPE=SHUTDOWN
LANG=en_US.UTF-8
INVOCATION_ID=b9b1cd639ced47b8b6f4bc9647cedfb7
SHLVL=1
UPSNAME=
JOURNAL_STREAM=9:17364
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
2021_05_02 15:31 - The UPS is shutting down the system


Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von heisenberg » 02.05.2021 17:20:07

Wandele den ssh mal ab in...

Code: Alles auswählen

/usr/bin/strace -o $HOME/strace.out /usr/bin/ssh ...


Debianstrace muss natürlich installiert sein.
  • Der ssh Aufruf sollte ja irgend etwas schon ausgeben. Der strace protokolliert die System-Calls von dem SSH-Aufruf. Vielleicht ist das SSH-Binary auch kaputt?
  • Ist am Zielserver bei dem der Poweroff durchgeführt wird kein SSH-Login zu sehen?
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

Benutzeravatar
linuxfreak1
Beiträge: 4
Registriert: 02.05.2021 15:58:11

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von linuxfreak1 » 03.05.2021 09:41:26

Genau das ist mein Problem, ich bekomme nicht mal eine Fehlermeldung.
Kommandos wie touch und echo funktionieren ja.

Hab den strace ausgeführt : NoPaste-Eintrag41366


Edit[JTH]: So lange Logs/Codeblöcke bitte nach NoPaste, sonst läuft das Mausrad heiß ;)
Zuletzt geändert von JTH am 03.05.2021 09:49:10, insgesamt 1-mal geändert.
Grund: strace nach NoPaste verschoben

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von heisenberg » 03.05.2021 10:06:12

Kommandos wie touch und echo funktionieren ja.
Ja. Das ist eine wichtige Erkenntnis!
  1. Hast Du dir den strace mal durchgeschaut? Auch wenn man das wahrscheinlich nicht wirklich alles ganz versteht, sollte es reichen, um eine grobes Bild zu bekommen.
  2. Strace war wohl nicht ganz die Empfehlung von mir für den Anfang, weil es sehr detailliert ist. (Aber nichts desto trotz gibt es gute Hinweise). Hilfreicher ist es wohl, mit steigender Anzahl von -v Optionen beim SSH-Kommando schrittweise den Detailgrad der Debugmeldungen zu erhöhen, bis man hilfreiche Hinweise auf das bekommt, was passiert.
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von JTH » 03.05.2021 10:12:14

Das Skript wird hier, wenn ich das richtig überflogen habe, beim Shutdown des lokalen Systems mit dem Argument powerdown aufgerufen?

Code: Alles auswählen

connect(3, {sa_family=AF_INET, sin_port=htons(22222), sin_addr=inet_addr("192.168.30.222")}, 16) = -1 EINPROGRESS (Operation now in progress)
clock_gettime(CLOCK_BOOTTIME, {tv_sec=36599, tv_nsec=550570544}) = 0
poll([{fd=3, events=POLLIN}], 1, 10000) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
Hier wird das Skript, bzw. konkret der ssh-Aufruf, von PID 1 (init) per SIGTERM gekillt. Das würde ich mal so deuten, dass während des Shutdowns des lokalen Systems das Skript zu lange braucht und daher abgeschossen wird. Evtl. ist das Netzwerk an der Stelle einfach schon down und ssh blockiert die übergebenen 10 Sekunden mit Verbindungsversuch (connect, Operation now in progress). Ein poll auf das Socket wird dann vom SIGTERM unterbrochen.

Um das gegenzuprüfen, könntest du mal die Ausgabe von

Code: Alles auswählen

ip a s
in deinem Log ergänzen.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von heisenberg » 03.05.2021 10:20:36

@JTH:

Schade, dass Du gleich die wesentliche Zeile verraten hast, statt den TE sich erst mal selbst damit auseinander setzen zu lassen. Aus so einem strace kann man interessante Sachen rauslesen, wenn man sich die Ausgabe mal genau anschaut:
  • Verwendete Config-Dateien (und zwar die, die tatsächlich geprüft/gelesen/verarbeitet werden!)
  • Verknüpfte, geladene und gesuchte Bibliotheken
  • ...
Zuletzt geändert von heisenberg am 03.05.2021 11:01:23, insgesamt 1-mal geändert.
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

JTH
Moderator
Beiträge: 3014
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von JTH » 03.05.2021 10:27:16

Asche auf mein Haupt, die Beiträge haben sich überschnitten :(

Dann zumindest noch der Suchhinweis, dass poweroff anscheinend mit einer unpassenden Option aufgerufen wird. Anders, als es im geposteten Skript steht. (Mag Absicht sein zum Testen.)
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
linuxfreak1
Beiträge: 4
Registriert: 02.05.2021 15:58:11

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von linuxfreak1 » 03.05.2021 15:37:55

Vielen Dank für die Lehreinheit zu strace. :D
Und ich konnte dank eurer Hilfe meinen Fehler finden. :hail:
Mein Skript wird einfach vom dem "shutdown -h +30" abgewürgt.
Könnt ihr mir erklären warum der Shutdown gleich nach dem Start mein Skript killt, obwohl er noch 30sec warten sollte?

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von heisenberg » 03.05.2021 17:28:01

+30 steht nicht für 30 Sekunden. (--> manpage)
könnt ihr mir erklären warum der Shutdown gleich nach dem Start mein Skript killt, obwohl er noch 30sec warten sollte?
In der man-page von shutdown steht was dazu drin.
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

Benutzeravatar
linuxfreak1
Beiträge: 4
Registriert: 02.05.2021 15:58:11

Re: NUT (Network UPS Tool) upssched Skript Problem

Beitrag von linuxfreak1 » 03.05.2021 18:46:19

sry ja es sind Minuten :lol:

Antworten