Portál AbcLinuxu, 7. května 2025 07:32

Dotaz: Napište mi prosím jednoduchý perlový skriptík

18.1.2011 15:15 Razmir
Napište mi prosím jednoduchý perlový skriptík
Přečteno: 628×
Odpovědět | Admin
Ahoj, mám dost specifický problém s wifi, provozuju Ubuntu na notebooku s wifi Atheros, vše funguje jak má, až na to že po uspání (i hibernaci) a probuzení přestane wifi fungovat a neznám řešení, jak ji znovu rozchodit (mimo restartu). Zkoušel jsem vícero řešení, ale jediné, které mi funguje spočívá ve vyhození modulu jádra ath5k starající se o wifinu ještě před uspáním počítače. To provedu pomocí:

sudo modprobe -r ath5k

Po probuzení notebooku zase modul přidám:

sudo modprobe ath5k

Když to takhle udělám, tak se wifina rozběhne. Funguje to, ale je to dost neohrabané, navíc to nemůže dělat nikdo, komu půjčím notebook, protože je potřeba zadávat heslo. Napadlo mě to vyřešit tak, že by existoval skript, který by: Tomuto skriptu bych pomocí setuid flag nastavil, aby ho mohl spouštět každý s právy vlastníka skriptu (roota). Ale už vím, že to nefunguje pro shellové skripty, mělo by to ale fungovat třeba pro Perl. Jako linuxový samouk jsem se pár věcí už naučil, ale takový skript si neumím vyrobit. Pomůžete mi s ním, prosím?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.1.2011 15:20 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na ubuntu by mělo stačit upravit soubor /etc/defaults/acpi-support a přidat řádek
MODULES="ath5k" 
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
18.1.2011 15:47 Razmir
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
jj, na tento způsob jsem už taky narazil a zkoušel. Ač by měl dělat asi to samé, co já dělám ručně, tak se to děje asi nějak jinak, protože to nefunguje. Ale přesto dík za snahu.
18.1.2011 15:48 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
A jakou verzi Ubuntu máš? Jak notebook uspáváš?
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
18.1.2011 15:54 Razmir
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Maverick a uspávám klasicky přes menu v Gnome
18.1.2011 16:12 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
zkusit do souboru /etc/pm/config.d/unload_module dát
SUSPEND_MODULES="ath5k"
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
Bilbo avatar 18.1.2011 16:21 Bilbo | skóre: 29
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin
Při uspání se (s root právy) pouští obvykle pm-suspend a to pak pouští při uaspávání skripty v /usr/lib/pm-utils/sleep.d

Mohlo by pak stačit do adresáře /usr/lib/pm-utils/sleep.d přidat soubor např. 76ath5k a do něj dát tohle:
#!/bin/sh
case "$1" in
 hibernate|suspend)
  rmmod ath5k
  ;;
 thaw|resume)
  modprobe ath5k
  ;;
 *) exit 0
 ;;
esac
Je to elegantnější řešení než "pár sekund čekat a pak modul vrátit" protože někdy se notebook uspí hned, někdy mu to pár vteřin trvá.
Big brother is not watching you anymore. Big Brother is telling you how to live...
Jendа avatar 18.1.2011 16:25 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak především se tohle řeší přes sudo, není potřeba žádná binárka se setuid bitem.

Od určitě verze, nevím jaké (tak dva měsíce zpátky), acpi skriptů je v Debianu adresář /etc/pm/sleep.d/. Do něj si můžeš umístit skript, jako například tento
#!/bin/sh

# Arguments can be:
# "suspend suspend"
# "resume suspend"
# "thaw hibernate"

case "$1" in
 "suspend")
  cryptsetup luksSuspend home
  xscreensaver-command -lock
 ;;
 "resume")
  echo 2 > /proc/acpi/video/VGA/LCDD/brightness
 ;;
esac
Chytrex avatar 19.1.2011 08:20 Chytrex | skóre: 30 | Bohumín
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin
Máš v tom plánu jednu chybu.. U scriptů AFAIK nefungují setuid.. Jak už bylo výše zmíněno, tohle se řeší pomocí sudo.
Hrdý člen KERNEL ULTRAS .:. define QUESTION ((bb) || !(bb)) .:. Odmítám vaši realitu a nahrazuji ji svou vlastní..
20.1.2011 16:30 none
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Nema chybu v planu. Perlovskym skriptum lze za urcitych okolnosti dat SUID bit.
Bilbo avatar 20.1.2011 22:41 Bilbo | skóre: 29
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Ano, pokud se perlovskému interpretu taky dá SUID bit, tak je to tuším "oficiálně" podporovaná kombinace. Ale s trochou štěstí (je-li skript děravý, což lze ze zdrojáku zjistit relativně lehko) je to i cesta k rootovi pro lidi co by toho roota mít neměli ....
Big brother is not watching you anymore. Big Brother is telling you how to live...
Jendа avatar 21.1.2011 15:11 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Ale s trochou štěstí (je-li skript děravý, což lze ze zdrojáku zjistit relativně lehko) je to i cesta k rootovi pro lidi co by toho roota mít neměli ....
V historii je dost příkladů, že security by obscurity ničemu nepomůže.
20.1.2011 16:10 JF | skóre: 23
Rozbalit Rozbalit vše Re: Napište mi prosím jednoduchý perlový skriptík
Odpovědět | | Sbalit | Link | Blokovat | Admin
A proč jako nemůžeš povolit sudo modprobe někomu jinému.

sudo umí omezit pouze někoolik vybraných příkazů a ještě jim přesně naspecifikovat parametry. Takže by se dalo nakonfigurovat tak aby kdokoliv mohl zadat:

sudo modprobe -r ath5k

ale už třeba ne

sudo modprobe -r ath9k

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.