• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Automatischen Systemstart für ddclient einrichten

Liebe Forenmitglieder,

bei all' den Konsolenthemen bin ich immer etwas dünn aufgestellt und meist auf die Hilfe aus der Gemeinschaft angewiesen. Deshalb eigentlich eine einfache Aufgabenstellung: Mit openSUSE 13.2 wurde systemd eingeführt und ich weiß schlicht nicht wie ich "meinen" ddclient (Skript zum Aktualisieren von dynamischen DNS-Adressen) jetzt als daemon in den automatischen Start eintrage.

Bisher lief es so: Das Startskript befand sich hier:
Code:
/etc/init.d/ddclient
Und den automatischen Start konnte ich wie folgt einrichten:
Code:
# insserv ddclient
Danach war der Fisch geputzt und alles lief wie gewünscht.
Aber aktuell bekomme ich es mit der aktuellen openSUSE nicht hin (wohl aus dem oben genanntem Grund).

Bitte um Hilfe!
Hengstenberg
 
http://mikuerschner.org/node/26

Daraus folgt:
Code:
systemctl enable ddclient.service
Code:
systemctl start ddclient.service
 
Hallo Sauerland,

vielen Dank für deine Antwort. Diese hat mir ein Stück weitergeholfen. Aber welche Hürden noch auf mich zukamen im Folgenden:

Code:
# systemctl enable ddclient.service
Kein Thema. Hat offenbar auch dazu geführt, dass beim Neustart der Dienst ausgeführt wurde.
Aber:
Code:
# systemctl start ddclient.service
lieferte
Code:
Job for ddclient.service failed. See "systemctl status ddclient.service" and "journalctl -xn" for details.
Und:
Code:
# systemctl status -l ddclient.service
lieferte dann
Code:
ddclient.service - A Perl Client Used To Update Dynamic DNS
   Loaded: loaded (/usr/lib/systemd/system/ddclient.service; enabled)
   Active: failed (Result: exit-code) since Thu 2014-12-04 21:27:54 CET; 1min 14s ago
  Process: 5422 ExecStart=/usr/sbin/ddclient $DDCLIENT_OPTIONS (code=exited, status=1/FAILURE)
  Process: 5419 ExecStartPre=/bin/touch /var/cache/ddclient/ddclient.cache (code=exited, status=0/SUCCESS)

Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: stat() on closed filehandle FD at /usr/sbin/ddclient line 1001.
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: Use of uninitialized value $mode in bitwise and (&) at /usr/sbin/ddclient line 1002.
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: readline() on closed filehandle FD at /usr/sbin/ddclient line 1014.
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: stat() on closed filehandle FD at /usr/sbin/ddclient line 1001.
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: Use of uninitialized value $mode in bitwise and (&) at /usr/sbin/ddclient line 1002.
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: readline() on closed filehandle FD at /usr/sbin/ddclient line 1014.
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: WARNING:  file /etc/ddclient.conf: Cannot open file '/etc/ddclient.conf'. (Permission denied)
Dec 04 21:27:54 linux-7n3z.site ddclient[5422]: WARNING:  file /etc/ddclient.conf: Cannot open file '/etc/ddclient.conf'. (Permission denied)
Warum kann der auf ddclient.conf nicht zugreifen? Etwas rumprobiert und letztlich muss ich der ddclient.conf als Eigentümer ddclient zuweisen und nicht wie eingestellt root. Hiernach kann ich den Dienst starten.

Aber: Per Systemmail schickt mir nun ddclient folgendes Mail:
Code:
WARNING:  Cannot create file '/var/run/ddclient.pid'. (Permission denied)
WARNING:  file /tmp/ddclient.cache: Cannot open file '/tmp/ddclient.cache'. (Permission denied)
[...]
FATAL:    Cannot create file '/tmp/ddclient.cache'. (Permission denied)
und auch
Code:
# systemctl status -l ddclient.service
liefert etwas ähnliches, was auf dieselbe Problematik hinweist:
Code:
ddclient.service - A Perl Client Used To Update Dynamic DNS
   Loaded: loaded (/usr/lib/systemd/system/ddclient.service; enabled)
   Active: failed (Result: resources) since Thu 2014-12-04 21:48:17 CET; 2min 28s ago
  Process: 2185 ExecStart=/usr/sbin/ddclient $DDCLIENT_OPTIONS (code=exited, status=0/SUCCESS)
  Process: 2170 ExecStartPre=/bin/touch /var/cache/ddclient/ddclient.cache (code=exited, status=0/SUCCESS)

