eseguire comandi con script-bash

Per automatizzare e velocizzarne allo stesso tempo l’esecuzione, ho la necessità di eseguire i seguenti comandi, preliminari, all’avvio di GNOME PPP con cui aprire la connessione Internet tramite chiavetta Tim-Oligos100:

$ eject /dev/sr1
# rmmod usb-storage
# modprobe usbserial vendor=0x0b3c product=0xc000

Considerando che , tranne il primo, gli altri sono eseguibili solo da root, vorrei anche attivare nello script la password di root per l’esecuzione dei successivi.
Leggendo un po’ qua, un po’ là, mi sono costruito il seguente file .sh:

[code]#! /bin/sh
eject /dev/sr1
passw=‘user-id --entry --hide-text --text=“Inserisci passw di root .:”’
echo “pass” | sudo rmmod usb-storage
echo “pass” | modprobe usbserial vendor=0x0b3c product=0xc000

fine script[/code]

Ho salvato il file nella scrivania-utente ed ho modificato i permessi con:

# chmod +x /home/piero/Scrivania/script_uno.sh

Ho mandato in escuzione il file come “esegui da terminale”, ma vedo soltanto aprire e chiudere velocemente la finestra-terminale, senza che mi venga richiesto alcunchè. Credo oproprio che ho sbagliato in qualcosa.
:roll: ma cosa?
Mi potete dare per piacere una dritta?
Ciao

EDIT: ho risposto sotto

Prova così:

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read KEY
stty pass
echo "pass" | sudo rmmod usb-storage
echo "pass" | modprobe usbserial vendor=0x0b3c product=0xc000
# fine script

ciao :slight_smile:
chiedo scusa per l’intromissione,
ma potresti provare anche con “expect”.

yum install expect

ti faccio un esempio seplice, poi tu adatterai al tuo caso:
se hai uno script dal nome “cmd.sh” contenente:

su -c ‘fdisk -l’

lo invochi cosi’:

$ autoexpect ./cmd.sh

inserisci la password normalmente, -ed- al termine dell’esecuzione
troverai il file script.exp nella directory corrente;

prova:

$ ./script.exp

Puo servire?

$ man expect
$ man autoexpect

Rileggendo ho trovato un mio errore di battitura:

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read pass
stty echo
echo "pass" | sudo rmmod usb-storage
echo "pass" | modprobe usbserial vendor=0x0b3c product=0xc000
# fine script

Così è corretto. :stuck_out_tongue:

Chiedo scusa per non averlo precisto prima; per ora sto attrezzando un pc con installato Ubuntu 9.10.

[quote=palir1927]
Rileggendo ho trovato un mio errore di battitura:

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read pass
stty echo
echo "pass" | sudo rmmod usb-storage
echo "pass" | modprobe usbserial vendor=0x0b3c product=0xc000
# fine script

Così è corretto. :-P[/quote]
Ho fatto come mi hai detto, però quando, dopo, avvio GNOME PPP per la connessione ricevo sempre il messaggio “Impossibile accedere al modem”, cosa che non succede quando eseguo i comandi singolarmente da terminale root.
E’ come se: non fosse assunta l’autorizzazione con la password di root o non venisse eseguito modprobe.
Ciao.

[quote=pietrosic]
Chiedo scusa per non averlo precisto prima; per ora sto attrezzando un pc con installato Ubuntu 9.10.

[quote=palir1927]
Rileggendo ho trovato un mio errore di battitura:

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read pass
stty echo
echo "pass" | sudo rmmod usb-storage
echo "pass" | modprobe usbserial vendor=0x0b3c product=0xc000
# fine script

Così è corretto. :-P[/quote]
Ho fatto come mi hai detto, però quando, dopo, avvio GNOME PPP per la connessione ricevo sempre il messaggio “Impossibile accedere al modem”, cosa che non succede quando eseguo i comandi singolarmente da terminale root.
E’ come se: non fosse assunta l’autorizzazione con la password di root o non venisse eseguito modprobe.
Ciao.[/quote]

E’ normale…

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read pass
stty echo
echo $pass | sudo rmmod usb-storage
echo $pass | modprobe usbserial vendor=0x0b3c product=0xc000
# fine script

Ho “corretto” una parte del tuo script ora dovrebbe andare… :stuck_out_tongue:

Questo non lo sapevo :slight_smile:
Se volete provarlo …mi sembra funzionalissimo
Grazie Escher!

:smiley: :smiley:
Ho scoperto l’inghippo della mancata connessione. Nello script mancava il parametro “sudo” prima del comando modprobe. Lo script è perciò diventato:

[code]#! /bin/sh

Avvio GNOME PPP per connessione Internet

eject /dev/sr1
echo -n “Inserisci la password sudo:”
stty -echo
read pass
stty echo

$pass=beatopio

echo “$pass” | sudo rmmod usb-storage
echo “$pass” | sudo modprobe usbserial vendor=0x0b3c product=0xc000

fine script[/code]

Vorrei ora raggiungere due obiettivi:
1° Avviare lo script in modo che l’utente non debba digitare la password di root;
2° Richiamare GNOME PPP con la configurazione già definita.

Vorrei perciò ricondurre tutto dentro lo script, in modo da riuscire ad attivare la connessione col solo avvio dello script. È possibile? Ciao
:slight_smile:

su quale fedora gira questo script ?

[quote=virus]
su quale fedora gira questo script ?[/quote]
:-o No, non gira su fedora; gira su Ubuntu, come avevo dichiarato nel post #4.
Comunque, ho riflettuto su quanto espresso nel mio ultimo post

[quote]Vorrei ora raggiungere due obiettivi:
1° Avviare lo script in modo che l’utente non debba digitare la password di root;
2° Richiamare GNOME PPP con la configurazione già definita.

Vorrei perciò ricondurre tutto dentro lo script, in modo da riuscire ad attivare la connessione col solo avvio dello script.[/quote] e credo che tutto sommato la connessione con chiavetta, per questioni di econonmicità, va limitata al tempo di effettiva necessità, per cui lo script va bene così com’è. Pertanto per me è “risolto”.
:smiley:
Grazie a tutti per la cortesia. Ciao.

[quote=palir1927]
Rileggendo ho trovato un mio errore di battitura:

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read pass
stty echo
echo "pass" | sudo rmmod usb-storage
echo "pass" | modprobe usbserial vendor=0x0b3c product=0xc000
# fine script

Così è corretto. :-P[/quote]

Comunque per ottimizzare lo script c’è da fare un’ultima modifica per far sì che il comando sudo funzioni correttamente(sono sbadato in questi giorni, sorry):

#! /bin/sh
eject /dev/sr1
echo -n "Inserisci la password sudo:"
stty -echo
read pass
stty echo
echo "pass" | sudo -S rmmod usb-storage
echo "pass" | sudo -S modprobe usbserial vendor=0x0b3c product=0xc000
# fine script