1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Netzwerklaufwerk per shell mounten??

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von bw1faeh0, 13.02.10.

  1. bw1faeh0

    bw1faeh0 Uelzener Rambour

    Dabei seit:
    06.01.08
    Beiträge:
    368
    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
    
     
  2. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.893
    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;
     
    
     
  3. bw1faeh0

    bw1faeh0 Uelzener Rambour

    Dabei seit:
    06.01.08
    Beiträge:
    368
    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
    
     
  4. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.893
    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.
     
    #4 Rastafari, 13.02.10
    Zuletzt bearbeitet: 13.02.10
    bw1faeh0 gefällt das.
  5. bw1faeh0

    bw1faeh0 Uelzener Rambour

    Dabei seit:
    06.01.08
    Beiträge:
    368
    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 ;)
     
  6. Irgendein Held

    Irgendein Held Oberösterreichischer Brünerling

    Dabei seit:
    17.06.07
    Beiträge:
    714
    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".
     
  7. bw1faeh0

    bw1faeh0 Uelzener Rambour

    Dabei seit:
    06.01.08
    Beiträge:
    368
    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:Pass@192.168.1.2/"$SHARE" /Volumes/"$SHARE";
    		
    		if [ $? -eq 0 ];
    			then
        				WASMOUNTED=FALSE;
    			else
        				WASMOUNTED=TRUE;
    	    			rmdir /Volumes/"$SHARE";
    		fi;
    fi
    
    Jedoch bekomme ich noch folgende Meldung:
    Ich vermute das Leerzeichen in der Variable $SHARE...
     
  8. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.893
    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)
     
  9. bw1faeh0

    bw1faeh0 Uelzener Rambour

    Dabei seit:
    06.01.08
    Beiträge:
    368
    Ahhhhh!
    Daran habe ich natürlich nicht gedacht, aber ergibt Sinn :)
    Jetzt scheint alles zu laufen :)

    Vielen Dank!
     

Diese Seite empfehlen