Du bist nicht angemeldet.

#1 13.03.2021 17:48:53

_Ardbeg_
Mitglied

umount NAS vor Herunterfahren oder Neustart

Hi zusammen,

ich haben folgendes Problem. Wenn ich meine Netzlaufwerke nicht manuell aushänge, dauert das Herunterfahren oder Neustarten super lang, ich vermute, weil das Laufwerk noch eingebunden ist.
Eingebunden werden sie mit einem Dispatcherskript wie folgt:

#!/bin/bash

##aktuelles Netzwerk bestimmen
current_Network=$(iw dev | grep ssid | cut -d' ' -f 2)
##Name des Internets
inter_NW="WLAN-Inter"
##Name des Intranets
intra_NW="WLAN-Intra"
  
                
                ##Nach Aufbau zum Intranet
                if [ "$current_Network" = "$intra_NW" ]; then
                        #cat > /home/luke/Desktop/test.txt
                        #sleep 2
                        mount -t cifs -o username=xyz,password=xyz,vers=1.0,uid=1000,gid=1000  //192.168.123.123/xyz/ /xyz                        
                fi
                
                if [ "$current_Network" = "$inter_NW" ]; then
                        #cat > /home/luke/Desktop/test.txt
                        #sleep 2
                        mount -t cifs -o username=xyz,password=xyz,vers=1.0,uid=1000,gid=1000  //192.168.123.123/xyz/ /xyz                       
                fi

Das funktioniert auch bestens.

Jetzt wollte ich das Problem mit einem systemd Dienst lösen.
Habe ein Skript angelegt

sudo nano /etc/rc.local.shutdown

mit folgendem Inhalt

#!/bin/bash
umount -a -t cifs

Ich weiß, ist nicht viel, soll ja auch nicht viel machen smile Ausführbar gemacht.

Dann einen Service angelegt mit

[Unit]
Description=/etc/rc.local.shutdown Compatibility
ConditionFileIsExecutable=/etc/rc.local.shutdown
DefaultDependencies=no
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/etc/rc.local.shutdown
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

und gestartet mit

systemctl enable rc-local-shutdown.service

Test mit

systemd-analyze verify rc-local-shutdown.service

läuft sauber durch.

Ausgabe von systemctl status

