ubuntuusers.de

Mountscript

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

dippes

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

script für automatisches mounten

Ich habe hier ein Script welches automatisch die Netzwerklaufwerke mounten soll Aber dies will nicht funktionieren.

wenn ich das Script ausführe tut sich nichts ausser einer Fehlermeldung

Ein manuelles mounten der Laufwerke funktioniert tadellos.

Was ist an dem Script falsch?

mount.nfs: Connection timed out
 mount.nfs: Connection timed out
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash

if [ -z "$(/bin/grep '192.168.1.33:/mnt/disk1/Musik' /proc/mounts)" ]; then
   if [ "$(ping -c1 "192.168.1.33" | grep -c "seq")" -eq 1 ]; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Musik\" to \"/mnt/Nas/Musik\""
      mount 192.168.1.33:/mnt/disk1/Musik /mnt/Nas/Musik
   fi
fi

if [ -z "$(/bin/grep '192.168.1.33:/mnt/disk1/Linux' /proc/mounts)" ]; then
   if [ "$(ping -c1 "192.168.1.33" | grep -c "seq")" -eq 1 ]; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Linux\" to \"/mnt/Nas/Linux\""
      mount 192.168.1.33:/mnt/disk1/Linux /mnt/Nas/Linux
   fi
fi

if [ -z "$(/bin/grep '192.168.1.77:/srv/video' /proc/mounts)" ]; then
   if [ "$(ping -c1 "192.168.1.77" | grep -c "seq")" -eq 1 ]; then
      echo "Mounting \"192.168.1.77:/srv/video\" to \"/mnt/VDR-Server/Videofilme\""
      mount 192.168.1.77:/srv/video /mnt/VDR-Server/Videofilme
   fi
fi

if [ -z "$(/bin/grep '192.168.1.102/multimedia' /proc/mounts)" ]; then
   if [ "$(ping -c1 "192.168.1.102" | grep -c "seq")" -eq 1 ]; then
      echo "Mounting \"//192.168.1.102/multimedia\" to \"/mnt/windows\""
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxxx,password=xxx
   fi
fi

exit 0

Vito_Leone

Anmeldungsdatum:
4. September 2009

Beiträge: Zähle...

Hallo dippes,

wieso verwendest Du zum automatischen Mounten keine Einträge in der fstab?

Mit Grüßen

Vito

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

Vito Leone schrieb:

Hallo dippes,

wieso verwendest Du zum automatischen Mounten keine Einträge in der fstab?

Mit Grüßen

Vito

Weil die Server nicht ständig eingeschaltet sind, und dadurch das starten des Clienten erheblich verzögert wird.

Vito_Leone

Anmeldungsdatum:
4. September 2009

Beiträge: 204

Weil die Server nicht ständig eingeschaltet sind, und dadurch das starten des Clienten erheblich verzögert wird.

Dann würde sich doch die Mountoption noauto anbieten. Was spricht dagegen?

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

Vito Leone schrieb:

Weil die Server nicht ständig eingeschaltet sind, und dadurch das starten des Clienten erheblich verzögert wird.

Dann würde sich doch die Mountoption noauto anbieten. Was spricht dagegen?

Weil das dann Händisch gemountet werden muß. Das ist nichts für meine Frau.

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21852

Wohnort: Lorchhausen im schönen Rheingau

Abgesehen davon, dass deine Tests arg kompliziert sind, wann führst Du denn die Skripte aus? Kann es zB sein, dass Du auf "on" am "Server" drückst und direkt das Skript losrennt? Als welcher user fürhst Du die tests in der Konsole aus und als welcher läuft das Skript?

Edit: Ich hab mal einen Test für dich etwas vereinfacht:

1
2
3
4
5
6
if grep -q '192.168.1.33:/mnt/disk1/Musik' /proc/mounts; then
   if ping -c 2 "192.168.1.33" >/dev/null; then
      echo 'Mounting "192.168.1.33:/mnt/disk1/Musik" to "/mnt/Nas/Musik"'
      mount 192.168.1.33:/mnt/disk1/Musik /mnt/Nas/Musik
   fi
fi

SatGuru

Avatar von SatGuru

Anmeldungsdatum:
20. August 2011

Beiträge: 145

Wohnort: Schwerte

Mit noauto in der fstab brauch es einen Klick in Nautilus... Also ich habe hier eine ähnliche Konstellation und das klappt einfach.

Gruß

SatGuru

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

