Domanda

Voglio installare Java su molti computer che utilizzano ssh così voglio scrivere uno script bash che farà (o meno):

for c in computers
do    
   scp jre--.rpm $c
   ssh $c 'sudu -s; chmod a+x jre--.rpm ; ./jre--.rpm; echo "success!"'
done

Il problema è che durante l'installazione di Java ho bisogno di "leggere" il bando e digitare "sì" alla fine. Come lo faccio? C'è un modo più facile di "prevedere"? E se non come il mio posto nello script bash?

grazie mille

È stato utile?

Soluzione 2

aspettare è la strada da percorrere (grazie http://www.dnmouse.org/java.html ):

   for c in computers
   do    
       scp jre--.rpm $c
       ssh -t $c 'sudo -s; yum -y install expect; sudo chmod a+x jre--.rpm'
       ssh -t $c '/usr/bin/expect -c \
       "set timeout -1; spawn ./jre-6u13-linux-x64-rpm.bin; sleep 1; send -- q\r; sleep 1; send -- yes\r; expect eof"
       echo "success!"'
   done

Altri suggerimenti

Per prima cosa, registrare i tasti necessari per un file in questo modo:

cat > keystrokes

Hit Ctrl + C quando hai finito le battiture di registrazione. Controllare il contenuto del file. Alcuni tasti come TAB possono non registrare correttamente ma è ancora possibile modificare il file con un editor di testo. Si noti che scorrendo verso il basso su una console (ad esempio durante la lettura di uscita dal more) in genere può essere fatto con la barra spaziatrice.

È possibile scp questo file come già fate con il numero di giri. Successivamente, il tubo il contenuto dei file di tasti allo standard input dell'installatore:

cat keystrokes | ./someinstaller

modifica Mi dispiace sentire che non funziona. Forse si può dare un'occhiata a aspettarsi , che è uno strumento Unix progettato per questo genere di cose . Penso che è incluso nella maggior parte dei GNU / Linux distribuzioni. Se si ha familiarità con Python è preferibile pexpect .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top