Ergebnis 1 bis 9 von 9
  1. #1
    Ontario
    Themenstarter
    Avatar von bw1faeh0
    Registriert
    01.2008
    Beiträge
    351

    Netzwerklaufwerk per shell mounten??

    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. #2
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    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. #3
    Ontario
    Themenstarter
    Avatar von bw1faeh0
    Registriert
    01.2008
    Beiträge
    351
    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. #4
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    Kleine Debugging-Hilfe:
    Code:
    if [ -e /Volumes/"$SERVER" ]
    	then
    		echo "/Volumes/"$SERVER "bereits gemountet"
    		WASMOUNTED=TRUE
    	else
    		mkdir /Volumes/"$SERVER"
    		mount_smbfs smb://192.168.1.2/"$SERVER" /Volumes/"$SERVER"
    		WASMOUNTED=FALSE
    fi


    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.
    Geändert von Rastafari (13.02.2010 um 19:12 Uhr)

  5. #5
    Ontario
    Themenstarter
    Avatar von bw1faeh0
    Registriert
    01.2008
    Beiträge
    351
    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. #6
    Apfel der Erkenntnis Avatar von Irgendein Held
    Registriert
    06.2007
    Ort
    bei Bonn
    Beiträge
    731
    Zitat Zitat von bw1faeh0 Beitrag anzeigen
    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".
    52 2E 54 2E 46 2E 4D 21 0A 44 65 6E 6E 1F 73 69 65 1F 77 69 73 73 65 6E 1F 6E 69 63 68 74 2C 1F 77 61 73 1F 73 69 65 1F 74 75 6E 21

    Make it idiot-proof, and they'll make a better idiot.

  7. #7
    Ontario
    Themenstarter
    Avatar von bw1faeh0
    Registriert
    01.2008
    Beiträge
    351
    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:
    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...

  8. #8
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    Zitat Zitat von bw1faeh0 Beitrag anzeigen
    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)

  9. #9
    Ontario
    Themenstarter
    Avatar von bw1faeh0
    Registriert
    01.2008
    Beiträge
    351
    Ahhhhh!
    Daran habe ich natürlich nicht gedacht, aber ergibt Sinn
    Jetzt scheint alles zu laufen

    Vielen Dank!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •