So ich glaube das es jetzt soweit läuft.
Ein Punkt ist aber noch offen.
Kann ich das Skript ohne Wartezeit dauerhaft laufen lassen (Ohne sleep), oder benötigt das unnötige Ressourcen.
Beiträge von wacken
-
-
Da steht nirgends "vor das > eine 2 setzen".
Muss ich das zusätzlich zum >/dev/null an den Befehl anhängen?
Du willst wohl doch eher eine Schleife, die nach einem Schläfchen checkt, ob es nun wieder mounten muss, oder die Mounts noch gültig sind.
Dann unmoutet das Skript mir meine Laufwerke ja ständig. Das ist ja nicht das was ich möchte. Somit kann ich ja nicht sicher auf mein Laufwerk zugreifen. Oder sehe ich das flasch, wenn ja warum?
-
Code
Alles anzeigenUser1@linux-k7nn:~> sudo systemctl status mounten.service [sudo] Passwort für root: ● mounten.service - Mounten nach VPN Verbindung Loaded: loaded (/etc/systemd/system/mounten.service; enabled; vendor preset: disabled) Active: inactive (dead) since So 2018-08-26 18:24:20 CEST; 25min ago Process: 4355 ExecStart=/home/User1/Schreibtisch/mounten.sh (code=exited, status=0/SUCCESS) Main PID: 4355 (code=exited, status=0/SUCCESS) Aug 26 18:24:16 linux-k7nn.suse systemd[1]: Started Mounten nach VPN Verbindung. Aug 26 18:24:16 linux-k7nn.suse mounten.sh[4355]: PING 172.23.40.3 (172.23.40.3) 56(84) bytes of data. Aug 26 18:24:16 linux-k7nn.suse mounten.sh[4355]: 64 bytes from 172.23.40.3: icmp_seq=1 ttl=64 time=38.4 ms Aug 26 18:24:16 linux-k7nn.suse mounten.sh[4355]: --- 172.23.40.3 ping statistics --- Aug 26 18:24:16 linux-k7nn.suse mounten.sh[4355]: 1 packets transmitted, 1 received, 0% packet loss, time 0ms Aug 26 18:24:16 linux-k7nn.suse mounten.sh[4355]: rtt min/avg/max/mdev = 38.444/38.444/38.444/0.000 ms -
Alles anzeigen
und es genügt nicht nur die STDOUT Ausgabe umzuleiten.
Du musst auch STDERR umleiten ( 2>/dev/null oder 2>/pfad/zu/meinLog )Das möchtest du für jeden Befehl machen,
ODER z.B.
ein exec 2>/meinLog.out 1>/meinLog.err
Lies dazu help exec und man exec.
(Ja, manche Kommandos gibt es in einer internen und externen Variante)Du kannst das auch als User machen.
Die Dateien liegen dann in ~/.systemd
Ich habe das Skript angepasst, jedoch geht es immer noch nicht, es zeigt das selbe Verhalten wie zuvor auch.Bash
Alles anzeigen#!/bin/bash #mount -a if ping -c 1 172.23.40.3 2> /dev/null; then umount -l /home/User1/NAS00 2> /dev/null umount -l /home/User1/NAS01 2> /dev/null mount mount -T /home/User1/Schreibtisch/NAS.fstab -a 2> /dev/null exit 0; fi umount -l /home/User1/NAS00 2> /dev/null umount -l /home/User1/NAS01 2> /dev/null exit 0; -
Ja wird als root gemacht
-
Ich bin jetzt einen Schritt weiter, jedoch wird der mounten service nicht automatisch ausgeführt.
Mein Service-File:
Code[Unit] Description=Mounten nach VPN Verbindung After=openvpn.target [Service] Type=simple ExecStart= /home/User1/Schreibtisch/mounten.sh [Install] WantedBy=multi-user.targetMein Shell-Skript:
Bash
Alles anzeigen#!/bin/bash #mount -a if ping -c 1 172.23.40.3 > /dev/null; then umount -l /home/User1/NAS00 umount -l /home/User1/NAS01 mount mount -T /home/User1/Schreibtisch/NAS.fstab -a exit 0; fi umount -l /home/User1/NAS00 umount -l /home/User1/NAS01 exit 0;NAS.fstab enthält nur die Netzlaufwerke, kopiert aus der fstab-Datei.
Wenn ich
systemctl start mounten.service
ausführe, werden die Netzlaufwerke gemountet wie gewünscht, jedoch nicht, nach einem Systemstart oder wenn die Netzwerkverbindung getrennt wurde (hier werden Sie gar nicht unmountet). Den mounten-Service habe ich mit
systemctl enable mounten.service
aktiviert. -
Woran erkenne ich das mein Script mit STDOU,STDIN und STDERR verbunden ist, und wie kann ich das unterbinden.
Wenn du von
man systemd.service
sprichst. Wo finde ich diese bzw. ist es das:
https://www.freedesktop.org/so…/man/systemd.service.html -
Ich glaube ich habe jetzt verstanden was ich machen muss, jedoch klappt es nicht.
Mein Shellscript:
Mein Service-File:Code
Alles anzeigen[Unit] Description=Mounten nach VPN Verbindung After=openvpn.target [Service] Type=simple ExecStart= sh /home/User1/Schreibtisch/mounten.sh [Install] WantedBy=multi-user.target
Wo ist es gibt es da ein Problem.
Kannst du mir bitte noch sagen warum ich es erst unmounten soll. Und kann man das ganze nicht einfacher in einem cronjob realisieren, bzw. was spricht dagegen. -
So ganz kann ich dir nicht folgen.
Soll ich jetzt in der openvpn@User1.service Datei ein Skript aufrufen, welches das mounten übernimmt? Wenn ja warum kann ich die Befehle nicht direkt da mit reinschreiben.
Was für Kopfzerbrechen spare ich mir, wenn ich immer zuerst ein umount mache? -
Die automatische Verbindung zum openVPN Server wird aufgebaut, nachdem ich folgenden Befehl eingegeben habe:
Nach Eingabe habe ich EINMALIG das root-Passwort in ein aufpopendes Fenster eintragen müssen.
Was noch nicht funktioniert ist ein automatisches mounten nachdem die VPN-Verbindung aufgebaut wurde.
Wie muss ich diese realisieren, das die Laufwerke immer eingebunden sind, wenn die Verbindung aufgebaut ist. Wenn es einfach zu realisieren ist, würde ich gerne die Netzlaufwerke aushängen können, ohne dass diese dann erneut automatisch wieder eingehängt werden.