Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14
  1. #1
    Goldparmäne
    Themenstarter

    Registriert
    02.2011
    Ort
    alpenländischer Raum
    Alter
    19
    Beiträge
    557

    USB-Stick mounten und umounten in der bash

    Hallo,

    ich schreib da auch jetz mal was.

    Ich möchte folgendes:

    • Ich will einen USB-Stick an ein MacBook anstecken.
    • Dort liegt eine Script datei (bash).
    • Die soll ausgeführt werden.
    • Anschließend soll der Stick ausgeworfen werden.
    • Wenn geht mit einer Pop-Up-Message-Box.

    ist das realisierbar?

    Ich kann halbwegs mit der Bash arbeiten, hab aber selbst noch kein
    Macbook zum probieren.

    LG Roland

  2. #2
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    1) Eine "Autorun" Funktion gibt es in OS X nicht.
    Du kannst aber mittels "launchd" einen Hintergrunddienst (LaunchAgent oder LaunchDaemon) basteln, der bei jedem Mountvorgang aufgerufen wird und der auf ein bestimmtes Kriterium hin eine Prüfung vornehmen kann (zB nach Volumenamen, einer Volume-UUID oder einer bestimmten Datei, die einen gewünschten Vorgang triggern soll.)

    2) Ums mounten brauchst du dich nicht zu kümmern, das erledigt sich von selbst.
    Das deaktivieren bzw auswerfen per Shell erledigt man mittels "diskutil".

    3) Message-Boxen aus einem Shellskript heraus sind auf verschiedene Arten machbar. Möglich sind zB das Einbinden eines minimalistischen AppleSkripts (via "osascript") oder die Verwendung eines speziell für solche Zwecke geschriebenen Hilfsprogramms (zB "CocoaDialog" oder "Pashua" - das allseits verhasste "Growl" muss man sich dazu nicht antun.)

  3. #3
    Galloway Pepping Avatar von fyysh
    Registriert
    01.2010
    Ort
    Rheinknie
    Alter
    33
    Beiträge
    1.348
    Wieso ist Growl "allseits verhasst"?
    The cause of the problem is:
    Don't worry; it's been deprecated.
    The new one is worse.

  4. #4
    Goldparmäne
    Themenstarter

    Registriert
    02.2011
    Ort
    alpenländischer Raum
    Alter
    19
    Beiträge
    557
    Zitat Zitat von Rastafari
    1) Eine "Autorun" Funktion gibt es in OS X nicht.
    Du kannst aber mittels "launchd" einen Hintergrunddienst (LaunchAgent oder LaunchDaemon) basteln, der bei jedem Mountvorgang aufgerufen wird und der auf ein bestimmtes Kriterium hin eine Prüfung vornehmen kann (zB nach Volumenamen, einer Volume-UUID oder einer bestimmten Datei, die einen gewünschten Vorgang triggern soll.)
    Keine Autorun-Funktion?

    Zitat Zitat von Rastafari
    2) Ums mounten brauchst du dich nicht zu kümmern, das erledigt sich von selbst.
    Das deaktivieren bzw auswerfen per Shell erledigt man mittels "diskutil".
    Ich will den Stick anstecken, den Bash-Script öffnen (einfach auf die blabla.sh klicken? Hab sie unter Linux ausführbar gemacht.)

    Der Bash-Script soll dann arbeiten, (Wie kann ich auf den Stick zugreifen? Wie kann ich ihn ansprechen, um ein Dokument am Stick zu erstellen?

    und wie geht das mit diskutil? um ihn auszuwerfen? Kann man da mit dem Label arbeiten, dass ich ihm gegeben hab wie ich ihn vfat formatiert hab?

    Zitat Zitat von Rastafari Beitrag anzeigen
    3) Message-Boxen aus einem Shellskript heraus sind auf verschiedene Arten machbar. Möglich sind zB das Einbinden eines minimalistischen AppleSkripts (via "osascript") oder die Verwendung eines speziell für solche Zwecke geschriebenen Hilfsprogramms (zB "CocoaDialog" oder "Pashua" - das allseits verhasste "Growl" muss man sich dazu nicht antun.)
    Hättest du ein Beispiel?

    Zitat Zitat von fyysh
    Wieso ist Growl "allseits verhasst"?
    Frag ich mich auch. Wenns verhasst ist, weils nur auf der Konsole ist oder so, dann zählt das nicht, ich verwende ein Linux, das ich aus der Konsole weg gebaut hab.
    Geändert von roland0509 (24.02.2011 um 11:44 Uhr)
     Macbook Pro 13" i5 early 2011  iPod nano 5G 8GB grün  iPod touch 4G 8GB schwarz 
    Man gewöhnt sich an allem. Sogar am Dativ
    Bitcoin: 1A5CQ1T6KSTLSpdVghdtFEHrMM93aQu3wo

  5. #5
    Galloway Pepping Avatar von fyysh
    Registriert
    01.2010
    Ort
    Rheinknie
    Alter
    33
    Beiträge
    1.348
    Keine Autorun-Funktion?
    Nein. Und das ist gut so. Wenn du ein bisschen darüber sinnierst, wird sich dir 100%ig der Grund erschließen.

    Ich will den Stick anstecken, den Bash-Script öffnen (einfach auf die blabla.sh klicken? Hab sie unter Linux ausführbar gemacht.)
    Das kann man automatisieren. Rasta hat dir gesagt wie. Musst nur noch googeln.

    Der Bash-Script soll dann arbeiten, (Wie kann ich auf den Stick zugreifen? Wie kann ich ihn ansprechen, um ein Dokument am Stick zu erstellen
    Das Skript ist doch im root des Sticks, oder? Nutz $0.

    und wie geht das mit diskutil? um ihn auszuwerfen? Kann man da mit dem Label arbeiten, dass ich ihm gegeben hab wie ich ihn vfat formatiert hab?
    Ja. OSX mountet per default nach /Volumes/$LABEL. Oder halt du nutzt $0.


    Hättest du ein Beispiel?
    osascript -e 'tell app "finder"' -e 'activate' -e 'display dialog "hello world"' -e 'end'


    Frag ich mich auch. Wenns verhasst ist, weils nur auf der Konsole ist oder so, dann zählt das nicht, ich verwende ein Linux, das ich aus der Konsole weg gebaut hab.
    Für gewöhnlich hat Rasta andere Gründe für solche Aussagen. Nicht solch triviale.
    Ich bin auf seine Antwort gespannt.
    The cause of the problem is:
    Don't worry; it's been deprecated.
    The new one is worse.

  6. #6
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    Zitat Zitat von roland0509 Beitrag anzeigen
    Keine Autorun-Funktion?
    Nein. Ein latentes Sicherheitsproblem weniger.
    Aber wie gesagt, sowas kann man sich mit ein paar Zeilen Shellskript selber basteln.

    Ich will den Stick anstecken, den Bash-Script öffnen
    Noch mal zur Klarstellung:
    - Das Skript befindet sich auf deinem System? Oder auf dem externen Datenträger?
    - Das Skript soll immer aktiviert werden wenn ein Volume erfasst und gemountet wird, egal von wem?
    Oder nur wenn ein (oder mehrere) bestimmte(r) Benutzer gerade angemeldet ist?

    Wie kann ich auf den Stick zugreifen?
    Der automatisch vergebene Mountpoint liegt immer unterhalb von /Volumes/
    (Das gleiche wäre bei Linux-Distris unter /media/ zu finden)
    Benannt wird er nach dem Volume-Label, falls mehrere gleichzeitig aktive Volumes einen identischen Namen tragen wird vom Automount-Kobold eine aufsteigende Sequenznummer angehängt.

    und wie geht das mit diskutil? um ihn auszuwerfen? Kann man da mit dem Label arbeiten...?
    Funktioniert alles gleichermassen:
    Code:
    diskutil unmountDisk "Volume Label"
    diskutil unmountDisk "/Volumes/Mountpoint"
    diskutil unmountDisk /dev/diskn
    diskutil unmountDisk /dev/disknsy
    diskutil unmountDisk diskn
    diskutil unmountDisk disknsy
    diskutil eject "Volume Label"
    diskutil eject "/Volumes/Mountpoint"
    diskutil eject /dev/diskn
    diskutil eject /dev/disknsy
    diskutil eject diskn
    diskutil eject disknsy
    Die Variante mit 'eject' bewirkt -natürlich nur bei entsprechenden Medientypen- gleichzeitig auch den mechanischen Auswurf, bzw bei USB Geräten die Trennung vom Bus. Die Variante mit 'unmountDisk' dagegen deaktiviert nur die gemounteten Volumes, so dass man sie bei Bedarf gleich wieder erneut mounten kann (d.h. ein USB Gerät bleibt weiterhin physisch ansprechbar).
    Das "Stecker ziehen" ist jedenfalls in beiden Fällen danach auf sichere Weise möglich.

    Frag ich mich auch. Wenns verhasst ist, weils nur auf der Konsole ist oder so
    Nein, eher nicht. Stehst du etwa auf diese penetranten Sprechbläschen, die dir in der Taskbar des Windows Explorers die Tray-Icons "erklären", immer und immer und immer und immer wieder? Naja, jeder wie er/sie es mag...
    Geändert von Rastafari (24.02.2011 um 19:48 Uhr)

  7. #7
    Goldparmäne
    Themenstarter

    Registriert
    02.2011
    Ort
    alpenländischer Raum
    Alter
    19
    Beiträge
    557
    Zitat Zitat von fyysh
    Nein. Und das ist gut so. Wenn du ein bisschen darüber sinnierst, wird sich dir 100%ig der Grund erschließen.
    Also ich hab unter windows immer schön böse sachen angestellt (bei schulkollegen). So batch scripte mit shutdown und so

    Zitat Zitat von fyysh
    Das kann man automatisieren. Rasta hat dir gesagt wie. Musst nur noch googeln.
    Ist mir glaub ich zu aufwändig. Wenn ich am Stick ein bash.sh aufmache (es ist ausführbar) dann öffnet der das im Terminal und beginnt, oder?

    Zitat Zitat von fyysh
    Das Skript ist doch im root des Sticks, oder? Nutz $0.
    kann ich mit cd $0 also wieder ins root vom Stick? Bzw. es geht also auch ein $0/ordner/sript.sh?

    Zitat Zitat von fyysh
    Ja. OSX mountet per default nach /Volumes/$LABEL. Oder halt du nutzt $0.
    wie heißt denn das dann unter mac? geht da ein "umount /Volumes/STICK" wie unter Linux?

    Zitat Zitat von fyysh
    osascript -e 'tell app "finder"' -e 'activate' -e 'display dialog "hello world"' -e 'end'
    Das war glaub ich verständlich. Wenn ich die Zeile 1:1 kopiere kommt nur "hello world" oder?

    Zitat Zitat von fyysh
    Für gewöhnlich hat Rasta andere Gründe für solche Aussagen. Nicht solch triviale.
    Ich bin auf seine Antwort gespannt.
    Das interessiert mich jetzt auch.
     Macbook Pro 13" i5 early 2011  iPod nano 5G 8GB grün  iPod touch 4G 8GB schwarz 
    Man gewöhnt sich an allem. Sogar am Dativ
    Bitcoin: 1A5CQ1T6KSTLSpdVghdtFEHrMM93aQu3wo

  8. #8
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    Zitat Zitat von roland0509 Beitrag anzeigen
    Wenn ich am Stick ein bash.sh aufmache (es ist ausführbar) dann öffnet der das im Terminal und beginnt, oder?
    Kommt drauf an ob du das Suffix *.sh nicht selbst einem anderen Programm zugeordnet hast, zB einem Texteditor.
    So würde sich das jedenfalls gehören, denn *.sh nennt man nur Entwürfe, Beispielcode oder Skripten die gedacht sind um aus anderen heraus "gesourced" zu werden. Dateien mit *.sh sind (von braven Menschen) als Quelltext zu interpretieren, genau wie *.c , *.h , *.cpp oder ähnliches.
    (Üblicherweise macht man sie daher auch nicht ausführbar, das ist eine Unsitte.)
    Es gibt zwei (funktionell identische) Suffixe, die speziell dem Programm "Terminal.app" gehören und die das gleiche bewirken, das sind *.tool oder *.command - Die Verwendung dieser beiden sorgt für mehr Klarheit.

    kann ich mit cd $0 also wieder ins root vom Stick? Bzw. es geht also auch ein $0/ordner/sript.sh?
    Der Parameter $0 ist der Pfad des gerade ausgeführten Programms/Skripts.

    geht da ein "umount /Volumes/STICK" wie unter Linux?
    Von den "LowLevel" Befehlen aus der Unix-Steinzeit wie mount*, umount, fdisk, gpt, mkfs*, fsck* etc lass mal lieber die Finger. Mit diesen Primitivmitteln hast du als Benutzer keinen Kontakt mehr.
    Benutze nach Möglichkeit immer die höher angesiedelten (sehr viel weitergehend abstrahierten) Framework-Schnittstellen. OS X hat viele "utils" in Petto:
    Für physische Datenträger (DiskManagement.framework) --> diskutil
    Für virtuelle Datenträger (DiskImages.framework) --> hdiutil
    Für optisch beschreibbare Medien (DiskRecording.framework) --> drutil
    Für Hi-Level Text Management --> textutil
    Für die konsolenbasierte Verwaltung des Installationssystems --> pkgutil
    usw usf...

    Kleine Faustregel für frischgebackene "*nix-2-OSX" Umsteiger:
    1) Suche für dein Aufgabengebiet ein passendes Programm namens ????util
    2) Findest du keines, hat es vermutlich irgendein etwas detaillierter orientiertes ????tool dafür
    3) Erst wenn sich auch da nichts brauchbares findet (und wirklich erst dann), denk darüber nach es so zu machen wie es unter den diversen Bastler-Unixen früher mal (aka "nach'm Krieg") üblich war. Die "BSD/GNU Basiswerkzeuge" sind immer nur der letzte Ausweg.

  9. #9
    Galloway Pepping Avatar von fyysh
    Registriert
    01.2010
    Ort
    Rheinknie
    Alter
    33
    Beiträge
    1.348
    <OT>
    Von den "LowLevel" Befehlen aus der Unix-Steinzeit wie mount*...
    Jetzt sag nicht, dass es irgend ein *util oder *tool gibt, um SMB, NFS, AFP... shares zu mounten. Bisher kannte ich das nur über bspw. mount_afp oder mount -t afp. Oder eben über osascript oder open, wobei das ja u.U. Zugang zum GUI erfordert - geht aber um Mounten mit auschließlichem Zugang zum CLI.
    </OT>



    Nein, eher nicht. Stehst du etwa auf diese penetranten Sprechbläschen, die dir in der Taskbar des Windows Explorers die Tray-Icons "erklären", immer und immer und immer und immer wieder? Naja, jeder wie er/sie es mag...
    Achsooo.
    Also diese Windows-Bläschen mag ich auch nicht, aber Growl, nur für die unobtrusiven (sorry, dt. Wort fällt mir grad nicht ein) Meldungen, die man haben will, ist ja gar nicht soooo schlecht. Growl kann man ja auch beeinflussen, so dass du eben nicht mit unnötigem Zeug zugebombert wirst. Das geht (AFAIK) bei den Win Tool Tips nicht, d.h. du hast nur die Wahl zw. alle oder keine - ein wesentlicher Unterschied IMHO.
    Da gibt's übrigens ein commandline Tool namens "growlnotify", ist irgendwo in den Extras auf der Growl-DMG.
    The cause of the problem is:
    Don't worry; it's been deprecated.
    The new one is worse.

  10. #10
    Goldparmäne
    Themenstarter

    Registriert
    02.2011
    Ort
    alpenländischer Raum
    Alter
    19
    Beiträge
    557
    Hallo,

    Fangen Scripte unter Mac auch so an?
    Code:
    #!/bin/bash
    Nochmal:
    Ich habe einen iPod, der hat einen Unterordner "bash" und dort liegt die datei script.
    Wenn ich die Dort ausführe, kann ich dann den befehl so ausführen?
    Code:
    cp ~/test ./
    Also die datei test, aus dem user-home-verzeichnis, auf den iPod in den unterordner bash.
    Bzw. ein
    Code:
    touch test.local
    erstellt die datei: iPod/bash/test.local!?

    Wenn mein iPod ROLAND heißt, kann ich ihn dann mit

    Code:
    diskutil eject "ROLAND"
    auswerfen oder? Ist das case-sensitive?

    Unter Linux hat man *.sh für die Scripte von daher der Ansatz.

    Welches Suffix würdest du empfehlen?

    Werden beide standardmäßig von Terminal.app geöffnet?
     Macbook Pro 13" i5 early 2011  iPod nano 5G 8GB grün  iPod touch 4G 8GB schwarz 
    Man gewöhnt sich an allem. Sogar am Dativ
    Bitcoin: 1A5CQ1T6KSTLSpdVghdtFEHrMM93aQu3wo

Seite 1 von 2 12 LetzteLetzte

Stichworte

Berechtigungen

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