• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Bauche ein paar Tipps!

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Hab ein paar Fragen.

Und zwar bräuchte ich ein paar Tipps zu AppleScript.

Kann ich in AppleScript richtige Forms basteln?

Ich bräuchte eine Form mit Radio Buttons und normalen Buttons.

2.) Wenn ich das Terminal mit "tell application "Terminal" anspreche
wie sende ich dem Terminal dann z.b. den Befehl "boot-device" und
und lass mir den Erebnistext den das Terminal liefert anzeigen?

das wars fürs erste mal ;)

MfG Matthias
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Also 2. hat sich schon erledigt ;)

Nun wie man Forms und so macht, schätze ich mal dass man dies besser
mit Cocoa macht.

So jetzt hab ich eine andere Frage:

Wenn ich einen string hab der z.B. so aussieht: "blabla bla servus9bis3 bla bla"

Wie kann ich aus dem string der in einer Variable definiert ist, nennen wir sie "var",
nur einen Teil herauskopieren und in eine neue Variable definieren?

Ich möchte das aus "var" nur 'servus9bis3' in eine neue Variable gesetzt wird.

MfG Matthias
 

Schomo

Zehendlieber
Registriert
15.11.04
Beiträge
4.118
Werfe mal das Terminal auf den Scripteditor, dann geht ein Fenster mit Befeheln auf, die du in AS für das Terminal verwenden kannst.

Gruß Schomo
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Die Befehle hab ich schon.

Jetzt muss ich nur noch das auslesen aus dem String hinbekommen.
Danke ;)

MfG Matthias
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
So ich habs jetzt so gelöst:

Code:
set var to every word of var
set var2 to item 3 of var

das hat soweit gut funktioniert ;)

Erneutes Problem!

Wieso funktioniert dieser befehl bei mit nich?
Code:
set diskif to extract item from 6 to (length of disklength)

Ich bekomme die Meldung: Syntaxfehler. "Zeilenende, etc." erwartet aber ein
Klassenname gefunden.

Markiert wird dabei das Wort "string"
 
Zuletzt bearbeitet:

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Habs mit einer Schleife gelöst.

Code:
set diskid to every character of diskid
set diskfinal2 to ""

repeat with i from 7 to number of items of diskid
	set diskfinal to item i of diskid as string
	set diskfinal2 to diskfinal2 & diskfinal
end repeat

Jetzt muss ich noch wissen wie ich mit "do shell script" ein "sudo" realisiere wobei
ich vorher das admin-passwort abfrage und in einer Variable speichere.
Und wie ich einen Passwort Eingabe-Dialog realisiere.

MfG Matthias
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Ich post dir mal das ganze Skript ;)

Ich will zu Testzwecken für das Tutorial von Fabs (high-end-freak) ein Programm
schreiben um das Booten von USB für nicht Intel Macs zu ermöglichen.

Um die Auswahl die generierung des Unix-Scriptes zu automatisieren hab ich
dieses Script zu Testzwecken geschrieben.

Code:
display dialog "Type in the name of your USB-Disk you want to boot from" default answer "" buttons {"OK"} default button 1
copy the result as list to disk_choice
set disk to item 1 of disk_choice

do shell script "diskutil information /Volumes/" & disk
copy the result as string to status

display dialog status buttons {"OK"} default button 1

set diskid to every word of status
set diskid to item 4 of diskid

display dialog diskid buttons {"OK"} default button 1

set diskid to every character of diskid
set diskfinal2 to ""

repeat with i from 7 to number of items of diskid
	set diskfinal to item i of diskid as string
	set diskfinal2 to diskfinal2 & diskfinal
end repeat

display dialog diskfinal2 buttons {"OK"} default button 1

display dialog "nvram boot-device ud:" & diskfinal2 & ",\\\\\\\\:tbxi" buttons {"OK"} default button 1

Nun noch ein bisserl zum Code:
Die Schleife muss sein da der Parameter disk1s*die Zahl wird gebrauch*
manchmal 1 oder 2-Stellig ist. Je nach dem. Jetzt bauch ich einen
Konstanten wert in der Rechnung. von "d" bis "s" von disk1s
ist alles konstant. Da auch niemand 10 Festplatten angeschlossen
hat wird auch niemand disk10s haben. Dann wäre der Faktor nicht mehr
konstant.
Deswegen komm ich um diese Schleife net herum.
Den Rest könnte man sicher eleganter lösen ... wer weiß ;)

Naja Problem ist nur ich will ein paar "Funktionen zum Programm dazuschreiben.
Kann ich in XCode zum Beispiel Cocoa und AppleScript kombinieren?
Da ich Cocoa noch nicht so gut, bzw. gar nicht kann wäre es für mich
einfacher die Variablen auslese aus dem Terminal per AppleScript vorerst
zu lassen und später das ganze Programm in Cocoa zu realisieren.
Deshalt hab ich auch hier gepostet ;)

Das würde das erstellen einer Oberfläche für das Programm und die
Benutzerfreundlichkeit verbessern.

MfG Matthias
 
Zuletzt bearbeitet:

high-end-freak

