Difference between revisions of "Execute on USB insert (Italiano)"

From ArchWiki
Jump to: navigation, search
m
(tradotta la pagina)
Line 1: Line 1:
 
{{i18n|Execute on usb insert}}
 
{{i18n|Execute on usb insert}}
 +
[[Category:HOWTOs (Italiano)]]
 
{{translateme}}
 
{{translateme}}
 
{{Nota|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
 
{{Nota|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
  
Suppose you want to execute a certain program on the insertion of a usb dongle.
+
Supponendo di voler eseguire un certo programma all’inserimento di una pennina USB.
Personally, I added this feature because I was getting frustrated with the computer locking up and all keyboard and mouse input was lost (The sysrq keys were not working).
+
Personalmente, ho aggiunto questa caratteristica perché mi ero stufato dei blocchi del pc dove tastiera e mouse sono inservibili(anche le scorciatoie da tastiera non fuznionano).
  
There is an added security feature so that only dongles with the correct key can run the program.
+
Quindi ho aggiunto una misura di sicurezza, in modo che solo una chiavetta USB contenente la giusta chiave potesse eseguire il programma.
  
== Installation ==
+
== Installazione ==
  
Put a copy of the [[Execute_on_usb_insert#exdongle_script|{{Filename|exdongle}} script]] (given below) in your path.
+
Mettere una copia dello [[#exdongle_script|script {{Filename|exdongle}}]] (che trovate più in basso) nella cartella degli eseguibili(uno dei percorsi indicati nella variabile d’ambiente {{Codeline|$PATH}} comunemente è consigliato usare {{Filename|/usr/bin/}}).
  
Add the following line to your udev [[Udev#Auto_mounting_USB_devices|USB mount rule]] (Modify to fit your configuration):
+
Aggiungere la seguente linea alla [[Udev_(Italiano)#Mount_automatico_delle_periferiche_USB|regola di mount delle periferiche USB]] (modificarla a seconda della propria configurazione):
  
  ACTION=="add", RUN+="/usr/bin/exdongle run /media/%k-%E{dir_name}"
+
ACTION=="add", RUN+="/usr/bin/exdongle run /media/%k-%E{dir_name}"
  
Run the configuration option, for example
+
Eseguire l’opzione di configurazione, per esempio
  
  exdongle conf -k "$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM" -p "-10" -s "on"
+
exdongle conf -k "$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM" -p "-10" -s "on"
  
This sets the configuration to a random key value (only programs with the correct keys can be run on the computer), and the runtime priority to -10.
+
Questo imposta la configurazione con chiavi casuali(solo con le chiavi giuste potranno essere eseguiti sul computer i programmi o gli script), e la priorità di esecuzione a -10
  
== Setting up a USB dongle ==
+
== Configurare una pennina USB ==
  
First, write a script that you want to run when the dongle is inserted.
+
Per prima cosa, scrivere lo script che verrà inserito all’inserimento della pennina.
  
For example:
+
Ad esempio:
  
 
{{File|name=test.sh|content=<nowiki>
 
{{File|name=test.sh|content=<nowiki>
Line 34: Line 35:
 
</nowiki>}}
 
</nowiki>}}
  
Now run the new option:
+
Adesso eseguire nuovamente {{Filename|exdongle}} utilizzando l'opzione {{Codeline|new}}:
  
  exdongle new <Dongle mount point> test.sh
+
exdongle new <punto di mount della pennina USB> test.sh
  
Now, whenever you insert the dongle, a root shell will be opened under the X server running on display :0.
+
Ora, ogni volta che viene inserita la pennina, una finestra di terminale, lanciata dall’utente root verrà eseguita sul display {{Codeline|:0}}.
This may be useful for some administrative purposes.
+
Questo può essere utile per scopi di amministrazione.
  
== Security ==
+
== Sicurezza ==
 
+
There may be security issues with this, and it is probably best used only on a personal computer.
+
  
 +
Potrebbe esserci un problema di sicurezza con questa procedura, ed è quindi consigliato utilzzarla solo su pc domestici.
 
== exdongle script ==
 
== exdongle script ==
  
Line 60: Line 60:
 
function usage() {
 
function usage() {
  
  echo ""
+
echo ""
  echo "USAGE: $0 new <DIR> <PROG>"
+
echo "USAGE: $0 new <DIR> <PROG>"
  echo "      $0 del <DIR>"
+
echo "      $0 del <DIR>"
  echo "      $0 conf [-k KEY] [-p PRIORITY] [-s SWITCH]"
+
echo "      $0 conf [-k KEY] [-p PRIORITY] [-s SWITCH]"
  echo "      $0 run <DIR>"
+
echo "      $0 run <DIR>"
  echo ""
+
echo ""
  echo "  new:"
+
echo "  new:"
  echo "    DIR <S>:    The directory on the dongle to execute"
+
echo "    DIR <S>:    The directory on the dongle to execute"
  echo "    SCRIPT <S>: The script to run on dongle"
+
echo "    SCRIPT <S>: The script to run on dongle"
  echo ""
+
echo ""
  echo "  del:"
+
echo "  del:"
  echo "    DIR [S]: The directory on the dongle to execute"
+
echo "    DIR [S]: The directory on the dongle to execute"
  echo ""
+
echo ""
  echo "  conf:"
+
echo "  conf:"
  echo "    -k <S>: specify key"
+
echo "    -k <S>: specify key"
  echo "    -p <N>: priority to run script at"
+
echo "    -p <N>: priority to run script at"
  echo "    -s <on|off>: Activate or deactivate exdongle"
+
echo "    -s <on|off>: Activate or deactivate exdongle"
  echo ""
+
echo ""
  echo "  run:"
+
echo "  run:"
  echo "    DIR <S>: Directory to find script in"
+
echo "    DIR <S>: Directory to find script in"
  echo ""
+
echo ""
  
  exit 0
+
exit 0
  
 
}
 
}
Line 90: Line 90:
 
function new() {
 
function new() {
  
  if [ ! "$#" -eq 3 ]; then
+
if [ ! "$#" -eq 3 ]; then
 
     usage $@;
 
     usage $@;
 
     exit 1;
 
     exit 1;
  fi
+
fi
  
  DIR="$2"
+
DIR="$2"
  PROG="$3"
+
PROG="$3"
  PLOC="$DIR/.$(hostname).$key"
+
PLOC="$DIR/.$(hostname).$key"
  
  rm "$PLOC" &> /dev/null
+
rm "$PLOC" &> /dev/null
  cp "$PROG" "$PLOC"
+
cp "$PROG" "$PLOC"
  
  exit 0
+
exit 0
  
 
}
 
}
Line 110: Line 110:
 
function del() {
 
function del() {
  
  DIR="$2"
+
DIR="$2"
  PLOC="$DIR/.$(hostname).$key"
+
PLOC="$DIR/.$(hostname).$key"
  
  if [ -e "$PLOC" ]; then
+
if [ -e "$PLOC" ]; then
 
     rm -f "$PLOC"
 
     rm -f "$PLOC"
  fi
+
fi
  
  exit 0
+
exit 0
  
 
}
 
}
Line 125: Line 125:
 
function conf() {
 
function conf() {
  
  shift
+
shift
  while getopts "k:p:s:" optname; do
+
while getopts "k:p:s:" optname; do
 
     case "$optname" in
 
     case "$optname" in
      k)
+
    k)
        key="$OPTARG"
+
      key="$OPTARG"
        ;;
+
      ;;
      p)
+
    p)
        priority="$OPTARG"
+
      priority="$OPTARG"
        ;;
+
      ;;
      s)
+
    s)
        if [ "$OPTARG" = "on" ] || [ "$OPTARG" = "off" ]; then
+
      if [ "$OPTARG" = "on" ] || [ "$OPTARG" = "off" ]; then
          switch="$OPTARG"
+
        switch="$OPTARG"
        fi
+
      fi
        ;;
+
      ;;
 
     esac
 
     esac
  done
+
done
  
  echo "# exdongle configuration file" > "$CONFFILE"
+
echo "# exdongle configuration file" > "$CONFFILE"
  echo "key=\"$key\"" >> "$CONFFILE"
+
echo "key=\"$key\"" >> "$CONFFILE"
  echo "priority=\"$priority\"" >> "$CONFFILE"
+
echo "priority=\"$priority\"" >> "$CONFFILE"
  echo "switch=\"$switch\"" >> "$CONFFILE"
+
echo "switch=\"$switch\"" >> "$CONFFILE"
  
  chmod 0600 "$CONFFILE"
+
chmod 0600 "$CONFFILE"
  
  exit 0
+
exit 0
  
 
}
 
}
Line 157: Line 157:
 
function run() {
 
function run() {
  
  if [ ! "$switch" = "on" ]; then
+
if [ ! "$switch" = "on" ]; then
 
     exit 0
 
     exit 0
  fi
+
fi
  
  if [ ! "$#" -eq 2 ]; then
+
if [ ! "$#" -eq 2 ]; then
 
     usage $@
 
     usage $@
 
     exit 1
 
     exit 1
  fi
+
fi
  
  DIR="$2"
+
DIR="$2"
  PLOC="$DIR/.$(hostname).$key"
+
PLOC="$DIR/.$(hostname).$key"
  ELOC="/tmp/.exdongle.prog"
+
ELOC="/tmp/.exdongle.prog"
  
  if [ ! -e "$PLOC" ]; then
+
if [ ! -e "$PLOC" ]; then
 
     echo "No executable file found!" 1>&2
 
     echo "No executable file found!" 1>&2
 
     exit 0
 
     exit 0
  fi
+
fi
  
  rm -f "$ELOC"
+
rm -f "$ELOC"
  cp "$PLOC" "$ELOC"
+
cp "$PLOC" "$ELOC"
  chmod 0500 "$ELOC"
+
chmod 0500 "$ELOC"
  nice -n "$priority" $ELOC
+
nice -n "$priority" $ELOC
  rm -f "$ELOC"
+
rm -f "$ELOC"
  exit 0
+
exit 0
  
 
}
 
}
Line 187: Line 187:
  
 
if [ ! "$UID" == "0" ]; then
 
if [ ! "$UID" == "0" ]; then
  echo "You must be root to perform this operation" 1>&2
+
echo "You must be root to perform this operation" 1>&2
  exit 1
+
exit 1
 
fi
 
fi
  
 
if [ -e "$CONFFILE" ]; then
 
if [ -e "$CONFFILE" ]; then
  . "$CONFFILE"
+
. "$CONFFILE"
 
fi
 
fi
  
 
case "$1" in
 
case "$1" in
  new)
+
new)
 
     new "$@"
 
     new "$@"
 
     ;;
 
     ;;
  del)
+
del)
 
     del "$@"
 
     del "$@"
 
     ;;
 
     ;;
  conf)
+
conf)
     conf "$@"  
