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
sudo /etc/init.d/fhem stop
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 ....
@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
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?
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
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?