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
Moderator & Supporter
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: | 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
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
Moderator & Supporter
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? | #!/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:
| #!/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
Moderator & Supporter
Anmeldungsdatum: 30. Oktober 2008
Beiträge: 21852
Wohnort: Lorchhausen im schönen Rheingau
|
nimm mal den Check wieder dazu, dass nur fehlende Mounts ausgeführt werden. Um die anderen müssen wir uns ja nicht kümmern. 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. 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
Moderator & Supporter
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 | #!/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 | @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
|