GNU/Linux >> Znalost Linux >  >> Ubuntu

Ubuntu – Spuštění akce, když je připojen konkrétní svazek?

Mám USB klíč, který obsahuje moji databázi hesel keepass2, a rád bych provedl nějaké akce, když je připojen k mému počítači, konkrétně:

  • Automaticky jej připojit k určitému konkrétnímu umístění
  • Když je připojení provedeno správně, spustí se keepass2 v souboru databáze hesel

Myslím, že jednoduché úkoly, ale nemůžu najít, jak to udělat.

Používám Ubuntu 12.10 a automaticky připojí zařízení jako „mediální usb klíč“ a pokusí se na něm otevřít obrázky (i když žádné nejsou).

Jaký je nejlepší způsob, jak to udělat a jak deaktivovat automatické připojování ubuntu (aby to nebylo v konfliktu)?

Přijatá odpověď:

Když se objeví nové zařízení, udev je upozorněn. Normálně vytvoří soubor zařízení pod /dev na základě vestavěných pravidel¹. Tato pravidla můžete přepsat a změnit umístění souboru zařízení nebo spustit libovolný program. Zde je příklad takového pravidla udev:

KERNEL=="sd*", ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="123456789", NAME="keepass/s%n", RUN+="/usr/local/sbin/keepass-drive-inserted /dev/%k%n"

NAME= direktiva mění umístění souboru zařízení, zahrnul jsem ji pro ilustrační účely, ale pravděpodobně to není užitečné pro váš případ použití. ATTRS pravidla identifikují zařízení; spusťte udevinfo -a -n /dev/sdz když je disk dostupný jako /dev/sdz abyste viděli, jaké má atributy. Pozor, můžete použít pouze ATTRS pravidla z jedné části udevinfo vstup (kromě toho můžete použít ATTR pravidla z úvodní části). Další informace naleznete v části Vysvětlení výstupu `udevadm info -a -n /dev/sdb`. Toto pravidlo jde do souboru nazvaného něco jako /etc/udev/rules.d/local-storage-keypass.rules .

Vložte příkazy, které chcete spustit, do skriptu uvedeného v RUN směrnice. Něco jako:

#!/bin/sh
set -e
if [ -d /media/keypass-drive ]; then
  [ "$(df -P /media/keypass-drive | awk 'NR==2 {print $1}')" = "$(df -P /media | awk 'NR==2 {print $1}')" ]
else
  mkdir /media/keypass-drive
fi
mount "$1" /media/keypass-drive
su ereon -c 'keypass2' &

Pokud máte potíže se spuštěním programu GUI ze skriptu spouštěného z udev, přečtěte si článek Mohu spustit grafický program na ploše jiného uživatele jako root?

¹ Ne na moderních systémech, kde je /dev je na udevtmpfs.


Ubuntu
  1. Jak přidat odkládací soubor na Ubuntu

  2. Když spustitelné soubory nejsou?

  3. Žádný zvuk při spuštění v Ubuntu 11.10?

  1. Přidání swapového svazku?

  2. Jak aktualizovat Ubuntu, když nejste připojeni k internetu?

  3. Jak nainstalovat g ++ na Ubuntu

  1. Jak změnit název hostitele na Ubuntu 18.04

  2. Jak odstranit soubor na Ubuntu Linux

  3. Jak připojit vaše zařízení Android na Ubuntu Linux