Habe das Script abgeändert...habe die Abfrage /proc/mounts rausgeschmissen. Gestartet wird das Script mit crontab -e beim Systemstart und danach alle 5 Minuten.

Jetzt werden automatisch das Nas und der VDR gemountet.

Beim /mnt/windows\ gibt es noch Probleme.Windows wird nicht beim Systemstart und auch nicht danach gemounted obwohl online.Erst wenn ich das Script händisch starte.Hat da wer ne Ahnung was da faul ist?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

#!/bin/bash

   if ping -c 2 "192.168.1.102" >/dev/null; then
      echo "Mounting \"//192.168.1.102/multimedia\" to \"/mnt/windows\""
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxxx,password=xxxxx
   fi

    if ping -c 2 "192.168.1.33" >/dev/null; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Musik\" to \"/mnt/Nas/Musik\""
      mount 192.168.1.33:/mnt/disk1/Musik /mnt/Nas/Musik
   fi

   if ping -c 2 "192.168.1.33" >/dev/null; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Linux\" to \"/mnt/Nas/Linux\""
      mount 192.168.1.33:/mnt/disk1/Linux /mnt/Nas/Linux
   fi

   if ping -c 2 "192.168.1.77" >/dev/null; then
      echo "Mounting \"192.168.1.77:/srv/video\" to \"/mnt/VDR-Server/Videofilme\""
      mount 192.168.1.77:/srv/video /mnt/VDR-Server/Videofilme
   fi

exit 0

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21852

Wohnort: Lorchhausen im schönen Rheingau

dippes schrieb:

Habe das Script abgeändert...habe die Abfrage /proc/mounts rausgeschmissen.

Warum? Die Idee war nicht schlecht, nur deine Ausführung eben verbesserungwürdig 😉

Erst wenn ich das Script händisch starte.

Wenn das der Fall ist, ist der erste Tip immer die Umgebungsvariablen. was passiert wenn du

env -i dein_skript.sh

machst?

1
2
3
4
5
6
#!/bin/bash
   if ping -c 2 "192.168.1.102" >/dev/null; then
      echo "Mounting \"//192.168.1.102/multimedia\" to \"/mnt/windows\""
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxxx,password=xxxxx
   fi
exit 0

Wenn das Skript per Crontab läuft, warum genau hast Du die echos drin? Wer liest die?Ändere mal wie folgt ab:

1
2
3
4
5
6
#!/bin/bash
   if ping -c 2 "192.168.1.102" >/dev/null; then
      echo 'Mounting "//192.168.1.102/multimedia" to "/mnt/windows"' >> /tmp/mountskript
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxxx,password=xxxxx >> /tmp/mountskript
   fi
exit 0

Anschließend in /tmp/mountskript die Ausgaben der Befehle prüfen.

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

Habe die Ausgaben jetzt in /tmp/moundscript umgeleitet

hier der Inhalt

Mounting "//192.168.1.102/multimedia" to "/mnt/windows" >>/tmp/mountscript
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxxx,password=xxx >>/tmp/mountscript
   fi

    if ping -c 2 "192.168.1.33" >/dev/null; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Musik\" to \"/mnt/Nas/Musik\""
Mounting "192.168.1.33:/mnt/disk1/Linux" to "/mnt/Nas/Linux" >>/tmp/mountscript
      mount 192.168.1.33:/mnt/disk1/Linux /mnt/Nas/Linux >>/tmp/mountscript
   fi

   if ping -c 2 "192.168.1.77" >/dev/null; then
      echo "Mounting \"192.168.1.77:/srv/video\" to \"/mnt/VDR-Server/Videofilme\""

Aber Windows und Linux sind nicht gemounted.

bei einem manuellen start kommt das, und bleibt hängen

env -i mountscript.sh
mount.nfs: /mnt/Nas/Musik is busy or already mounted
mount.nfs: Connection timed out

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21852

Wohnort: Lorchhausen im schönen Rheingau

  1. nimm mal den Check wieder dazu, dass nur fehlende Mounts ausgeführt werden. Um die anderen müssen wir uns ja nicht kümmern.

  2. Bittebittebitte, mit Handkuss und Zuckerguss, mach mal das eledigliche Escpaing in deinem echo weg und nutze, wie ich schon mehrfach im Beispiel gemacht hab einfache und doppelte Quotes. So kann das doch keiner lesen.

  3. Außerdem zeige deine kompletten Aufrufe. Hast Du dein Skript als user oder als root aufgerufen?

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

