Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>ein Programm beim hochfahren beenden

ein Programm beim hochfahren beenden

verstaerker
verstaerker22.12.1913:29
Hintergrund:
ich hab hier ein Programm (cpvnmd Copperlan-Dienst) das manchmal nach dem neustarten 100% CPU verbraucht.
Das Programm wird nicht mehr weiterentwickelt und die Entwickler helfen auch nicht mehr.

Lösungsansatz:
Da ich zu faul bin jedes Mal zu checken ob das Programm vielleicht zuviel CPU verbraucht dachte ich ich könne es einfach killen beim hochfahren. Da es nachdem beenden automatisch wieder startet, total easy.

Also hab ich mir einfach n Automatorprogramm erstellt das folgendens shell-script ausführt:
killall cpvnmd
das Problem ist das cpvnmd als root läuft, ich muss also
sudo killall cpvnmd 
ausführen.

Dabei fragt es nach dem Passwort, das geht innerhalb des Automators aber nicht, also auf Applescript umgeschwenkt
on run {input, parameters}
    
    do shell script "sudo killall cpvnmd" with administrator privileges
    return input
end run

okay funktioniert, aber leider fragt as script immer nach dem Admin-Passwort. Das nervt mich auch.

Jetzt zur Frage:
Kennt ihr n weg wie man das was ich vorhaben bewerkstelligen kann ohne das ich n Passwort eingeben muss?
0

Kommentare

Peter Eckel22.12.1914:19
Erstens: Was spricht dagegen, das Ding aus dem System zu entfernen, damit es gar nicht erst startet? Brauchst Du es beim Hochfahren und danach nicht mehr?

Zweitens: Man kann sudo so konfigurieren, daß es bestimmte Kommandos auch ohne Paßworteingabe erlaubt. Genaugenommen kann man es auch so konfigurieren, daß es alle Kommandos auch ohne Paßworteingabe erlaubt, aber das wäre, um es freundlich auszudrücken, unglaublich dumm

Der Schlüssel dazu ist die Datei /etc/sudoers, bzw. das Verzeichnis /etc/sudoers.d. Ich bevorzuge die letztere Variante, auch wenn sie etwas umständlicher ist und auch ein gewisses Risiko mit sich bringt, das System in einen unerfreulichen Zustand zu versetzen. Dazu später.

/etc/sudoers sollte immer mit dem Kommando sudo visudo editieren. Das bietet einen gewissen Schutz dagegen, sich das System zu demolieren, denn wenn die Datei kaputtkonfiguriert ist (was, wie der Autor dieser Zeilen gern bestätigen kann, ziemlich einfach ist), dann hat man ein echtes Problem, weil sudo dann nicht mehr geht.

Also Vorarbeit: Ein Terminalfenster öffnen und eine Root-Shell darin aufmachen (mittels sudo -i). Das Fenster dann beiseitelegen, für den Notfall. Oder grundsätzlich nur mit visudo arbeiten. You have been warned.

So, jetzt zum eigentlichen Thema. Entweder in der Datei /etc/sudoers oder in einer neu anzulegenden Datei im Verzeichnis /etc/sudoers.d, z.B. /etc/sudoers.d/killall-cpvnmd (Achtung: Der Dateiname darf keinen Punkt enthalten!) folgende Zeilen hinzufügen:

Cmnd_Alias      KILL_CPVNMD = /usr/bin/killall cpvnmd
%admin          ALL = (root) NOPASSWD: KILL_CPVNMD

EDIT: ACHTUNG: Das sind genau zwei Zeilen, der Umbruch bei MTN ist ... doof!

Eine fängt mit Cmnd_Alias an, eine mit %admin.

Jetzt kannst Du aus einem normalen Terminalfenster (nicht dem mit der Root-Shell) testen, ob es geklappt hat:

pete@ardbeg ~ % sudo -l    
Matching Defaults entries for pete on ardbeg:
[...]

User pete may run the following commands on ardbeg:
    (ALL) ALL
[...]
    (root) NOPASSWD: /usr/bin/killall cpvnmd

pete@ardbeg ~ % sudo killall cpvnmd 
No matching processes were found

Bingo.

Wenn Du es - wie ich wirklich empfehlen würde - in eine eigene Datei in /etc/sudoers.d einbaust und wenn das schiefgeht - das merkst Du schon bei sudo -l im obigen Test - dann kannst Du Dein Root-Shell-Fenster nehmen und es wieder geradebiegen. Wenn nicht - viel Glück (geht auch, z.B. vom Finder aus bzw. im Recovery Mode über das Terminal. Macht aber keinen Spaß).
„Ceterum censeo librum facierum esse delendum.“
+2
HumpelDumpel
HumpelDumpel22.12.1914:46
Passwort im script ist natürlich nicht ganz ohne, aber gehen tut das
do shell script "sudo killAll cpvnmd" password "XXX" with administrator privileges
-1
Peter Eckel22.12.1914:58
HumpelDumpel
Passwort im script ist natürlich nicht ganz ohne,
Doch. Ohne Hirn.