systemctl status rc-local-shutdown.service
● rc-local-shutdown.service - /etc/rc.local.shutdown Compatibility
     Loaded: loaded (/usr/lib/systemd/system/rc-local-shutdown.service; enabled; vendor pre>
     Active: active (exited) since Sat 2021-03-13 16:31:45 CET; 15min ago
    Process: 241 ExecStart=/etc/rc.local.shutdown (code=exited, status=0/SUCCESS)
   Main PID: 241 (code=exited, status=0/SUCCESS)

was für mich sauber ausschaut.

Wenn ich das Skript manuell starte, tut es, was es soll. Das eingebundene LW wird ausgehängt.

Jemand von Euch eine Idee?

VG

Lukas

Offline

#2 13.03.2021 18:10:45

chepaz
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

Für so ein Konstrukt würde es sich anbieten sich mit einem Automounter zu beschäftigen. Entweder systemd-automount oder etwas klassischer autofs. Es gibt noch andere aber das dürften die bekanntesten sein.

Benötigt nur Bordmittel und keine Scripte.

Edit: Ich mutmaße mal das dein Netzwerk schon weg ist bevor dein Script zum Zug kommt beim Shutdown und keine Chance hat dann noch zu unmounten. Oder was war die Frage? wink

Beitrag geändert von chepaz (13.03.2021 18:53:51)

Offline

#3 13.03.2021 20:03:57

drcux
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

Vorher vom NetworkManager unmounten lassen?

/etc/NetworkManager/dispatcher.d/pre-down.d

Online

#4 13.03.2021 20:19:17

_Ardbeg_
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

Hi zusammen,

@chepaz: ich werde mal nach den Stichworten suchen, sagen mir alle nichts
@drcux: da habe ich bereits ein Skript, wenn ich zwischen den Netzwerken wechsel:

#!/bin/bash

##aktuelles Netzwerk bestimmen
current_Network=$(iw dev | grep ssid | cut -d' ' -f 2)
##Name des Internets
inter_NW="WLAN-Inter"
##Name des Intranets
intra_NW="WLAN-Intra"


            
                ##Nach Aufbau zum Intranet
                if [ "$current_Network" = "$intra_NW" ]; then 
                      umount /xyz
                      #cat > /home/luke/Desktop/test.txt
                fi
                if [ "$current_Network" = "$inter_NW" ]; then 
                      umount /xyz
                      #cat > /home/luke/Desktop/test.txt
                fi

Und ja, die Frage ist, warum das nicht funktioniert smile

Offline

#5 13.03.2021 20:34:30

_Ardbeg_
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

@chepaz: verstehe ich das richtig, dass ich lediglich beim mounten

x-systemd.automount

als Parameter hinzufügen müsste?

Offline

#6 13.03.2021 20:43:19

drcux
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

1. Wird dein pe-down-Script überhaupt aufgerufen?

2. Warum "current_Network"? Du bekommst doch zB. CONNECTION_ID mit. Was sonst noch so an Variablen gesetzt wird siehst du mit:

printenv >&2

Im Journal kannst du dann sehen was dem Script mitgegeben wird.

Online

#7 13.03.2021 21:16:58

chepaz
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

_Ardbeg_ schrieb:

@chepaz: ...

Wie bei allem: Es kommt drauf an.
Ich halte hier einen Automount für einfacher/unproblematischer als um einen mount herum zu scripten. Das geht natürlich auch, falsch ist es auch nicht wenn man das denn tun möchte.

AutoFS ist recht "alt" und oldschool, funktioniert aber gut, die Einrichtung ist nicht ganz trivial. Ich würde "heute" systemd den Vorzug geben:
https://wiki.archlinux.org/index.php/Autofs

Systemd.automount, das Archwiki schweigt sich da tatsächlich aus mit detailierten Beschreibungen:
https://wiki.archlinux.org/index.php/systemd
https://wiki.archlinux.org/index.php/Fs … th_systemd

Beispiel eines Eintrags in der fstab:

\\\meinserver\share		/mnt/meinserver/share	cifs	noauto,x-systemd.automount,x-systemd.mount-timeout=30,_netdev,vers=3.1.1,username=chepaz,credentials=/foo/bar/.smb_creds,uid=1000,gid=1000,file_mode=0644,dir_mode=0755	0  0

Funktion ist bei AutoFS und systemd.automount die selbe, sobald $irgendwas auf dein lokales mount-Verzeichnis zugreift wird gemounted und der mount solange gehalten wie der Zugriff aktiv ist. Wenn nichts mehr zugreift läuft der Timeout, ist der abgelaufen passiert ein umount auf dem Verzeichnis. Wenn wieder etwas zugreift, wieder mount, Timeout, unmount... usw. usf.

Versucht etwas "im falschen Netz" dadurch zu mounten hängt die Shell oder dein Filemanager im schlimmsten Fall ein paar Sekunden/Minuten da das Share ja nicht da ist.

Aber wie gesagt, was hier besser ist musst du selbst entscheiden. Gebe zu, dein Script zum laufen zu bewegen hat auch seinen Reiz.


Edit:

Wie wird dein Netzwerk verwaltet? Benutzt du den networkmanager? Das ist nicht ganz klar, du nennst es "Dispatcherscript", aber ist überhaupt Networkmanager im Spiel?

Edit#2:
Dein "before shutdown"-service wird noch etwas wie

After=network-online.target
Wants=network-online.target

benötigen.
Wenn NM im Spiel ist wäre der Vorschlag von drcrux sicher schöner.

Beitrag geändert von chepaz (13.03.2021 21:39:23)

Offline

#8 13.03.2021 22:04:42

_Ardbeg_
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

Ach Leute, ich fuchtel ja inzwischen seit glaube ich sechs Jahren mit Arch rum, aber neben Euch kommt man sich einfach vor wie ein Grundschüler; ich werde nie begreifen, wie Ihr an Euer Wissen gekommen seid... wink

Ihr habt schon richtig antizipiert, bei mir läuft der NM.

Das Pre-Down Skript wird im "normalen" Betrieb sicher ausgeführt. Wenn ich die Verbindung zum aktuellen Netzwerk trenne, dann wird das Laufwerk entsprechend ausgehangen. Sobald ich mit dem neuen Netzwerk verbunden bin, wird das neue LW angebunden.

Ich hätte auch vermutet, dass beim Runterfahren vorher die Verbindung getrennt würde und damit dieses Skript ausgeführt würde, aber anscheinend wird einfach der ganze NM deaktiviert oder sowas.

printenv >&2

gehört dann einfach irgendwo in das pre-down Skript?

Danke Euch!

Edit: vielleicht versuche ich beide Varianten zum Laufen zu bringen, vielleicht bleibt ja wieder ein bisschen was hängen smile

Beitrag geändert von _Ardbeg_ (13.03.2021 22:08:16)

Offline

#9 13.03.2021 22:26:55

_Ardbeg_
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

Habe den Mountbefehl wie folgt geändert:

mount -t cifs -o username=xyz,x-systemd.automount,x-systemd.mount-timeout=30,password=nsaxyz,vers=1.0,uid=1000,gid=1000  //192.168.2.15/public/ /xyz

Seltsamerweise funktioniert es jetzt beim Neustarten (praktisch keine Wartezeit), aber nicht beim Runterfahren (zwei drei Minuten bis er runter fährt).

Offline

#10 14.03.2021 12:46:42

chepaz
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

_Ardbeg_ schrieb:

Habe den Mountbefehl wie folgt geändert: ...

Obacht, ich glaube du verwechselst hier was. Der systemd.automount gehört in die fstab und funktioniert dann nach einem Reboot "einfach so".

Wenn du deine eigenen Scripte/Services beibehalten willst musst du rausfinden(tm) wo es hängt. Hier würde ich in die Richtung "Netzwerk weg bevor Script ausgeführt wird" suchen.

Offline

#11 14.03.2021 18:00:09

_Ardbeg_
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

Hi chepaz,

danke für den Hinweis, das hatte ich tatsächlich falsch verstanden. Dazu dann aber noch ein Rückfrage. Ich würde dann in der fstab zwei zusätzliche Einträge vornehmen, wobei je nach Netzwerk immer eines ins "Leere" laufen würde. Gibt das ein Problem?
@drcux: wie ist das mit dem

printenv >&2

?

Muss das ins Skript und ich bekäme dann entsprechende Einträge ins Journal?

Danke und Gruß!

Offline

#12 14.03.2021 19:02:03

chepaz
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

_Ardbeg_ schrieb:

Ich würde dann in der fstab zwei zusätzliche Einträge vornehmen, wobei je nach Netzwerk immer eines ins "Leere" laufen würde. Gibt das ein Problem?

Sicherlich muss dein Mountpoint eindeutig sein, sonst kann systemd nicht wissen was zu tun ist. Ansonsten, mit "noauto" als Option, wird erst versucht zu mounten wenn irgendwas versucht auf den Mountpoint zuzugreifen.

Offline

#13 14.03.2021 19:29:16

drcux
Mitglied

Re: umount NAS vor Herunterfahren oder Neustart

"printenv >&2" einfach in das Skript, dann siehst du die Ausgabe im Journal.

Habe es selber gerade getestet:

cat /etc/NetworkManager/dispatcher.d/pre-down.d/test.sh

#!/bin/bash
printenv >&2

bringt im Journal unter anderem:

Mär 14 18:32:30 detlef-x230l nm-dispatcher[2020]: CONNECTION_ID=dmmg

Beitrag geändert von drcux (14.03.2021 19:34:53)

Online

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums