Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[Gelöst] Brauche Hilfe mit einem Shell-Script

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Spielwurm
Advanced Hacker
Advanced Hacker
Beiträge: 1341
Registriert: 30. Dez 2007, 11:55
Kontaktdaten:

[Gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von Spielwurm »

Mein Laptop reagiert im Bereitschaftszustand auf die Maus: der Rechner wird wach. Und weil die Maus meist irgendwo auf dem Tisch liegt, wird er oft wach. Ich hab die Stelle gefunden wo es steht:

Code: Alles auswählen

/sys/bus/usb/devices/1-8/power/wakeup
Das steht "enabled drin und wenn ich dort reinschreibe:

Code: Alles auswählen

echo > /sys/bus/usb/devices/1-8/power/wakeup disabled
hat sich das Problem erledigt.

ich hab es sogar schon geschafft, ein Startscript zu schreiben und zu installieren für Systemctl. Dabei wird das folgende Script ausgeführt:

Code: Alles auswählen

#! /bin/bash
echo > /sys/bus/usb/devices/1-8/power/wakeup disabled
und alles ist gut. Alles? Nein, ein kleiner ACPI macht, dass das Verzeichnis nicht immer existiert und oft heißt das passende Verzeichnis .

Wie muss das Script aussehen, damit folgendes passiert:

Code: Alles auswählen

Existiert /sys/bus/usb/devices/1-8/power/?
Wenn ja, schreibe echo > /sys/bus/usb/devices/1-8/power/wakeup disabled
Wenn nein, schreibe echo > /sys/bus/usb/devices/1-9/power/wakeup disabled
Spielwurm
Zuletzt geändert von Spielwurm am 3. Nov 2021, 21:49, insgesamt 1-mal geändert.
Tuxedo Book 15-Zoll mit GM-940 und Opensuse 15.1, AMD Phenom und Nvidia GT210 für Video mit Opensuse 15.1, Hardkernel Odroid XU4 mit Debian als Server, Thinkpad 570 für Audio mit Puppy-Linux
Christina
Member
Member
Beiträge: 190
Registriert: 4. Mär 2019, 13:44

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von Christina »

Probiere es mal mit einer udev-Rule nach diesem Schema (oben):
https://linux-club.de/forum/viewtopic.php?t=123223

Bei meinem Notebook läuft das, aber bei meinem PC klappte später das Aufwachen mit Maus und Tastatur nicht mehr.
marce
Advanced Hacker
Advanced Hacker
Beiträge: 1380
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von marce »

... und ich wäre mir schon mal recht sicher, daß es

Code: Alles auswählen

echo disabled > /sys/bus/usb/devices/1-8/power/wakeup
heißen sollte...
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5653
Registriert: 23. Sep 2008, 17:09

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von josef-wien »

Code: Alles auswählen

echo disabled
ist der Aufruf einer Funktion der GNU bash (im vorliegenden Fall, denn das Programm echo aus den GNU coreutils müßte mit Pfad-Angabe aufgerufen werden) mit Übergabe eines Parameters.

Code: Alles auswählen

> /sys/bus/usb/devices/1-8/power/wakeup
ist in beiden Fällen eine Anweisung an die GNU bash, die Ausgabe umzuleiten, und die kann am Anfang, in der Mitte oder am Ende stehen.
marce
Advanced Hacker
Advanced Hacker
Beiträge: 1380
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von marce »

wieder was gelernt - ich wäre ich 1000 Jahren nicht auf die Idee gekommen, das in der Reihenfolge zu schreiben. Aber ja, wenn man drüber nachdenkt...

Zweckes der Lesbarkeit würde ich trotzdem die andere Variante bevorzugen...
abgdf
Guru
Guru
Beiträge: 3411
Registriert: 13. Apr 2004, 21:15

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von abgdf »

Spielwurm hat geschrieben: 2. Nov 2021, 21:23Wie muss das Script aussehen, damit folgendes passiert:

Code: Alles auswählen

Existiert /sys/bus/usb/devices/1-8/power/?
Wenn ja, schreibe echo > /sys/bus/usb/devices/1-8/power/wakeup disabled
Wenn nein, schreibe echo > /sys/bus/usb/devices/1-9/power/wakeup disabled

Code: Alles auswählen

#!/bin/bash

p8dir="/sys/bus/usb/devices/1-8/power"
p9dir="/sys/bus/usb/devices/1-9/power"

if test -e "$p8dir"
then
    echo "disabled" > "$p8dir/wakeup"
else
    echo "disabled" > "$p9dir/wakeup"
fi
Eine udev-Rule wäre die "bessere" Lösung, aber wenn es nach mir ginge, würde es gar keine kryptischen und sich ständig verändernden udev-Rules geben. Ich hab' also vom Prinzip her kein Problem damit, da mit einem Skript direkt reinzuhacken.

Aber prüf' nochmal, ob in den Dateien nicht noch was Anderes, Wichtiges drinsteht. Das "echo >" überschreibt ja die ganze Datei.
Spielwurm
Advanced Hacker
Advanced Hacker
Beiträge: 1341
Registriert: 30. Dez 2007, 11:55
Kontaktdaten:

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von Spielwurm »

Jau danke, ich werde beobachten, wie es funktioniert, habe aber keine Zweifel, dass es tut, was es soll.

In den Dateien "wakeup" steht immer nur "enabled" oder "disabled" wie so oft in den /sys-Dateien.

USB-Rules: die habe ich 2 Semester studiert und komme immer noch nicht klar, wahrscheinlich fehlt mir das System dahinter. Mit "systemctl" kam ich schon relativ gut nach nur einem Semester Studium klar. Und weil das klappt, bleibt es jetzt dabei.

Spielwurm
Tuxedo Book 15-Zoll mit GM-940 und Opensuse 15.1, AMD Phenom und Nvidia GT210 für Video mit Opensuse 15.1, Hardkernel Odroid XU4 mit Debian als Server, Thinkpad 570 für Audio mit Puppy-Linux
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5653
Registriert: 23. Sep 2008, 17:09

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von josef-wien »

Spielwurm hat geschrieben:keine Zweifel, dass es tut
Und wenn es weder 1-8 noch 1-9 heißt, stehst Du wieder am Anfang Deines Problems.
Spielwurm
Advanced Hacker
Advanced Hacker
Beiträge: 1341
Registriert: 30. Dez 2007, 11:55
Kontaktdaten:

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von Spielwurm »

Das Aufweckproblem besteht schon länger und bisher war es entweder das eine Verzeichnis oder das andere. Ich hatte das immer wieder von Hand "disabled" und daher weiß ich das. Aber Danke für den Tipp, wenn mir das Problem bei einem anderen Rechner unterkommt, studiere ich noch 2 Semester USB-rules ...

Spielwurm
Tuxedo Book 15-Zoll mit GM-940 und Opensuse 15.1, AMD Phenom und Nvidia GT210 für Video mit Opensuse 15.1, Hardkernel Odroid XU4 mit Debian als Server, Thinkpad 570 für Audio mit Puppy-Linux
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5653
Registriert: 23. Sep 2008, 17:09

Re: [gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von josef-wien »

Mir ist nicht klar, welches Studium erforderlich ist, um

Code: Alles auswählen

lsusb
auszuführen, die Werte für die Maus zu ermitteln und an Stelle von "045e" (Microsoft Corp.) und "0039" (IntelliMouse Optical) als root in die gegebenenfalls anzulegende Datei /etc/udev/rules.d/99-local.rules zu schreiben:

Code: Alles auswählen

# Damit meine Maus mein System nicht aufweckt:
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0039", TEST=="power/wakeup", ATTR{power/wakeup}="disabled"
(== bedeutet eine Abfrage auf Übereinstimmung, = ist die Zuweisung eines Werts.) Damit es schon vor dem nächsten Start aktiviert wird, wäre als root der Befehl

Code: Alles auswählen

udevadm control --reload-rules
auszuführen und die Maus ab- und anzustecken.
Spielwurm
Advanced Hacker
Advanced Hacker
Beiträge: 1341
Registriert: 30. Dez 2007, 11:55
Kontaktdaten:

Re: [gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von Spielwurm »

War keine ernsthafte Frage, oder? Ich habe keine Ahnung von diesen Regeln, hätte nicht den blassesten Schimmer, was wie geschrieben wird in welcher Reihenfolge mit welcher Syntax usw. Oder wird das verlangt, wenn man Linux benutzt?

Aber wenn ich das jetzt so lese: was ist denn, wenn ich mal eine andere Maus benutze? Dann muss ich die Regel neu schreiben mit anderer Firma und Produkt, oder?

Spielwurm
Tuxedo Book 15-Zoll mit GM-940 und Opensuse 15.1, AMD Phenom und Nvidia GT210 für Video mit Opensuse 15.1, Hardkernel Odroid XU4 mit Debian als Server, Thinkpad 570 für Audio mit Puppy-Linux
Christina
Member
Member
Beiträge: 190
Registriert: 4. Mär 2019, 13:44

Re: [gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von Christina »

Spielwurm hat geschrieben: 4. Nov 2021, 10:01 Ich habe keine Ahnung von diesen Regeln, hätte nicht den blassesten Schimmer, was wie geschrieben wird in welcher Reihenfolge mit welcher Syntax usw.
Das musst du auch gar nicht, dafür gibt es dieses Forum. ;)
Die korrekte "udev-rule" haben dir @josef-wien und @Gräfin Klara (Link oben) schon geschrieben.
Spielwurm hat geschrieben: 4. Nov 2021, 10:01 was ist denn, wenn ich mal eine andere Maus benutze? Dann muss ich die Regel neu schreiben mit anderer Firma und Produkt
Genau. Wenn du z.B. drei verschiedene Mäuse an diesem Notebook betreibst, legst du in der Datei "/etc/udev/rules.d/90-acpi.rules" drei udev-rules an, die sich nur in Vendor-ID und Product-ID der Mäuse unterscheiden.

Beispiel:

Code: Alles auswählen

lsusb
Bus 002 Device 004:  ID 04b4 : 0060 Cypress Semiconductor Corp. Wireless optical mouse 🐭
idVendor und idProduct sind hier die Angabe bei ID 04b4 : 0060.
Diese IDs stammen vom Hersteller selbst, und die werden von allen Betriebssystemen verwendet.
abgdf
Guru
Guru
Beiträge: 3411
Registriert: 13. Apr 2004, 21:15

Re: Brauche Hilfe mit einem Shell-Script

Beitrag von abgdf »

josef-wien hat geschrieben: 3. Nov 2021, 17:30Und wenn es weder 1-8 noch 1-9 heißt, stehst Du wieder am Anfang Deines Problems.
Ja, und wessen Fehler ist das?
Warum kann dieser udev-Kram die relevanten Systemeinstellungen nicht immer an dieselbe Stelle schreiben, so daß der Benutzer (oder ein Skript des Benutzers) sie da auch findet?
Ich habe den Verdacht, hier geht es mal wieder darum, die Systemeinstellungen zu verschleiern und vage zu machen, und dem Benutzer so die Kontrolle über das System ("the control over his own computing" (Stallman)) zu nehmen. Und das ist klar abzulehnen.
Christina
Member
Member
Beiträge: 190
Registriert: 4. Mär 2019, 13:44

Re: [gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von Christina »

Ich möchte noch was anmerken.
Bevor man mehrere udev-rules für diverse Mäuse anlegt, kann man statt ausprobieren auch vorher nachsehen, ob Linux das bereits automatisch selbst erledigt hat.
So schaue ich nach: (Vielleicht kennt jemand hier einen kürzeren Weg?)

Code: Alles auswählen

$ lsusb
Bus 002 Device 004: ID 04b4:0060 Cypress Semiconductor Corp. Wireless optical mouse
Bus 002 und Device 004 werden jetzt benötigt.

Code: Alles auswählen

$ udevadm info -q path -n /bus/usb/002/004
/devices/pci0000:00/0000:00:14.0/usb2/2-8
Einfügen: /sys{…}/power/wakeup sowie ein Backslash vor jedem Doppelpunkt.

Code: Alles auswählen

$ cat /sys/devices/pci0000\:00/0000\:00\:14.0/usb2/2-8/power/wakeup
disabled
Hier ist die "eigene" udev-rule nicht nötig. Wenn der PC trotzdem aus dem Suspend to RAM aufwacht, muss man sich eine ganz andere Lösung überlegen (Link oben) oder die Maus in Sicherheit bringen. Ich lege sie dann unter den PC-Monitor.
josef-wien
Ultimate Guru
Ultimate Guru
Beiträge: 5653
Registriert: 23. Sep 2008, 17:09

Re: [gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von josef-wien »

Christina hat geschrieben:einen kürzeren Weg
Vielleicht:

Code: Alles auswählen

grep . /sys/bus/usb/devices/*/product /sys/bus/usb/devices/*/power/wakeup

Um alle Mäuse zu erwischen:

Code: Alles auswählen

SUBSYSTEM=="input", ACTION=="add", ENV{ID_INPUT_MOUSE}=="?*", TEST=="../../../../power/wakeup", ATTR{../../../../power/wakeup}="disabled"
Aber auch das ist nicht in Stein gemeißelt, während der Weiterentwicklung des 3er-Kernel wurde z. B. das "input subsystem" von neben nach unterhalb des "hidraw subsystem" verlegt, was natürlich Auswirkungen auf die Regel hatte. Ich ziehe eine auf die jewelige Maus ausgerichtete Regel vor, bei einem neuen Drucker muß man schließlich auch einmalig etwas tun. Dann fällt mir noch ein, daß bei den Distributionen mit überladener initrd möglicherweise diese neu erstellt werden muß.
Christina
Member
Member
Beiträge: 190
Registriert: 4. Mär 2019, 13:44

Re: [gelöst] Brauche Hilfe mit einem Shell-Script

Beitrag von Christina »

Vielen Dank für den Tipp nach grep . /
Das genügt für einen kurzen Überblick.

/sys/bus/usb/devices/2-8 ist nur ein Symlink, hier nach /sys/devices/pci0000\:00/0000\:00\:14.0/usb2/2-8

Linux hat schon so eine "rule", um alle Mäuse zu erwischen (power/wakeup). Aber das klappt in ganz wenigen Fällen nicht, darum auch dieser Thread.
Antworten