Ocena wątku:
- 0 Głosów - 0 Średnio
- 1
- 2
- 3
- 4
- 5
|
[BASH] Zablokowanie wylaczenie komputera...
|
| Autor |
Wiadomość |
rryk
Użytkownik
Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
|
[BASH] Zablokowanie wylaczenie komputera...
Jak zrobic aby pojedyncze wcisniecie przycisku POWER na obudowie nie wyłączyło linuxa..
Ps. i moze jeszcze ktoś wie jak zrobic aby read zczytywał także klawisze funkcyjne jak alt, shift, enter, tab etc. oprócz crtl...
http://counter.li.org/cgi-bin/certificate.cgi/471137
|
|
| 16.09.2011 15:40:39 |
|
rryk
Użytkownik
Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
|
|
| 16.09.2011 16:04:35 |
|
andrzej3393
Użytkownik
Liczba postów: 27
Dołączył: 10-06-2009
Reputacja: 0
|
RE: [BASH] Zablokowanie wylaczenie komputera...
A może prostacko `chmod -x halt shutdown reboot` tudzież `chmod 700` na wymienione binarki?
/home/andrzej3393
|
|
| 16.09.2011 16:45:02 |
|
rryk
Użytkownik
Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
|
RE: [BASH] Zablokowanie wylaczenie komputera...
@Enlink: pytanie bylo jedno lecz dwuczlonowe bo główne założenie to blokowanie paru przyciskow, a ze calosc ma byc blokowana do czasu do poki pewien skrypt w bashu jest uruchomiony to tez pomyslalem o tym dziale.
@dragonn: bardzo ciekawy sposób - zaraz przeloguje sie na linuxa i sprawdzę co i jak. No i jeszcze nie martw się tak tym wyłączaniem ponieważ chodzi tutaj o zablokowanie wylaczenia komputera podczas używania Clonezilli po skończeniu Clonezilla sama zrestartuje komputer. Chodzi o to, że podczas przywracania klona odpalone jest tty2 ze specjalnym skryptem, ktory informuje, że komputer jest w tej chwili naprawiany i prosi o niedotykanie go przez ten czas, ponad to po wcisnieciu ktoregos z klawiszy, poza klawiszami funkcyjnymi wysyla do mnie sms'a o tym, że ktoś coś majstruje i wlacza alarm (zmiana wiadomosci, dzwieki z glosniczka systemowego etc.). Jedyne czego brakowało to zablokowanie przyciksu wylączenia i resetu . No i o ile resetu raczej nie da się rady zablokować to wiedziałem że z shutdown problemu dużego nie będzie.
@andrzej: to chyba nie poskutkuje, ale zaraz sprawdzę ;p
PS. Dragon w clonezilli nie ma nawet katalogu /etc/acpi
PS2. adnrzej3393 twoj sposob dziala(bynajmniej na CRTL+ALT+DEL zaraz sprawdze jak tam normalnie) jednak zamiast usuwac mu prawa wykonywania zamienie go z innym plikiem
http://counter.li.org/cgi-bin/certificate.cgi/471137
(Ten post był ostatnio modyfikowany: 16.09.2011 22:15:23 przez rryk.)
|
|
| 16.09.2011 21:53:14 |
|
Lachu
Użytkownik
Liczba postów: 41
Dołączył: 22-02-2010
Reputacja: 0
|
RE: [BASH] Zablokowanie wylaczenie komputera...
Co do sześciokrotnego kliknięcia:
W OpenSUSE wystarczy dodać nowy plik w /etc/acpid/ , a tam określić ścieżkę do nowego pliku w /usr/lib/acpid , który będzie za wszystko odpowiadać . Wklejam oba pliki :
/etc/acpid/force_PowerOff
Kod:
# care about shutting down system when power off is pressed six times
event=button/power.*
action=/usr/lib/acpid/force_PowerOff
/usr/lib/acpid/force_PowerOff
Kod:
#!/bin/bash
a=`cat /tmp/force_PowerOff`
if [ "$a" == "5" ]; then
rm /tmp/force_PowerOff
/sbin/halt
else
echo $(( $a + 1 )) > /tmp/force_PowerOff
fi
Co do tematu, to należy wyedytować /etc/inittab(chyba, że twoja dystrybucja z dziwnych powodów nie ma tego pliku). (połączono posty)
Kod:
a=`pidof clonezilla` # czy jakoś tak
if [ "$a" != "" ]; then
wall "Nie zamkniesz systemu"
else
/usr/lib/acpid/power_off
fi
Powyższe rozwiązanie bym proponował. Trzeba jeszcze pamiętać o usunięciu pliku /etc/acpid/power_off, a także zainstalowaniu pidof. Pidof wyświetla numer pid dla zadania o wskazanej nazwie.
(Ten post był ostatnio modyfikowany: 23.09.2011 10:13:00 przez Lachu.)
|
|
| 23.09.2011 09:08:20 |
|
dragonn
Przyjaciel
Liczba postów: 709
Dołączył: 04-02-2009
Reputacja: 12
|
RE: [BASH] Zablokowanie wylaczenie komputera...
Twoje rozwiązanie ale ma jedną wadę, nie ma w nim ograniczenia czasowego miedzy kliknięciami, nie kasuje się ono po czasie, moje rozwiązanie jest bardziej rozbudowane:
Kod:
#!/bin/bash
linenumber=$(cat /tmp/poweroff 2> /dev/null | wc -l)
function check_line {
lastline=$(cat /tmp/poweroff | tail -n1)
linecheck=$(echo -n $lastline | awk '{print $1,$2, $3}')
lineseconds=$(echo -n $lastline | awk '{print $4}')
if [ "$linecheck" = "$(date +"%-j %-H %-M")" ]
then
if test $lineseconds -le $(($(date +%_S)+2)) && test $lineseconds -ge $(($(date +%_S)-2))
then
if [ "$power" = "1" ]
then
echo "$(date +"%-j %-H %-M %-S")" >> /tmp/poweroff
poweroff
fi
else
echo -n "" > /tmp/poweroff
fi
else
echo -n "" > /tmp/poweroff
fi
}
if [ "$linenumber" != "5" ]
then
check_line
echo "$(date +"%-j %-H %-M %-S")" >> /tmp/poweroff
else
power="1"
check_line
fi
Tak skrypt podpinam w swoim systemie, w przypadku arch jest to w /etc/acpi/handler.sh.
|
|
| 23.09.2011 17:55:53 |
|
Użytkownicy przeglądający ten wątek: 4 gości