Dec 04 21:48:17 linux-7n3z.site systemd[1]: ddclient.service never wrote its PID file. Failing.
Was kann ich da machen? Die Warnungen könnte ich ja noch ignorieren (wenn auch nicht schön) aber die Fehlermeldung ist dann doch blöd.

Hengstenberg
 
Bei mir unter openSUSE 13.2:
Code:
systemctl status -l ddclient.service 
ddclient.service - A Perl Client Used To Update Dynamic DNS
   Loaded: loaded (/usr/lib/systemd/system/ddclient.service; enabled)
   Active: active (running) since Fr 2014-12-05 06:38:28 CET; 57s ago
  Process: 25179 ExecStart=/usr/sbin/ddclient $DDCLIENT_OPTIONS (code=exited, status=0/SUCCESS)
  Process: 25176 ExecStartPre=/bin/touch /var/cache/ddclient/ddclient.cache (code=exited, status=0/SUCCESS)
 Main PID: 25181 (ddclient - slee)
   CGroup: /system.slice/ddclient.service
           └─25181 ddclient - sleeping for 250 seconds

Dez 05 06:38:28 linux64 ddclient[25179]: WARNING:  file /etc/ddclient.conf: file /etc/ddclient.conf must be accessible only by its owner (fixed).
Code:
zypper se -si ddclient
Daten des Repositories laden ...
Installierte Pakete lesen ...

S | Name     | Typ   | Version     | Arch   | Repository       
--+----------+-------+-------------+--------+------------------
i | ddclient | Paket | 3.8.2-4.1.3 | noarch | openSUSE-13.2-Oss
Keine config angepasst, kein Eigentümer geändert, einfach installiert und enable, start und status.

Ich benutze das aber nicht.
 
ok, Thema gelöst! :thumbs:

Es lag jetzt schlicht daran, dass ich den ddclient schon seit vielen Jahren (und damit seit vielen Releases meiner openSUSE) schon am Laufen habe. Wie es sich jetzt bei mir dargestellt hat, sind seit der 13.2 ein paar Verzeichnisänderungen eingeflossen (vermutlich durch systemd?!), die sich mit der alten Konfigurationsdatei so nicht mehr vertragen haben.

  1. Eigentümer und Gruppe der /etc/ddclient.conf überprüfen (wie ich schon oben geschrieben habe):
    Eigentümer und Gruppe muss ddclient lauten. Bei mir war noch root eingestellt. Also ungefähr so ist dann gut:
    Code:
    -rw------- 1 ddclient ddclient 567 Dec  5 20:19 /etc/ddclient.conf
  2. WARNING: Cannot create file '/var/run/ddclient.pid'. (Permission denied)
    Bisher stand bei mir in der ddclient.conf folgendes:
    Code:
    pid=/var/run/ddclient.pid
    Und es muss aber heißen:
    Code:
    pid=/run/ddclient/ddclient.pid
  3. file /tmp/ddclient.cache: Cannot open file '/tmp/ddclient.cache'. (Permission denied)
    Gleiches Spiel: Bisher bin ich mit folgendem Eintrag gut gefahren:
    Code:
    cache=/tmp/ddclient.cache
    Aber es geht besser mit:
    Code:
    cache=/var/cache/ddclient/ddclient.cache

Nach dieser Korrektur liefert nun der systemctl status folgendes:
Code:
# systemctl status -l ddclient.service
ddclient.service - A Perl Client Used To Update Dynamic DNS
   Loaded: loaded (/usr/lib/systemd/system/ddclient.service; enabled)
   Active: active (running) since Fri 2014-12-05 20:22:05 CET; 3s ago
  Process: 3848 ExecStart=/usr/sbin/ddclient $DDCLIENT_OPTIONS (code=exited, status=0/SUCCESS)
  Process: 3846 ExecStartPre=/bin/touch /var/cache/ddclient/ddclient.cache (code=exited, status=0/SUCCESS)
 Main PID: 3850 (ddclient - slee)
   CGroup: /system.slice/ddclient.service
           └─3850 ddclient - sleeping for 300 seconds
Haken dran!
Vielen Dank an Sauerland, deine Antworten haben zumindest immer die Hinweise geliefert, die das Nachbohren zielsicher gestaltet haben.

Grüße, Hengstenberg
 
Oben