Script um verbindung zu OpenVPN Server aufzubauen

Hinweis: In dem Thema Script um verbindung zu OpenVPN Server aufzubauen gibt es 50 Antworten auf 6 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Ja, du schreibst noch immer nicht, was du genau gemacht hast, sondern nur dass du gemacht hast.

    Wir wollen hier die __exakten__ Befehle, die du eingegeben hast, in Code-Tags lesen.
    Samt den ___exakten__ Meldungen mit denen das System antwortet.


    WAS geht jetzt?

  • Die automatische Verbindung zum openVPN Server wird aufgebaut, nachdem ich folgenden Befehl eingegeben habe:

    Code
    systemctl enable openvpn@User1

    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.

    Für den Inhalt des Beitrages 124169 haftet ausdrücklich der jeweilige Autor: wacken

  • Da brauchst du dann für das kleine zu schreibende Mountscript ein Systemd Unitfile, das in Abhängigkeit zu dem jetzt erzeugten openvpn.service File eben dieses Script aufruft. Und die Mounts con forza wieder unmountet, wenn die Verbindung wegbricht.


    Es dürfte wohl einfacher sein, das Mountscript einfach zuerst einen Force- Unmount machen zu lassen, bevor es mountet.
    Spart ein wenig Kopfzerbrechen.


    man systemd.service

  • 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?

    Für den Inhalt des Beitrages 124178 haftet ausdrücklich der jeweilige Autor: wacken

  • Nein.


    Du sollst ein Shellscript schreiben, das deine Mounts erledigt.
    Dieses Script wird dann durch dein Systemd Unitfile aufgerufen in Abhängigkeit von deinem openVPN Service (File).
    Also zwei Dateien musst du erstellen. Ein Shellscript UND ein Service File dafür.


    Du solltest dich vorher wohl etwas intensiver mit Systemd befassen.

  • Ich glaube ich habe jetzt verstanden was ich machen muss, jedoch klappt es nicht.


    Mein Shellscript:

    Bash
    #!/bin/bash
    mount -a


    Mein Service-File:


    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.

    Für den Inhalt des Beitrages 124182 haftet ausdrücklich der jeweilige Autor: wacken

  • Einfacher in einem Cronjob?
    Der wird dann alle zwei Minuten gestartet, um erst mal festzustellen, ob eine VPN Verbindung besteht, und ob die Mounts bereits existieren?


    Man kann alles machen. Selbst solche Scripts schreiben.
    Das ist mal wieder Schrauben mit dem Hammer eindrehen.
    Rein kann man Schrauben schon mit einem Hammer kriegen, raus ist dann etwas anspruchsvoller mit hohen Materialkosten.


    Selbstverständlich funktioniert dein Unitfile nicht.
    Kein Script darf mit STDOUT, STDIN oder STDERR verbunden sein - das ist ja kein interaktiver Job, sondern ein reiner Servicejob ohne jede Verbindung zu einem Terminal.
    Genau so, wie es in man systemd.service steht.
    Und dein mount -a ist nun mal geschwätzig.


    Außerdem ist die von dir definierte Abhänigkeit schon erfüllt, wenn systemd die Verbindung gestartet hat.
    Damit ist nicht gesagt, dass es auch eine Verbindung gibt. Die könnte längst weggebrochen sein.
    (Das mag bei schlechten Netzstrecken schon mal vorkommen)
    Dein Script wird also mindestens testen müssen, ob nun eine arbeitsfähige Verbindung besteht UND ob die Mounts schon erledigt wurden.
    Da kann dann außerdem noch der Fall auftreten, dass eine Netzverbindung hängt, weil du schon mit irgendeinem Prozess dort als CWD )==CurrentWorkingDirectory) stehst, aber die Verbindung weggebrochen ist, was dann vor einem neuerlichen Mount einen force- Unmount verlangen würde.


    Das gilt für ein Systed- Unitfile ebenso wie für irgendwelche Cronjobs.
    Gar so einfach sind die Dinge nicht.


    Ich denke, es wäre einfacher für dich, die Geschichte einfach so zu lassen und das mount -a einfach nach Bedarf einzugeben.
    Wenn deine /etc/fstab passt, kannst du das ja jederzeit als User.


    Oder du lernst systemd.
    Die moderne einfache Variante.
    WENN man es gelernt hat.
    Das erfordert aber anfangs schon Mühe. Es ist anfangs wirklich schwer zu durchschauen.