Herrenhut
Registriert
16.12.05
Beiträge
2.289
bei diesem nvram ding ganz unten hast du aber nur gesagt "diskplay diaglogue" aber du hast vergessen dem terminal zu sagen, dass es dieses skript auch machen soll! oder versteh ich da was falsch? hab wenig ahung von applescript;) :eek: .
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Es ist nur ein Test Script um zu sehen wie ich die nötigen Parameter auslesen
kann. Das Problem was ich jetzt hab ist, dass man für das Ändern des nvram-
Parameters Administratorrechte braucht.

Also muss es

Code:
do shell script "sudo nvram boot-device ud:*zahl*,////:tbxi"

heißen. Problem ist nur, dass ich eine Fehlermeldung bekomme, weil man für
sudo ja das Admin Passwort braucht. Jetzt muss ich eine Lösung finden wie ich
das Passwort mit übergeben kann. Wenn es der Benutzer über eine Maske
im Script eingibt.
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Hmm das mit dem nvram verdutzt mich etwas. Hab dir mal zum aunschauen meins
fotographiert. So steht es drin nachdem der PRAM und der NVRAM resettet worden ist:



pete schrieb:
Hier Dein Script etwas umgeschrieben. Auch wenn es auf den ersten Blick nicht so aussieht, es ist einfacher, es funktioniert fehlerfreier und es ist pflegeleichter als vorher. Ich habe es allerdings so umgestellt, dass die device info aus der zweiten Zeile des Terminal-Outputs entnommen.

Ich seh das Script nirgens ;)

Jetzt is es da ;)

Danke werds mir gleich mal reinziehn :)

WOW sieht ja kompliziert aus ;)
Danke war sicher heiden Arbeit.


MfG Matthias
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Bei denem Script hat sich was eingeschlichen ;)



Es sollte eig. 10 nich 0 dortstehen. Ich versuch mal das auf eigene Faust zu ändern ;)

Mal sehen ob ichs hinbekomm. Deswegen hab ich auch die Schlefe geschrieben
weil der Konstante String "disk0s" ist. Die Zahl nach disk kann nur mehr als 10
sein wenn jemand 10 Festplatten angeschlossen hat. Wovon ich nicht ausgehe.

Bis jetzt noch kein Erfolg gehabt ;) ...

MfG Matthias
 
Zuletzt bearbeitet:

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Es sollte die Ziffer hinter "disk*igendeineZahl*s" sein.
Ob die Platte Partitioniert ist oder nicht macht nichts weil wenn man
in der Liste die richtige Partition auswählt macht dies keinen Unterschied weil
von /Volumes/Partition ausgegangen wird und so immer der Richtige identifier
verwendet wird.

Für den nvram command wird also immer die Zahl hinter z.B.: disk1s verwendet.

MfG Matthias
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Mann das ist ja unglaublich! So ein Service ;) Und so eine
Hilfsbereitschaft!

Wie wärs mit einem gemeinsamen Projekt?

MfG Matthias
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Na da sag ich mal Danke ;)

Großautowaschtage hab ich heute ;) Kein Problem. Die erklärungen
einfach, dann wenns dir von der Zeit her passt.

Und wegen dem gemeinsamen Projekt ... überlegs dir einfach mal.

MfG Matthias
 

itschus

Luxemburger Triumph
Registriert
13.04.06
Beiträge
500
hey jungs, ich bin über eure arbeit gestolpert, respect was ihr da gebastelt hab. ich versteh zwar kein wort, hört sich aber gut an:)

jetzt folgendes Problem: ich will ein iBook von meiner alten iBook- Platte aus starten, klar usb. was muß ich jetzt genau mit eurem skript machen?

itschus
 

high-end-freak

Herrenhut
Registriert
16.12.05
Beiträge
2.289
huch, der pete hate ja das skript ausm anhang entfernt o: dann kanns natuerlich nicht gehen. pete, wo steckst du!? komm zu uns:D
 

palmetshofer

Apfel der Erkenntnis
Registriert
28.01.06
Beiträge
724
Ich hab sie nimmer. Kann sie nirgens mehr finden. Tut mir leid. :eek:

Ich such noch einmal alles ab, aber garantieren kann ich nichts.

MfG Matthias
 

high-end-freak

Herrenhut
Registriert
16.12.05
Beiträge
2.289
da habt ihr aber nochmal glueck jehabt, ick habs hier in den tiefen meines dokumenten-verzeichnisses noch das skript gefunden:D
allerdings funzt es bei mir nicht. kommt immer "no such file or directory" wenn ich in den ornder gehe und mich zum admin mache:(.
 

Anhänge

  • setNVRAM.zip
    8,1 KB · Aufrufe: 83

high-end-freak

Herrenhut
Registriert
16.12.05
Beiträge
2.289
pete schrieb:
Ja, das ist das Script, allerdings voll funktionsfähig (nicht auskommentiert, wie ich es lieferte) und damit problematisch, denn es erzeugt meiner Meinung nach unpassende Boot-Einträge per NVRAM, und könnte damit einen Mac unbootbar machen (Alt-Taste mal ausgenommen).

----
edit

Ich würde empfehlen den Anhang zu ersetzen. Der entscheidende ausführende Befehl sollte durch Auskommentierung unwirksam gemacht werden.
womit ersetzen? ich hab leider ueberhaupt keine ahnung von apple script:(.
Das verstehe ich nicht. Was meinst Du mit "In den Ordner gehen"?
Code:
cd pfad_zum_ordner