Powerknopf am PC benutzen?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
frisil
Beiträge: 5
Registriert: 07.04.2006 16:01:25

Powerknopf am PC benutzen?

Beitrag von frisil » 07.04.2006 16:13:04

Hi,
irgendwie spinnt der Poweroff-Knopf (Auschalter) vom PC. Gibt es irgendein Script oder eine config-Datei die regelt, was passiert, wenn der Ausschalter gedrückt wird? Der Knopf macht bei mir nämlich folgendes:
1. Internetverbindung herstellen (warum auch immer???)
2. Dann unter meinem ersten Bediener (und im Anmeldungsmenü) den Rechner runterfahren, das ist okay, doch unter Root oder einem anderen, nach der Installation angelegten Bediener passiert gar nichts, der Knopf wird einfach ignoriert.

Kann mir jemand helfen? Irgendwie muß man das doch konfigurieren können, ich weiß blos nicht, wo.

PS: Ich benutze einen Desktoprechner, keinen Laptop.

Benutzeravatar
npi
Beiträge: 567
Registriert: 03.08.2003 17:52:10

Beitrag von npi » 07.04.2006 16:33:35

Das wird im Prinzip durch den acpi Daemon geregelt (falls installiert) schau mal im Verzeichnis /etc/acpi nach einem skript namens powerbtn.sh oder ähnlich, das regelt normalerweise, was passiert.

gruß,
npi
"Bis zur Unendlichkeit, und noch viel weiter!"
--Buzz, Toystory

frisil
Beiträge: 5
Registriert: 07.04.2006 16:01:25

Beitrag von frisil » 07.04.2006 18:01:03

Das ist der Inhalt meiner Datei:

--------------------------------------------------------------------------------------

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.

# If powersaved is running, let it process the acpi event
if pidof powersaved; then
exit 0
fi

if ps -Af | grep -q '[k]desktop' && test -f /usr/bin/dcop
then
dcop --all-sessions --all-users ksmserver ksmserver logout 0 2 0 && exit 0
else
/sbin/shutdown -h now "Power button pressed"
fi

----------------------------------------------------------------------------------------

Erste Frage; Was stellt denn da nun die Internetverbindung her?
Zweite Frage: Kann ich einfach alles löschen und nur
/sbin/shutdown -h now "Power button pressed"
stehen lassen, damit auf jeden Fall runtergefahren wird, oder ist das irgendwie gefahrlich?

Benutzeravatar
npi
Beiträge: 567
Registriert: 03.08.2003 17:52:10

Beitrag von npi » 07.04.2006 18:25:47

das ist für mich jetzt auch nicht auf den ersten Blick erkennbar, warum da eine Internetverbindung aufgebaut wird, es sei denn das kommt von dcop. Du kannst natürlich einfach mal die Zeilen bis auf shutdown aukommentieren und schauen was passiert. Natürlich dabei nicht unbedingt die Facharbeit ungesichert geöffnet lassen... ;-)

gruß,
npi
"Bis zur Unendlichkeit, und noch viel weiter!"
--Buzz, Toystory

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Beitrag von novalix » 07.04.2006 19:20:03

hallo und willkommen im forum,

das script

Code: Alles auswählen

/etc/acpi/powerbtn.sh
ist nicht unbedingt aktiviert. um herauszufinden, ob es auch tatsaechlich ausgeloest wird, wenn du den powerbutton drueckst, solltest du die festgelegte aktion uebepruefen:

Code: Alles auswählen

less /etc/acpi/event/powerbtn
die ausgabe sollte dir zeigen welche "action" mit dem "event" druecken des powerbuttons verbunden ist.
sollte es das script

Code: Alles auswählen

/etc/acpi/powerbtn.sh
sein, ist da eigentlich nichts zu bemaengeln. du solltest dann aber ueberpruefen, ob der powersave demon laeuft:

Code: Alles auswählen

ps aux | grep powersaved
falls powersaved laeuft, schau mal in dessen konfigurationsdatei, ob dort eine andere "action" definiert ist. wobei ich mir ehrlich gesagt nicht vorstellen kann, dass irgendeine defaulteinstellung das oeffnen einer internetverbindung herbeifuehrt.
eine tieferliegende frage waere natuerlich: nutzt dein rechner ueberhaupt acpi? oder apm?

ciao, niels
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

frisil
Beiträge: 5
Registriert: 07.04.2006 16:01:25

Beitrag von frisil » 08.04.2006 01:27:22

Erstmal vorweg:
ps aux | grep powersaved liefert als Ergebnis die Ausgabe:
frisil 27532 0.0 0.1 3920 828 pts/2 S+ 01:20 0:00 grep powersaved

