• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Netzwerklaufwerk per shell mounten??

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Hallo Leute,

ich bin dabei ein kleines Shell-Skript zu schreiben, dass mir automatisch per rsync Daten von einem Netzwerklaufwerk auf eine lokale Festplatte spiegelt. Nun möchte ich, dass das Skript automatisch das Netzwerklaufwerk mountet, falls es nicht bereits gemountet ist... Leider weiß ich nicht, wie ich mit 'mount' Netzwerklaufwerke mounte. Kann mir da jemand helfen?

Das ist mein bisheriger Versuch:
Code:
# Volume mounten, falls noch nicht gemountet
if [ -e $SERVER ]
	then
		echo $SERVER "bereits gemountet"
		WASMOUNTED=TRUE
	else
		mount volume "smb://192.168.1.2/www"
		WASMOUNTED=FALSE
fi
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Code:
mntpt="/Volumes/Volume-Name";
smbuser="foo";
smbpass="bar";
smbserver="smb://192.168.0.1";
smbshare="Share-Name";

mkdir -pm 777 "$mntpt";

mount  -t smbfs  -o automounted,soft  \
    //"$smbuser":"$smbpass"@"$smbserver"/"$smbshare"  "$mntpt";
 
if [ $? -eq 0 ];
then
    SUCCESS="yes";
else
    SUCCESS="no";
    rmdir "$mntpt";
fi;
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Danke!
Habe es aber jetzt so gemacht:
mount_smbfs ist das Schlüsselwort ;)

Code:
# Volume mounten, falls noch nicht gemountet
if [ -e $SERVER ]
	then
		echo "/Volumes/"$SERVER "bereits gemountet"
		WASMOUNTED=TRUE
	else
		mkdir /Volumes/$SERVER
		mount_smbfs //192.168.1.2/$SERVER /Volumes/$SERVER
		WASMOUNTED=FALSE
fi
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Kleine Debugging-Hilfe:
Code:
if [ -e [COLOR="blue"]/Volumes/"[/COLOR]$SERVER[COLOR="blue"]"[/COLOR] ]
	then
		echo "/Volumes/[COLOR="red"]"[/COLOR]$SERVER [COLOR="red"]"[/COLOR]bereits gemountet"
		WASMOUNTED=TRUE
	else
		mkdir /Volumes/[COLOR="blue"]"[/COLOR]$SERVER[COLOR="blue"]"[/COLOR]
		mount_smbfs [COLOR="blue"]smb:[/COLOR]//192.168.1.2/[COLOR="blue"]"[/COLOR]$SERVER[COLOR="blue"]"[/COLOR] /Volumes/[COLOR="blue"]"[/COLOR]$SERVER[COLOR="blue"]"[/COLOR]
		WASMOUNTED=FALSE
fi
:cool:

BTW
"mount_smbfs" und "mount -t smbfs" sind prinzipiell äquivalent.
Letztere Verwendungsweise ist aber als transparente Darstellung vom konkreten VFS-Treiber abstrahiert und daher zu bevorzugen.
Genauer:
Letzteres sieht im Ordner /System/Library/Filesystems/ nach, welche externen Dateisystemtreiber bei dir installiert sind, findet dort für den SMB Service das Paket "smbfs.fs", wertet die darin befindlichen Informationen aus und weiss dann, dass du das Kommando "mount_smbfs" benötigst.

"mount -t externaltype" dient als intelligenter Wrapper für jede Form von Dateisystem. Ergänzt du deine Systemsoftware durch eine alternative und bessere Software zum SMB-Zugriff, wird dadurch ohne weiteres Zutun die neuere benutzt. Ein "mount_smbfs" zeigt jedoch immer auf ein ganz konkretes Programm aus einer ganz bestimmten Softwaredistribution und müsste ggf. erst angepasst werden.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: bw1faeh0

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Also die Anführungsstriche um $SERVER benötige ich nicht, geht auch so. "smb:" lasse ich auch weg. Volumes in -e /Volumes/"$SERVER" hatte ich vergessen, stimmt ;)
 

Irgendein Held

Oberösterreichischer Brünerling
Registriert
17.06.07
Beiträge
714
Also die Anführungsstriche um $SERVER benötige ich nicht [...]
Und JETZT such dir bitte eine gescheite Lektuere zum Shellscripting und LERNE daraus.

Wenn dir schon jemand beim Debugginghilfe gibt, dann nimm sie auch an und tu sie nicht ab als wuesstest du es besser, oder einfach mit "geht aus so blabla sabbel".
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Ich dachte, dass ich die Anführungsstriche weglassen kann, wenn ich die Leerzeichen in der Variable $SERVER mit einem Backslash schütze, aber scheinbar habe ich mir das einfacher vorgestellt, als es eigentlich ist. Habe sie jetzt drin.

Aber irgendwie scheint es doch noch nicht ganz zu klappen... So sieht es derzeit aus:

Code:
# Informatioen ausgeben
echo "Quelle: /192.168.1.2/$SHARE"
echo "Ziel:   $DATA_PATH"

# Volume mounten, falls noch nicht gemountet
if [ -e /Volumes/"$SHARE" ]
	then
		echo "/Volumes/$SHARE bereits gemountet"
		WASMOUNTED=TRUE
	else
		mkdir /Volumes/"$SHARE"
		mount -t smbfs -o automounted,soft //Admin:[email protected]/"$SHARE" /Volumes/"$SHARE";
		
		if [ $? -eq 0 ];
			then
    				WASMOUNTED=FALSE;
			else
    				WASMOUNTED=TRUE;
	    			rmdir /Volumes/"$SHARE";
		fi;
fi

Jedoch bekomme ich noch folgende Meldung:
Debug eingeschaltet
Quelle: /192.168.1.2/iMac Backup
Ziel: /Volumes/Server-Backup/iMac Backup
mount_smbfs: URL parsing failed, please correct the URL and try again: Invalid argument

Ich vermute das Leerzeichen in der Variable $SHARE...
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ich vermute das Leerzeichen in der Variable $SHARE...
Da hast du recht. Das ist eine URL und URLs können keine Leerzeichen enthalten.
Sie sind (wie im gesamten Internet) im SGML-Stil zu maskieren: %20
(Prozentzeichen gefolgt vom Hexadezimalcode)
 

bw1faeh0

Uelzener Rambour
Registriert
06.01.08
Beiträge
370
Ahhhhh!
Daran habe ich natürlich nicht gedacht, aber ergibt Sinn :)
Jetzt scheint alles zu laufen :)

Vielen Dank!