Portál AbcLinuxu, 30. dubna 2025 12:42

Notebook alarm

15.5.2009 23:43 | Přečteno: 1259× | ThinkPad | poslední úprava: 16.5.2009 01:39

Na ThinkWiki jsem narazil na moc zajímavý nápad a rozhodl jsem se udělat to po svém…

Odkazovaná stránka obsahuje skript v perlu, ale já jsem si to napsal v bashi, protože Perl není můj kobyl :P.

Říkáte si k čemu je to dobré? No popravdě řečeno, pořádně k ničemu, ale jako vtípek je to fajn a možná, až nebudete chtít, aby někdo odešel jen tak s vaším notebookem, tak to najde i pořádné uplatnění.

Moje implementace vypadá následovně:

$ cat /usr/local/bin/tp_theft.sh 
#!/bin/bash                                            
siren_volume=80                                        
control="Master"                                       
siren_cmd="sox -t null /dev/null -t alsa synth 1 sine 2000-4000 sine 4000-2000"
test_cmd="sox -t null /dev/null -t alsa synth 0.5 sine 2000-2000"              
max_siren_count=5                                                              
thresh=3                                                                       
interval=0.1
depth=10
hdaps_file='/sys/devices/platform/hdaps/position'

################################################################################
x_pos=0
y_pos=0
dangerous_count=0

trap '$test_cmd' EXIT

$test_cmd
sleep 0.1
$test_cmd

while true; do
    sleep $interval

    x_pos_last=$(sed -e s/,.*/\)/ $hdaps_file)
    y_pos_last=$(sed -e s/.*,/\(/ $hdaps_file)
    x_delta=$(($x_pos - $x_pos_last))
    y_delta=$(($y_pos - $y_pos_last))
    x_pos=$x_pos_last
    y_pos=$y_pos_last

    if [ $x_delta -lt $thresh -a $y_delta -lt $thresh -a \
        $x_delta -gt -$thresh -a $y_delta -gt -$thresh ]; then
        [ $dangerous_count -gt 0 ] &&
            dangerous_count=$(($dangerous_count - 1))
    else
        [ $dangerous_count -gt $(($depth + $max_siren_count)) ] ||
            dangerous_count=$(($dangerous_count + 1))
    fi

    if [ $dangerous_count -gt $depth ]; then
        amixer set $control on
        amixer set $control $siren_volume%
        $siren_cmd
    fi
done

Spouštění je řešeno ACPI tlačítkem, které vykoná následující:

if ! killall tp_theft.sh; then
    lock
    /usr/local/bin/tp_theft.sh&
fi

lock zamkne obrazovku, mimo to je vhodné zaklapnout víko displeje, aby se nedal notebook jednoduše vypnout, nebo stiskem vhodného tlačítka zabít skript na hlídání. Ono stejně potencoiálního zloděje asi nenapadne vypnout notebook nebo oddělávat baterii, prostě vidí a bere :P.

No a to je vše, užijte si houkání, a jen na závěr, musíte mít HDAPS, ale to je snad z podstaty věci jasné.

       

Hodnocení: 100 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Milan Lajtoš avatar 16.5.2009 00:01 Milan Lajtoš | skóre: 22 | blog: /blog/babraq
Rozbalit Rozbalit vše Re: Notebook alarm
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja to mám vyriešené trošku jednoduchšie - spustím hudbu (nejaký metal), zastrčím sluchátka, nastavím sluchátkam požadovanú úroveň hlasitosti, front a master nastavím na maximum. Sluchátka mám v ušiach celú noc a preistotu niekedy ešte okolo stoličky obmotané, takže prípadného záujemca prekvapí môj kvalitný metalový výber uprostred noci.

HDAPS nemám, takže to nemôžem vyskúšať (btw ja by som si to prepísal do pythonu :) ), no v poslednej dobe som rozmýšľal nad kensington lockom, no akosi sa mi do toho nechce...
“Every great achievement was once considered impossible.”

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