leider kann ich damit überhaupt nichts anfangen. Kann mir jemand erklären, was die Werte bedeuten???

Die erste if-Verzweigung hab ich mal rausgenommen (war bei meinem alten Linux nämlich so) und ausprobiert, ob das script beim Drücken des Knopfes aufgerufen wird, indem ich play + mp3datei hinzugefügt habe. Und siehe da, das Sample wird beim Drücken des Powerknopfes gespielt.
Außerdem habe ich das /etc/acpi/powerbtn.sh script mal mit einem benutzer, der nicht abgemeldet wird, in einer Konsole laufen lassen. Dort erhalte ich folgende Ausgabe:
Done.
WARNING: ICE authority file /home/bert/.ICEauthorityis not readable by you!
Please check permissions or set the $ICEAUTHORITY variable manually before
calling dcop.
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
ERROR: Couldn't attach to DCOP server!
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
ERROR: Couldn't attach to DCOP server!
Das Problem scheint also dcop zu sein, bei dem Aufruf wird übrigens auch die rätselhafte Internetverbindung aufgebaut. Leider verstehe ich diese zweite IF-Verzweigung nicht (siehe Inhalt der Datei oben), kann mir jemand erklären, was das System dort macht (oder machen soll)? Und was soll diese Datei .ICEauthorityis im Verzeichnis eines anderen Bedieners (der bei der Installation angelegt wurde und auch runterfahren kann?)? Wenn ich versuche, die Zugriffsrechte auf die Datei zu ändern, werden sie wieder zurückgesetzt, sobald ich mich wieder als anderer Bediener einlogge. Wie setzte ich diese Variable überhaupt (und wo)? Ja, ich habe nicht viel Ahnung von Linux, bitte vergebt mir!
Kann ich diese seltsame if-Verzweigung nicht einfach auskommentieren und nur shutdown stehen lassen? Und wie und wo kann ich einstellen, daß shutdown, reboot und halt auch ohne superuser-Rechte ausgeführt werden können sollen?
Wäre schön, wenn jemand, der mehr Ahnung hat als ich, eine oder mehrere dieser Fragen beantworten könnte. Vielen Dank im Voraus!

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Beitrag von novalix » 08.04.2006 16:31:55

an dem script brauchst du wirklich nichts aendern. die erste if-anweisung prueft nur, ob der powersaved laeuft und wuerde im positiven fall aus dem script aussteigen, und die aufgabe das event "druecken des powerknopfes" zu bearbeiten, an diesen weitergeben. der powersaved laeuft bei dir nicht. die ausgabe deines

Code: Alles auswählen

