• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> 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