Installation de Java sur Linux en utilisant ssh
Question
Je veux installer Java sur de nombreux ordinateurs en utilisant ssh donc je veux écrire un script bash qui va faire (à peu près):
for c in computers
do
scp jre--.rpm $c
ssh $c 'sudu -s; chmod a+x jre--.rpm ; ./jre--.rpm; echo "success!"'
done
Le problème est que lors de l'installation de java je dois « lire » l'avis et le type « oui » à la fin. Comment fait-on ça? Y at-il un moyen plus facile que « attendre »? Et sinon comment je forme dans le script bash?
Merci beaucoup
La solution 2
attendre est la voie à suivre (merci 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
Autres conseils
Tout d'abord, enregistrer les frappes de touches nécessaires à un fichier comme ceci:
cat > keystrokes
Appuyez sur Ctrl + C lorsque vous avez terminé l'enregistrement des frappes. Vérifiez le contenu du fichier. Certaines touches TAB comme ne peuvent pas enregistrer correctement, mais vous pouvez toujours modifier le fichier avec un éditeur de texte. Notez que le défilement vers le bas sur une console (par exemple lors de la lecture de sortie more
) peut généralement être fait avec la barre d'espace.
Vous pouvez scp ce fichier comme vous le faites déjà avec le régime. Ensuite, tuyau le contenu des frappes fichier à l'entrée standard de l'installateur:
cat keystrokes | ./someinstaller
modifier Désolé d'entendre cela ne fonctionne pas. Peut-être que vous pouvez jeter un oeil à attendre , qui est un outil Unix conçu pour ce genre de chose . Je pense qu'il est inclus dans la plupart gnu / linux distributions. Si vous êtes familier avec python vous préférez pexpect à la place.