FHEM per Linux-Konsole beenden

Begonnen von Jojo11, 24 Januar 2014, 19:49:43

Vorheriges Thema - Nächstes Thema

Jojo11

Hallo,

ich habe einen Backup-Rechner mit fhem aufgesetzt. Der Rechner ist momentan nicht im Netz, da der Hauptrechner mit fhem stabil läuft. Allerdings möchte ich nun den backup-Rechner wieder anderweitig nutzen und muss dazu fhem beenden.
sudo perl fhem.pl 7072 "shutdown"
Leider bekomme ich jedesmal die Fehlermeldung "Can't connect to localhost:7072". Ohne Netz kann ich FHEM aber nicht aus der Oberfläche heraus mit "shutdown" beenden  :-\
Gibt es eine andere Möglichkeit, fhem abzuschiessen?

schöne Grüße
Jo

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Wernieman

#2
Für die Fehlersuche:
Horcht denn fhem auf localhost?
netstat -lntp
Dort müste (bei Deiner Ausgabe) u.a. stehen:
tcp        0      0 0.0.0.0:7072            0.0.0.0:*               LISTEN      16156/perl

Alternativen:
1. Über Web  (per wget) ....

2. Anstatt fhem.pl kannst Du auch über nc gehen:
echo -en "passwort\nshutdown\nquit\n | nc localhost 7072
da bei Dir passwort nicht vergeben, lass den Teil "passwort\n" weg

3. killall fhem.pl
Ist schon die etwas härtere Methode ....
(als user fhem oder root oder sudo)

Edit:
4. /etc/init.d/fhem stop
geht aber nur, wenn Du ein init-Script eingerichtet hast .... als user-root oder sudo

Edit2:
Warum wird eigentlich bei jedem Kommandozeilenbefehl heute "sudo" hingeschrieben? ist z.B. bei fhem im ersten Beitrag doch nicht nötig ..... bei /etc/init.d/fhem natürlich wegen notwendiger root-Berechtigung ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Jojo11

@Joachim: Das geht leider nicht, selbe Fehlermeldung "Can't connect to localhost:7072".

@Wernieman:
netstat -lntp
7072 finde ich nicht, perl auch nicht. Port 8083/84/85 stehen in der Liste, aber in der Spalte PID stehen nur "-".

Option 1.: Wenn ich das richtig verstehe soll ich über das webinterface gehen? Da kommt nix, weil mein Rechner nicht im Netz ist (und auch nicht rein soll, solange fhem noch läuft).
Option 2. funktioniert auch nicht. Befehl wird ohne Fehlermeldung angenommen, aber ein sudo /etc/init.d/fhem status bestätigt, dass fhem immer noch läuft.
Option 3: Funktioniert auch nicht  ??? Egal ob als user, fhem oder root, "fhem.pl: Kein Prozess gefunden".

top
zeigt mir aber, dass "perl" unter user "fhem" läuft. Wenn ich die PID nehme und den Prozess mit "sudo kill PID" beende, startet er anscheinend mit neuer PID wieder.

Irgendwie kann das doch nicht sein...?

schöne Grüße
Jo

Wernieman

#4
1. richte Dir ein telnetzugang für FHEM ein (siehe Doku)
2. Da Dein Rechner ein localhost hat (bestimmt!) ist er auch im Netz, aber eben nicht im Internet!
also kannst Du über wget http://localhost .... auf FHEM zugreifen!

Edit:
Kannst Du bitte mal Deine /etc/init.d/fhem posten?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Jojo11

Hallo,

Oh je, da habe ich wohl irgendwann mal den telnet-Zugang auskommentiert. Jetzt ist er wieder drin, Rechner neu gestartet, aber das stop-Skript geht trotzdem nicht. Fehlermeldung ist weg, aber FHEM läuft munter weiter  ;D
Was aber jetzt funktioniert hat:
localhost:8083/fhem
im Browser + "shutdown".
Vielen Dank für diesen Hinweis!

Allerdings scheint das Skript falsch zu sein, denn es gibt immer noch "fhem is running" zurück.


#! /bin/sh
# Copyright (c) 2011 Wolfram Plettscher
# All rights reserved
#
# Author: Wolfram Plettscher, 2011
#
# /etc/init.d/fhem
#
### BEGIN INIT INFO
# Provides:    fhem
# Required-Start:
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:  0 1 2 6
# Short-Description: starts FHEM house automation server
# Description:    during start it also reconfigures /dev/ttyACM0 to rwrwrw rights
#          (this is hardcoded for busware CUL device)
#          Last maintained for SuSE 11.4
#
# Installation:
# - copy this file to /etc/init.d
# - chmod 744 /etc/init.d/fhem
# - ln -s /etc/init.d/fhem /sbin/fhem
# - enable and edit in YAST system services
### END INIT INFO

case "$1" in
  start)
   echo "Start $0"
   #chmod 666 /dev/ttyACM0
   /opt/fhem/fhem.pl /opt/fhem/fhem.cfg
   ;;
  stop)
   echo "Stop $0"
   /opt/fhem/fhem.pl 7072 shutdown
   ;;
  status)
   cnt=`ps -ef | grep "fhem.pl" | grep -v grep | wc -l`
   if [ "$cnt" -eq "0" ] ; then
    echo "$0 is not running"
   else
    echo "$0 is running"
   fi
   ;;
  *)
   echo "Usage: $0 {start|stop|status}"
  exit 1
esac
exit 0



schöne Grüße
Jo

Wernieman

#6
Wbei .. Du kannst den "Befehl" shotdown auch in der Browserzeile übergeben. Diese natürlich dann einfach per wget aufrufen und ... viola ....

Hast Du telnet Zugang eventuell beschrängt?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html