Shell Skript Recorder

Atalantia

Atalantia

Aktives Mitglied
Thread Starter
Dabei seit
26.11.2009
Beiträge
1.893
Reaktionspunkte
431
Hallo Leute,
vielleicht habe ich das Thema total falsch verstanden aber ich versuche es einfach mal...
Jede Aktion die am OSX eingegeben wird, ist ja eigentlich ein UNIX Command... ja klar mit ein paar Ausnahmen. Ist das richtig?
Wenn ja sollte man eigentlich leicht Macros machen können indem man diese Befehle einfach aufnimmt "Record". Gibt es dafür ein Tool?
 
Jede Aktion die am OSX eingegeben wird, ist ja eigentlich ein UNIX Command... ja klar mit ein paar Ausnahmen. Ist das richtig?
Nein. ;)

Allerdings gibt es unter OS X das System AppleScript. Viele Programme stellen damit Befehle zur Verfügung, die du automatisieren kannst (z.B. auch mit dem Programm Automator, das bereits installiert ist).
 
Ich würde gern einen Dienst kreieren, der angeschlossene aber deaktivierte HD's mounted. Geht das?
 
mit so was in der Art kannst Du das im Automator basteln:
Code:
on run
	set volume_name to "Sys_Clone"
	try
		do shell script "diskutil mount " & volume_name
	on error
		beep
	end try
end run
 
  • Gefällt mir
Reaktionen: Atalantia
Ich habe das Skript als "Shell Skript ausführen" im Automator ausgeführt. bin/bash Eingabe übergeben an stdin. Empfangen Ordner und Dateien von Finder. Funktioniert so aber nicht.
 
Ich habe das Skript als "Shell Skript ausführen" im Automator ausgeführt. bin/bash Eingabe übergeben an stdin. Empfangen Ordner und Dateien von Finder. Funktioniert so aber nicht.

Obiges ist ein AppleScript, wäre also "AppleScript ausführen".
"Sys_Clone" musst Du natürlich mit dem Namen Deines Volumes ersetzen, das war mein Test-Volume.

Shell Script geht aber auch, dann wäre es nur dieser Teil: diskutil mount dein_volume_name

Hatte es halt in ein AppleScript gewickelt um Dir einfach die Stossrichtung zu zeigen bzw. falls Du da noch sonst was rein basteln möchtest. ;)
Und weil oben schon von AS die Rede war, und AS auch so eine Art "Record-Funktion" hat wie von Dir erfragt.
Das AS hat halt noch eine rudimentäre Fehlerbehandlung (piepst im Fehlerfall) :D



/edit:
Empfangen Ordner und Dateien von Finder
Empfangen: keine Eingabe - in jedem Programm

Das Ganze unter der Annahme, dass Du ein (1) bestimmtes Volume mit bekanntem Namen mounten willst.
Man könnte es z.B. auch so erweitern, dass das Volume ausgeworfen wird, falls es schon gemountet ist, oder, oder...
 
  • Gefällt mir
Reaktionen: Atalantia
...Hatte es halt in ein AppleScript gewickelt um Dir einfach die Stossrichtung zu zeigen bzw. falls Du da noch sonst was rein basteln möchtest. ;)...
Ich wäre froh, wenn ich mehr von Skripting und Shell Commands verstehen würde. Bin da aber blutiger Anfänger.

Beide von Dir vorgeschlagene Wege funktionieren hartnäckig nicht. Ich habe das Skript in AppleSkriptEditor ausprobiert (ja den Volume Namen richtig eingesetzt) und die Kurzform "diskutil mount mein_volume_name" im Terminal probiert. Beides verweigert den Dienst.
 
Ich wäre froh, wenn ich mehr von Skripting und Shell Commands verstehen würde. Bin da aber blutiger Anfänger.

Beide von Dir vorgeschlagene Wege funktionieren hartnäckig nicht. Ich habe das Skript in AppleSkriptEditor ausprobiert (ja den Volume Namen richtig eingesetzt) und die Kurzform "diskutil mount mein_volume_name" im Terminal probiert. Beides verweigert den Dienst.

Wie heisst das Volume?
 
ah, das dachte ich mir (das Leerzeichen) ;)

Applescript: set volume_name to "wd\\ 2tb"
oder: set volume_name to quoted form of "wd 2tb"

Shell Script: diskutil mount "wd 2tb"
 
  • Gefällt mir
Reaktionen: Atalantia
Yehh.. das Shell Skrip funktioniert. Nun müsste ich noch ne ganze Reihe von Disks mounten. Ich habe das so versucht:
 

Anhänge

  • Bildschirmfoto 2013-12-14 um 15.15.26.jpg
    Bildschirmfoto 2013-12-14 um 15.15.26.jpg
    71,6 KB · Aufrufe: 82
Falsche Anführungszeichen beim 2. Vol ;)

kannst auch ' nehmen bzw. wenn ohne Sonder- und Leerzeichen im Namen, diese auch ganz weglassen


ach und "Dienst empfängt" => "keine Eingabe", weil Du übergibst dem Dienst ja kein Input
 
  • Gefällt mir
Reaktionen: Atalantia
..und mit AppleScript könnte es so aussehen:

Code:
on run
	set volume_list to {"WD 2TB", "anderes_volume", "noch ein Volume"}
	repeat with i from 1 to count of volume_list
		set x to quoted form of item i of volume_list
		try
			do shell script "diskutil mount " & x
		on error
			beep
		end try
		delay 1
	end repeat
end run

set volume_list to kannst Du beliebig erweitern
Leerzeichen im Vol-Name spielen hier keine Rolle, werden in der repeat-Routine gequotet
 
  • Gefällt mir
Reaktionen: Atalantia
Yehh... jetzt funktioniert alles. Danke. Aber kannst Du mir sagen... wie hast Du die Skriptsprache erlernt? Ich Google immer mal nach Anleitungen, finde aber meistens nur Texte die ich nicht verstehe oder nachvollziehen kann.
 
Zurück
Oben Unten