Press "Enter" to skip to content

Killswitch pro Linux

Last updated on 5. 8. 2021

Občas se může hodit možnost rychle vypnout počítač. Zde jsou dva příklady, jak to udělat.

Klávesová zkratka

  1. V textovém editoru vytvoříme skript, který zavolá okamžité vypnutí počítače. Pro otestování prozatím zakomentujeme příkaz pro vypnutí a vložíme kód pro zapsání textu do souboru killswitch.sh:
    #!/bin/bash
    t=$(date);
    echo $t > /home/ross/tools/killswitch/test;
    #sudo poweroff -f
  2. Pomocí příkazu chmod nastavíme právo pro spuštění:
    $ chmod +x ./killswitch.sh
  3. Zkontrolujeme práva:
    $ ls -al
    total 12

    drwx------ 2 ross ross 4096 31. led 16.23 .
    drwx------ 5 ross ross 4096 26. led 15.35 ..
    -rwx------ 1 ross ross 100 31. led 16.17 killswitch.sh
  4. Nastavíme klávesovou zkratku, která zavolá náš skript. Toto se může lišit podle prostředí. Toto je příklad pro Gnome: Settings -> Keyboard Shortcuts -> + (úplně dole)
    1. Name: cokoliv
    2. Command: Cesta k našemu skriptu
    3. Shortcut: po kliknutí stiskněte požadovanou klávesovou zkratku
    4. Klikněte na “Add”
  5. Test: stiskněte vybranou klávesovou zkratku. Nově vytvořený soubor test by měl obsahovat aktuální čas. Pokud ne, něco je špatně:)
  6. Upravíme skript pro “ostrý provoz”:
    #!/bin/bash
    #t=$(date;echo $USER);
    #echo $t > /home/ross/tools/killswitch/test;
    sudo poweroff -f
  7. Pro zavolání příkazu sudo poweroff -f jsou potřeba administrátorská práva. To můžeme obejít vložením nasledujícího řádku do souboru /etc/sudoers:
    ross ALL = NOPASSWD: /sbin/poweroff
    (poweroff -f zabrání vyskakování potvrzovacích oken a vypne počítač okamžitě)
  8. Uložíme rozdělanou práci a otestujeme klávesovou zkratku.

 

 Vypnutí po odpojení USB zařízení

  1. Připojíme do USB portu zařízení, které chceme použít jako náš killswitch.
  2. Spustíme monitoring připojení zařízení:
    $ udevadm monitor --property
  3. USB zařízení odpojíme z počítače, v terminalu by se měl zobrazit výpis podobný tomuto:
    (...)
    UDEV [18888.225725] remove /devices/pci0000:00/0000:00:14.0/usb1/1-2 (usb)
    ACTION=remove
    DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-2
    SUBSYSTEM=usb
    DEVNAME=/dev/bus/usb/001/038
    DEVTYPE=usb_device
    PRODUCT=950/6535/110
    TYPE=0/0/0
    BUSNUM=001
    (...)
  4. V textovém editoru vytvoříme pravidlo pro zařízení (jako root):
    $ sudo vim /etc/udev/rules.d/85-my_killswitch_rule.rules
  5. Do souboru vložíme následující řádek:
    ACTION=="remove", ENV{PRODUCT}=="950/6535/110", RUN+="/root/killswitch.sh"(obsah proměnné ENV{PRODUCT} zkopírujeme z výpisu příkazu udevadm monitor --property)
  6. Aktualizujeme pravidla (root):$ sudo udevadm control --reload-rules
  7. Jako root vytvoříme v textovém editoru skript /root/killswitch.sh s tímto obsahem:
    #!/bin/sh
    t=$(date);
    echo $t > /root/test

    #shutdown now
    (pozor, skript bude se spouštět pod uživatelem root! Pokud by se někdo dostal k tomuto skriptu, mohl by ho upravit a získat administrátorská práva. Proto musí být pro “běžného” uživatele nedostupný pro zápis.)
  8. Přidáme atribut pro  spuštění
    # chmod +x /root/killswitch.sh
  9. Otestujeme.
  10. Ve skriptu odkomentujeme poslední řadek (vymazáním #).
  11. Připraveno k ostrému testu.