DOMANDA Macchina virtuale che si avvia quando metto un dispositivo specifico ? Possibile ?

Pubblicità
@Ico Bellungi non si potrebbe intervenire tramite una regola udev?

Una cosa del genere: udev - How to run custom scripts upon USB device plug-in? - Unix & Linux Stack Exchange

In cui si specificano i dati del dispositivo (restituiti da lsusb)
Scusa ma non sono esperto e non saprei cosa dovrei fare di preciso nella guida se mi puoi spiegare in parole povere visto che sono nuovo su linux o sennò la userò normalmente la macchina virtuale se non mi riesce.
Grazie ancora :birra:
 
Allora, soluzione quasi funzionante

EDIT 0) installare zenity

1) creare una macchina virtuale su virtualbox con un nome semplice, senza spazi. Io ad esempio l'ho chiamata prova. Confermare la sua esistenza e il nome tramite il comando da terminale 'VBoxManage list vms'


Codice:
VBoxManage list vms
"prova" {0d48dada-b8bd-4fec-8050-5b09de5e07e8}


Notare per prima cosa il nome, seguito da un id univoco.


2) con un editor di testo (tipo gedit), in una cartella inserire un file di testo di nome avvia-vm.sh. Io per comodità ho scelto la home utente, che nel mio caso è /home/davide. Il contenuto è il seguente


Codice:
#!/bin/bash
zenity --question --title="Ho trovato lo smarthwatch Garmin" --text="Avviare macchina virtuale?"
response=$? # last exit code
if [ $response -eq 0 ]; then
        VBoxManage startvm prova
fi


Sostituire nella penultima riga il nome corretto della macchina virtuale; fare click destro sul file, scegliere proprietà e rendere eseguibile.


Nella stessa cartella creare un altro file di nome garmin-detected.sh. Il contenuto è il seguente


Codice:
#!/bin/bash
su - davide -c 'export DISPLAY=:0; bash -c /home/davide/avvia-vm.sh & exit'


Anche questo file deve essere eseguibile. Sostituire a "davide" il proprio nome utente e inserire il percorso corretto dello script avvia-vm.sh.




3) avviare un terminale
4) inserire nella porta USB il dispositivo
5) dare il comando lsusb
6) prendere nota di idVendor e idProduct, che sarebbero i codici alfanumerici di quattro caratteri prima della descrizione del dispositivo


esempio: io sto provando con la chiavetta usb inserita, e vedo idProduct 0165 (a destra dei due punti) e idVendor 1307 (a sinistra)


Codice:
Bus 003 Device 043: ID 1307:0165 Transcend Information, Inc. 2GB/4GB/8GB Flash Drive


7) sempre da terminale, digitare sudo nano /etc/udev/rules.d/99-garmin.rules
8) digitare la password utente, premere invio, si apre l'editor "nano"
9) fare copia incolla (scorciatoia: control shift v, oppure click destro) del seguente testo, avendo cura di sostituire idProduct e idVendor del prodotto garmin, oltre che il percorso corretto dello script


Codice:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idProduct}=="0165", ATTRS{idVendor}=="1307", RUN+="/home/davide/garmin-detected.sh"


10) premere control x, nano chiede la conferma di salvare le modifiche, dire di sì con il tasto s (se il sistema operativo è in italiano, o y se inglese), poi invio
11) scrivere


Codice:
sudo udevadm control --reload-rules


(digitare password e premere invio se richiesto)


12) inserire di nuovo il dispositivo e verificare che appaia una finestrella con la domanda


All'inizio ho scritto che funziona male perché, nel mio caso, lo script viene eseguito più volte, in quanto la regola di udev viene eseguita più volte. Se a te con il dispositivo garmin lo script viene eseguito una sola volta, siamo già a posto, altrimenti troviamo il modo di aggirare il problema.


Per scoprire quali eventi di udev vengono eseguiti, staccare il dispositivo, aprire un terminale e digitare 'sudo udevadm monitor' (digitare password e premere invio come al solito), poi inserire il dispositivo
'
 
Ultima modifica:
@Davide Olianas: complimenti per la paienza :asd: Lo scheletro può essere usato per mille altre cose, assolutamente da provare, grazie :D
 
@alex87alex ho dimenticato il comando per verificare la validità delle regole... Questo pomeriggio aggiungo, magari riscrivendo meglio ne posso anche fare una guida per la sezione
 
Pubblicità
Pubblicità
Indietro
Top