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.)
Ergebnis 1 bis 10 von 14
- 23.02.2011, 16:54 #1
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
- 23.02.2011, 17:33 #2
- 24.02.2011, 00:46 #3
Wieso ist Growl "allseits verhasst"?
The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 24.02.2011, 08:46 #4Keine Autorun-Funktion?
Zitat von Rastafari
Ich will den Stick anstecken, den Bash-Script öffnen (einfach auf die blabla.sh klicken? Hab sie unter Linux ausführbar gemacht.)
Zitat von Rastafari
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?
Hättest du ein Beispiel?
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.
Zitat von fyysh 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 DativBitcoin: 1A5CQ1T6KSTLSpdVghdtFEHrMM93aQu3wo
- 24.02.2011, 16:05 #5Nein. Und das ist gut so. Wenn du ein bisschen darüber sinnierst, wird sich dir 100%ig der Grund erschließen.Keine Autorun-Funktion?

Das kann man automatisieren. Rasta hat dir gesagt wie. Musst nur noch googeln.Ich will den Stick anstecken, den Bash-Script öffnen (einfach auf die blabla.sh klicken? Hab sie unter Linux ausführbar gemacht.)
Das Skript ist doch im root des Sticks, oder? Nutz $0.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
Ja. OSX mountet per default nach /Volumes/$LABEL. Oder halt du nutzt $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?
osascript -e 'tell app "finder"' -e 'activate' -e 'display dialog "hello world"' -e 'end'Hättest du ein Beispiel?
Für gewöhnlich hat Rasta andere Gründe für solche Aussagen. Nicht solch triviale.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.
Ich bin auf seine Antwort gespannt.The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 24.02.2011, 19:37 #6
Nein. Ein latentes Sicherheitsproblem weniger.
Aber wie gesagt, sowas kann man sich mit ein paar Zeilen Shellskript selber basteln.
Noch mal zur Klarstellung:Ich will den Stick anstecken, den Bash-Script öffnen
- 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?
Der automatisch vergebene Mountpoint liegt immer unterhalb von /Volumes/Wie kann ich auf den Stick zugreifen?
(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.
Funktioniert alles gleichermassen:und wie geht das mit diskutil? um ihn auszuwerfen? Kann man da mit dem Label arbeiten...?
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).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
Das "Stecker ziehen" ist jedenfalls in beiden Fällen danach auf sichere Weise möglich.
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...Frag ich mich auch. Wenns verhasst ist, weils nur auf der Konsole ist oder soGeändert von Rastafari (24.02.2011 um 19:48 Uhr)
- 24.02.2011, 19:43 #7Also ich hab unter windows immer schön böse sachen angestellt (bei schulkollegen). So batch scripte mit shutdown und so
Zitat von fyysh 
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 von fyysh
kann ich mit cd $0 also wieder ins root vom Stick? Bzw. es geht also auch ein $0/ordner/sript.sh?
Zitat von fyysh
wie heißt denn das dann unter mac? geht da ein "umount /Volumes/STICK" wie unter Linux?
Zitat von fyysh
Das war glaub ich verständlich. Wenn ich die Zeile 1:1 kopiere kommt nur "hello world" oder?
Zitat von fyysh
Das interessiert mich jetzt auch.
Zitat von fyysh 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 DativBitcoin: 1A5CQ1T6KSTLSpdVghdtFEHrMM93aQu3wo
- 24.02.2011, 20:37 #8
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.
Der Parameter $0 ist der Pfad des gerade ausgeführten Programms/Skripts.kann ich mit cd $0 also wieder ins root vom Stick? Bzw. es geht also auch ein $0/ordner/sript.sh?
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.geht da ein "umount /Volumes/STICK" wie unter Linux?
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.
- 25.02.2011, 10:18 #9
<OT>
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.Von den "LowLevel" Befehlen aus der Unix-Steinzeit wie mount*...
</OT>
Achsooo.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...
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.
- 25.02.2011, 12:21 #10
Hallo,
Fangen Scripte unter Mac auch so an?
Nochmal:Code:#!/bin/bash
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?
Also die datei test, aus dem user-home-verzeichnis, auf den iPod in den unterordner bash.Code:cp ~/test ./
Bzw. einerstellt die datei: iPod/bash/test.local!?Code:touch test.local
Wenn mein iPod ROLAND heißt, kann ich ihn dann mit
auswerfen oder? Ist das case-sensitive?Code:diskutil eject "ROLAND"
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 DativBitcoin: 1A5CQ1T6KSTLSpdVghdtFEHrMM93aQu3wo



Zitieren