nimm mal den Check wieder dazu, dass nur fehlende Mounts ausgeführt werden. Um die anderen müssen wir uns ja nicht kümmern.

Mit dem Check wird leider nichts gemounted

Bittebittebitte, mit Handkuss und Zuckerguss, mach mal das eledigliche Escpaing in deinem echo weg und nutze, wie ich schon mehrfach im Beispiel gemacht hab einfache und doppelte Quotes. So kann das doch keiner lesen.

Ohh,was meinst Du damit?

Hast Du dein Skript als user oder als root aufgerufen?

Das Script wird als Root aufgerufen

Komme gerade nicht an den PC ran...

redknight Team-Icon

Moderator & Supporter
Avatar von redknight

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 21852

Wohnort: Lorchhausen im schönen Rheingau

dippes schrieb:

nimm mal den Check wieder dazu, dass nur fehlende Mounts ausgeführt werden. Um die anderen müssen wir uns ja nicht kümmern.

Mit dem Check wird leider nichts gemounted

So, wie ich ihn geschrieben habe?

Bittebittebitte, mit Handkuss und Zuckerguss, mach mal das eledigliche Escpaing in deinem echo weg und nutze, wie ich schon mehrfach im Beispiel gemacht hab einfache und doppelte Quotes. So kann das doch keiner lesen.

Ohh,was meinst Du damit?

Schau dir einfach mal den UNterschied zwischen meinen echos und deinen an…

Hast Du dein Skript als user oder als root aufgerufen?

Das Script wird als Root aufgerufen

echter root-Account oder sudo?

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

Ich habe das Script jetzt das mounten von Windows beschränkt

Beim Systemstart tut sich nichts.Beim manuellen Ausführen wird gemounted

1
2
3
4
5
6
#!/bin/bash
   if ping -c 2 "192.168.1.102" >/dev/null; then
      echo 'Mounting "//192.168.1.102/multimedia" to "/mnt/windows"' >> /tmp/mountskript
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxxx,password=xxxxx >> /tmp/mountskript
   fi
exit 0

Hier der Eintrag von Crontab -e

1
2
@reboot /usr/sbin/mountscript.sh >/dev/null 2>&1
*/5 * * * * /usr/sbin/mountscript.sh >/dev/null 2>&1

echter root-Account oder sudo?

als sudo -s

Ich hoffe es ist jetzt übersichtlicher

dippes

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2009

Beiträge: 553

jetzt habe ich mein mountscript

so

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

   if ping -c 2 "192.168.1.102" >/dev/null; then
      echo "Mounting \"//192.168.1.102/multimedia\" to \"/mnt/windows\""' >>/tmp/mountscript
      mount.cifs //192.168.1.102/multimedia /mnt/windows -o username=xxx,password=xxx >>/tmp/mountscript
   fi

    if ping -c 2 "192.168.1.33" >/dev/null; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Musik\" to \"/mnt/Nas/Musik\""'>> /tmp/mountscript
      mount 192.168.1.33:/mnt/disk1/Musik /mnt/Nas/Musik >>/tmp/mountscript
   fi

   if ping -c 2 "192.168.1.33" >/dev/null; then
      echo "Mounting \"192.168.1.33:/mnt/disk1/Linux\" to \"/mnt/Nas/Linux\""' >>/tmp/mountscript
      mount 192.168.1.33:/mnt/disk1/Linux /mnt/Nas/Linux >>/tmp/mountscript
   fi

   if ping -c 2 "192.168.1.77" >/dev/null; then
      echo "Mounting \"192.168.1.77:/srv/video\" to \"/mnt/VDR-Server/Videofilme\""' >>/tmp/mountscript
      mount 192.168.1.77:/srv/video /mnt/VDR-Server/Videofilme >>/tmp/mountscript
   fi

exit 0

und crontab -e so eingestellt

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h  dom mon dow   command
@reboot /usr/sbin/mountscript.sh >/dev/null 2>&1
*/5 * * * * /usr/sbin/mountscript.sh >/dev/null 2>&1

Jetzt werden beim Systemstart nur

mnt/Nas/Musik und /mnt/VDR-Server/Videofilme gemounted,dasselbe auch wenn man das Script manuell ausführt.Wieso das denn? Ich werde noch verrückt.

david-pc sbin # ./mountscript.sh
mount.nfs: /mnt/Nas/Musik is busy or already mounted
mount.nfs: /mnt/VDR-Server/Videofilme is busy or already mounted
Antworten |