Installazione di Java su Linux usando ssh
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
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 .