Laßt das bleiben!
„Ceterum censeo librum facierum esse delendum.“
+3
camaso
camaso22.12.1915:04
Oder Du installierst AppPolice und beschränkst die CPU für die App auf den gewünschten Wert:
0
Peter Eckel22.12.1915:21
camaso
Oder Du installierst AppPolice und beschränkst die CPU für die App auf den gewünschten Wert:
Das hilft aber nur dann, wenn der Daemon in dem Zustand auch noch irgendetwas vernünftiges tut und sich nicht nur mit sich selbst beschäftigt. Wenn das Biest 100% CPU frißt und sich durch Killen (und das anschließende Neustarten durch launchd) wieder befrieden läßt, wird es vermutlich nicht viel helfen, ihm einfach die Ressourcen zu entziehen.
„Ceterum censeo librum facierum esse delendum.“
+1
rmayergfx
rmayergfx22.12.1915:27
verstaerker
Hintergrund:
ich hab hier ein Programm (cpvnmd Copperlan-Dienst) das manchmal nach dem neustarten 100% CPU verbraucht.
Das Programm wird nicht mehr weiterentwickelt und die Entwickler helfen auch nicht mehr.
Naja, das Problem hast du ja nicht erst seit kurzem: und da der Entwickler im Forum ja immer noch fleissig antwortet, einfach mal nachfragen, wie die Dienste gestartet werden und diese dementsprechend so einstellen, das diese NICHT automatisch beim Booten gestartet werden. Schon mal in die Startitems unter dem User geschaut ? Also warum mit irgendwelchen Gegenscripten arbeiten, wenn man einfach die Wurzel des Übels entfernen kann ?

PS: Bitte mal angewöhnen das macOS mit anzugeben das installiert ist!
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
0
Wiesi
Wiesi22.12.1915:30
Da, das Ding offensichtlich nur direkt nach dem Neustart rotiert, würde ich einen verzögerten Start einrichten. Wie das geht, weiß ich nicht (toller Rat).
„Everything should be as simple as possible, but not simpler“
-4
verstaerker
verstaerker22.12.1916:58
rmayergfx
verstaerker
Hintergrund:
ich hab hier ein Programm (cpvnmd Copperlan-Dienst) das manchmal nach dem neustarten 100% CPU verbraucht.
Das Programm wird nicht mehr weiterentwickelt und die Entwickler helfen auch nicht mehr.
Naja, das Problem hast du ja nicht erst seit kurzem: und da der Entwickler im Forum ja immer noch fleissig antwortet, einfach mal nachfragen, wie die Dienste gestartet werden und diese dementsprechend so einstellen, das diese NICHT automatisch beim Booten gestartet werden. Schon mal in die Startitems unter dem User geschaut ? Also warum mit irgendwelchen Gegenscripten arbeiten, wenn man einfach die Wurzel des Übels entfernen kann ?

Er antwortet eben nicht mehr.
das ganze wird über den launchDaemon in /Library/LaunchDaemons gestartet

ich nehme mal raus.. ma sehen ob das überhaupt nötig ist
0
verstaerker
verstaerker22.12.1917:23
verstaerker

das ganze wird über den launchDaemon in /Library/LaunchDaemons gestartet

ich nehme mal raus.. ma sehen ob das überhaupt nötig ist

naja man brauchts schon um connections zu bearbeiten ... und später einfach starten , scheint nicht zu reichen.
Ich werd mir also mal die Methode anschauen das ohne pw zu killen
0
verstaerker
verstaerker22.12.1917:42
Peter Eckel
Erstens: Was spricht dagegen, das Ding aus dem System zu entfernen, damit es gar nicht erst startet? Brauchst Du es beim Hochfahren und danach nicht mehr?

So, jetzt zum eigentlichen Thema. Entweder in der Datei /etc/sudoers oder in einer neu anzulegenden Datei im Verzeichnis /etc/sudoers.d, z.B. /etc/sudoers.d/killall-cpvnmd (Achtung: Der Dateiname darf keinen Punkt enthalten!) folgende Zeilen hinzufügen:

Cmnd_Alias      KILL_CPVNMD = /usr/bin/killall cpvnmd
%admin          ALL = (root) NOPASSWD: KILL_CPVNMD

EDIT: ACHTUNG: Das sind genau zwei Zeilen, der Umbruch bei MTN ist ... doof!

Eine fängt mit Cmnd_Alias an, eine mit %admin.

das funktioniert super. Vielen Dank!

P.S.
ich kann das nicht aus dem System entfernen, die Funktionalität wird benötigt
0
rmayergfx
rmayergfx22.12.1918:15
Du sollst es ja auch nicht aus dem System entfernen sondern nur bei Bedarf starten:
„Der Computer soll die Arbeit des Menschen erleichtern, nicht umgekehrt !“
0
verstaerker
verstaerker22.12.1918:35
rmayergfx
Du sollst es ja auch nicht aus dem System entfernen sondern nur bei Bedarf starten:
danke, so ginge es wohl auch ... aber die killAll-lösung tut auch was sie soll
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.