ps aux | grep powersaved
zeigt das. (der einzige job, der angezeigt wird, ist der soeben ausgefuehrte "liste alle prozesse und grep mir powersaved raus".
auch die zweite verzweigung in dem script loest mit sicherheit keine internetverbindung aus, sondern prueft lediglich, ob kde laeuft, um dann ein geordnetes runterfahren des rechners mit kde-mitteln (das ist der dcop-event) zu ermoeglichen. falls du kein kde nutzt ist es voellig ok die zeilen auszukommentieren, allerdings auch in keiner weise notwendig.
ich verweise noch mal auf meinen vorherigen post, in dem ich versucht habe, den ablauf zu skizzieren, der gestartet wird, wenn du den powerknopf betaetigtst und dein system tatsaechlich acpi nutzt. das von dir untersuchte script tritt eben nur dann in aktion, wenn diese bedingungen erfuellt sind und ist definitiv nicht dafuer verantwortlich, dass eine internetverbindung aufgebaut wird.
falls du einen 2.4er kernel verwendest, ist die wahrscheinlichkeit hoch, dass dein system apm verwendet und aus irgendeinem grund das druecken des powerknopfes als suspend/resume ereigniss interpretiert. da wird dann gerne mal ne ppp-verbindung neu aufgebaut. aber das ist spekulation.
schau mal ins proc verzeichnis

Code: Alles auswählen

ls /proc
und ueberpruefe, ob acpi oder apm laeuft. dann checke noch mal die events im jeweiligen konfigurationsverzeichnis

Code: Alles auswählen

/etc/acpi/events/
oder

Code: Alles auswählen

/etc/apm/events.d/
und poste uns, was du herausgefunden hast.

ciao, niels
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

frisil
Beiträge: 5
Registriert: 07.04.2006 16:01:25

Beitrag von frisil » 08.04.2006 17:22:31

So, habe alles nachgesehen, was du meintest:
acpi läuft und in den events steht powerbtn, das script wird ja auch aufgerufen (was man eindeutig daran merkt, daß das Sample gespielt wird, das ich dort eingetragen habe). Hier besteht also kein Zweifel mehr: powerbtn.sh wird ausgeführt, wenn der Knopf gedrückt wird.
auch die zweite verzweigung in dem script loest mit sicherheit keine internetverbindung aus, sondern prueft lediglich, ob kde laeuft, um dann ein geordnetes runterfahren des rechners mit kde-mitteln (das ist der dcop-event) zu ermoeglichen....

...und ist definitiv nicht dafuer verantwortlich, dass eine internetverbindung aufgebaut wird.
Leider doch! ich habe den dcop-Befehl mal in die Konsole eingegeben, sichergestellt daß keine Verbindung besteht und auch nichts anderes läuft, das eine Verbindung herstellen könnte. Dann enter gedrückt, und das System gibt folgendes aus:
frisil@FrisilsBox:~$ dcop --all-sessions --all-users ksmserver ksmserver logout 0 2 0 && exit 0
WARNING: ICE authority file /home/bert/.ICEauthorityis not readable by you!
Please check permissions or set the $ICEAUTHORITY variable manually before
calling dcop.
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
ERROR: Couldn't attach to DCOP server!
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
SocketUNIXConnect: Cannot connect to non-local host Kanotix
DCOPClient::attachInternal. Attach failed Could not open network socket
ERROR: Couldn't attach to DCOP server!
frisil@FrisilsBox:~$
Und bei diesen Fehlermeldungen geht die Verbindungslampe am Router an! Igrendwie scheint dcop ja eine externe Verbindung herstellen zu wollen. Ich habe nur keine Ahnung, was das soll!

Das Problem scheint mir diese nicht gesetzte $ICEAUTHORITY variable zu sein, dadurch kann dcop wohl nicht auf irgendwas zugreifen und sucht extern im Netzwerk??? Oder was meint "non-local host"? Wie und wo setzte ich denn die Variable, dies würde vielleicht helfen.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Beitrag von novalix » 08.04.2006 18:27:06

nee, ne internetverbindung ist das nicht. der docp-server von kde nutzt unix-sockets, um seine aufgaben zu erledigen. das ist also so aehnlich wie das loopback-interface auf deinem rechner. es geht mit sicherheit kein datenverkehr nach draussen. warum er allerdings kanotix sucht und fuer non-local haelt weiss ich nu auch nich. wie stellst du eigentlich fest, ob ne verbindung nach "draussen" besteht? die lampen an meinem modem blinken auch ab und an, wenn gar kein rechner an der leitung haengt. ist halt ne blackbox. fuer mich beginnt da das internet und ich konzentriere mich auf das, was ich kontrollieren kann, oder glaube zu koennen. :)
sicher ist, dass bei dir unter kde die authorisierung zum bedienen dieses features nur fuer den voreingestellten benutzer funktioniert. das ist allerdings kein problem des powerbtn.sh scripts. kannst du denn als "weiterer" benutzer den rechner ueber den softwaredialog runterfahren? falls nicht, muesstest du die notwendigen rechte im kontrollzentrum unter anmeldungsmanager auch einstellen koennen.

happy hacking, niels
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

frisil
Beiträge: 5
Registriert: 07.04.2006 16:01:25

Beitrag von frisil » 09.04.2006 01:38:56

Doch, ne Internetverbindung ist das wohl, auch wenn vielleicht nichts übertragen wird. Ich sehe das an der DSL-Lampe an meiner Fritzbox, außerdem taucht es in meiner Abrechnung auf (habe einen Zeittarif mit sekundengenauer Abrechnung). Wo finde ich denn die DCOP Konfigurationsdatei, es muß doch eine geben. Wenn ich die mit der Datei von meinem alten Linux vergleiche, finde ich vielleicht raus, was die Verbindung herstellt. Diese wird nämlich auch beim voreingestellten Benutzer aufgebaut, nur dass der Rechner dann auch runterfährt. Über den KDE-Menüpunkt können alle User runterfahren, das funktioniert. Problem müßte also DCOP-Konfiguration und nichtgesetzte Variable sein. Auf diese Kontrolldatei des voreingestellten Benutzers kann nicht mal root richtig zugreifen, jedenfalls funktioniert dort der Powerknopf auch nicht. Also, kann mir irgendwer sagen wo die DCOP-Konfiguration steht oder wie und wo ich diese Variable setzten kann? Dank im Voraus!

Antworten