+
     conf "$@"
 
     ;;
 
     ;;
  run)
+
run)
 
     run "$@"
 
     run "$@"
 
     ;;
 
     ;;
  *)
+
*)
 
     usage "$@"
 
     usage "$@"
 
     ;;
 
     ;;
Line 217: Line 217:
 
</nowiki>}}
 
</nowiki>}}
  
== Notes ==
+
== Note ==
  
Some notes:
+
Alcune note:
* The programs/scripts used should be self contained, the only file treated is the one passed.
+
* I programmi/script usati dovrete fornirveli autonomamente, l’unico file che vi sarà dato sara questo..

Revision as of 00:04, 15 January 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Execute on USB insert (Italiano)#)
Nota: Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.

Supponendo di voler eseguire un certo programma all’inserimento di una pennina USB. Personalmente, ho aggiunto questa caratteristica perché mi ero stufato dei blocchi del pc dove tastiera e mouse sono inservibili(anche le scorciatoie da tastiera non fuznionano).

Quindi ho aggiunto una misura di sicurezza, in modo che solo una chiavetta USB contenente la giusta chiave potesse eseguire il programma.

Installazione

Mettere una copia dello [[#exdongle_script|script Template:Filename]] (che trovate più in basso) nella cartella degli eseguibili(uno dei percorsi indicati nella variabile d’ambiente Template:Codeline comunemente è consigliato usare Template:Filename).

Aggiungere la seguente linea alla regola di mount delle periferiche USB (modificarla a seconda della propria configurazione):

ACTION=="add", RUN+="/usr/bin/exdongle run /media/%k-%E{dir_name}"

Eseguire l’opzione di configurazione, per esempio

exdongle conf -k "$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM" -p "-10" -s "on"

Questo imposta la configurazione con chiavi casuali(solo con le chiavi giuste potranno essere eseguiti sul computer i programmi o gli script), e la priorità di esecuzione a -10

Configurare una pennina USB

Per prima cosa, scrivere lo script che verrà inserito all’inserimento della pennina.

Ad esempio:

Template:File

Adesso eseguire nuovamente Template:Filename utilizzando l'opzione Template:Codeline:

exdongle new <punto di mount della pennina USB> test.sh

Ora, ogni volta che viene inserita la pennina, una finestra di terminale, lanciata dall’utente root verrà eseguita sul display Template:Codeline. Questo può essere utile per scopi di amministrazione.

Sicurezza

Potrebbe esserci un problema di sicurezza con questa procedura, ed è quindi consigliato utilzzarla solo su pc domestici.

exdongle script

Template:File

Note

Alcune note:

  • I programmi/script usati dovrete fornirveli autonomamente, l’unico file che vi sarà dato sara questo..