• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Applescript, Shell, Quicksilver

commander

Baldwins roter Pepping
Unvergessen
Registriert
25.02.04
Beiträge
3.206
Servus,

habe folgendes Problem:

Der tolle CheckPoint VPN Client lässt den Airportprozess auf meinem MBP verrückt spielen, nach jedem login rennt der los und macht eine CPU dicht. Das ist ein bekannter Bug, kein Patch verfügbar.

Nun hab ich mir ein mini-script geschrieben, das den airport-prozess ausknippst. Das musste ich vorher immer händisch über die Aktivitätsanzeige machen.

So schaut das script aus:

Code:
kill -9 `ps ax | grep airport | grep -v grep | cut -f1 -d' '`

Funktioniert im Terminal wunderbar.

Ich will das aber über Quicksilver mit Abracadabra (Mausgesten) auslösen. Trage also das script ein und als Action run(shell).

Funzt nicht.

In Applescript verpackt (mit und ohne Administrator Privilegien) klappts auch nicht.

Code:
try
	do shell script "airportkiller"
end try

Ich habs schon mit allen möglichen Pfaden probiert, im moment liegt das script aus lauter Verzweiflung bereits in /usr/bin/ und ist rwx für alle und jeden.

Trotzdem kann ich das script weder über QS noch über Applescript ausführen - warum?

Gruß,

.commander
 
Steht am Anfang des Shellskripts auch ein
Code:
#!/bin/sh
oder Ähnliches? Eventuell braucht man das.

P.S.: Du kannst auch einfach direkt in AS
Code:
do shell script "kill -9 `ps ax | grep airport | grep -v grep | cut -f1 -d' '`"
tippen, geht das?
 
Zuletzt bearbeitet:
Danke für den Hinweis, hat nur leider nichts genützt :-(

es funktionert auch der 'do shell script' Aufruf aus Applescript heraus nicht.... !!! ???

Hmmm
 
Hab grad keinen Mac vor mir, aber unter Linux zumindest fängt die Ausgabe des ps-Befehls ggf. mit Leerzeichen an, je nach Höhe der Prozessnummer (d.h. man müsste erst die führenden Leerzeichen wegschnibbeln).

Edit: schalte hierzu einen sed dazwischen
Code:
do shell script "kill -9 `ps ax | sed 's/^[ ]*//' | grep airport | grep -v grep | cut -f1 -d' '`"
 
Zuletzt bearbeitet:
Nachdem das Script selbst ja zuverlässig funktioniert, und somit kill Leerzeichentolerant ist, glaube ich nicht, dass es daran liegt ....
 
tell application "System Events"
if exists process "airport" then
try
quit application "airport"
end try
end if
end tell

ungestestet!
 
Zuletzt bearbeitet von einem Moderator:
@commander: kill ist leerzeichentolerant, aber nicht cut... ;-)
 
Bloß nicht auf den $PATH vergessen...
Gruß Pepi
 
Code:
kill -9 `ps ax | grep airport | grep -v grep | cut -f1 -d' '`
Mal analysieren:
ps ax: Alle Prozesse listen
| grep airport: die "airport" enthalten
| grep -v grep: Aber nicht grep
| cut -f1 -d: Ich nehme an: PID ermitteln

1. | grep airport | grep -v grep
geht einfacher in der Vaiante:
| grep [a]irport

2. warum nicht einfach
killall -9 airport
 
Jo, da hast Du ma echt recht....

Ich führe das killall nun direkt in Applescript aus - und es funzt!

Aber: Wieso bekomme ich bei manchen Skripts folgende Anzeige, bei manch anderen aber nicht?

Alle sind als Programm gespeichert....
 

Anhänge

  • Bild 3.png
    Bild 3.png
    14,7 KB · Aufrufe: 103
Aber: Wieso bekomme ich bei manchen Skripts folgende Anzeige, bei manch anderen aber nicht?
Weil Du bei manchen Script das Häkchen bei "Startdialog zeigen" (oder so ähnlich) im Speichern-Dialog gesetzt hast, und bei manch anderen aber nicht.
 
Tatsächlich - Danke!

Das kommt daher, dass ich manche erst als script gespeichert hatte und bei den ist der Dialog Defaultmässig aktiviert - bei Apps dagegen nicht, jedoch vergessen die Files diese Eigenschaft nicht, wenn man sie später von Skript zu App transformiert.

Gruß,

.commander