libvirt - script di avvio da utente semplice
Inviato: mer 24 set 2025, 10:14
Partiamo dallo scopo, voglio fare uno script che si lancia così:
Ovviamente lo script serve ad inviare un documento PDF in stampa.
Ora, siccome la stampante in questione non c'è stato verso di gestirla nativamente da Linux, ho messo in piedi un sistema quantomeno "esotico":
- si avvia una VM con windows via libvirt
- sul sistema guest è in ascolto una sorta di servizio, in realtà uno script batch, che se trova uno o più PDF in una directory di "fake spool" li invia alla stampante
- la directory di fake spool fa parte di una directory condivisa in rete con la macchina host
In pratica il mio comando "stampa.sh documento.pdf" dovrà:
- avviare libvirt
- avviare la VM windows
- agganciare la stampante (precedentemente accesa e collegata ovvio) via redirezione USB
- montare la directory condivisa (questo manualmente lo faccio da utente semplice avendo predisposto /etc/fstab)
- copiare il documento da stampare nella directory di fake spool
Vediamo i comandi che lancio a mano solitamente:
da utente, in realtà uso un alias che non ricordavo più si appoggiasse a sudo va be', forse serviva comunque sudo per via di CIFS, ad ogni modo:
E a questo punto la stampa del documento dovrebbe partire.
La domanda che volevo porre qui era la seguente:
come posso fare a creare lo script stampa.sh che esegua tutte queste operazioni?
La domanda può sembrare banale, ma l'aspetto "insidioso" è che vorrei lanciarlo da utente semplice. Ovviamente qualcosa richiederà sudo, ma chiedo soprattutto perché in passato con libvirt avviata via sudo avevo riscontrato dei problemi, probabilmente riguardanti permessi vari che ora non ricordo.
Se avete qualche dritta anche e soprattutto in base alla vostra esperienza con libvirt...
Grazie in anticipo!
Codice: Seleziona tutto
joe@machine~: stampa.sh doc.pdf
Ora, siccome la stampante in questione non c'è stato verso di gestirla nativamente da Linux, ho messo in piedi un sistema quantomeno "esotico":
- si avvia una VM con windows via libvirt
- sul sistema guest è in ascolto una sorta di servizio, in realtà uno script batch, che se trova uno o più PDF in una directory di "fake spool" li invia alla stampante
- la directory di fake spool fa parte di una directory condivisa in rete con la macchina host
In pratica il mio comando "stampa.sh documento.pdf" dovrà:
- avviare libvirt
- avviare la VM windows
- agganciare la stampante (precedentemente accesa e collegata ovvio) via redirezione USB
- montare la directory condivisa (questo manualmente lo faccio da utente semplice avendo predisposto /etc/fstab)
- copiare il documento da stampare nella directory di fake spool
Vediamo i comandi che lancio a mano solitamente:
Codice: Seleziona tutto
su -
/etc/rc.d/rc.libvirt start
virsh start win7
virsh attach-device win7 --file epson-dx4400.xml --live
Codice: Seleziona tutto
sudo /sbin/mount /home/joe/sharelibvirt
cp documento.pdf sharelibvirt/spool
La domanda che volevo porre qui era la seguente:
come posso fare a creare lo script stampa.sh che esegua tutte queste operazioni?
La domanda può sembrare banale, ma l'aspetto "insidioso" è che vorrei lanciarlo da utente semplice. Ovviamente qualcosa richiederà sudo, ma chiedo soprattutto perché in passato con libvirt avviata via sudo avevo riscontrato dei problemi, probabilmente riguardanti permessi vari che ora non ricordo.
Se avete qualche dritta anche e soprattutto in base alla vostra esperienza con libvirt...
Grazie in anticipo!
