2009-09-30 6 views
5

Je veux installer Java sur de nombreux ordinateurs en utilisant ssh donc je veux écrire un script bash qui va faire (à peu près):Installation de Java sur Linux en utilisant ssh

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 I besoin de "lire" l'avis et de taper "oui" à la fin. Comment fait-on ça? Y at-il un moyen plus facile que "s'attendre"? Et si ce n'est pas comment je l'intègre dans le script bash?

merci beaucoup

Répondre

1

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 
1
+0

J'utilise un chapeau rouge - que « yum install » et il installe le java ouvert qui est sans valeur – Guy

+0

Apparemment, il y a un fichier que vous pouvez créer qui, lorsqu'il sera présent, passera l'acceptation CLUF - aucune idée quel fichier - mais il pourrait aider. – rajax

+0

cela ressemble à juste ce dont j'ai besoin - des indices sur la façon de le créer? – Guy

2

Tout d'abord, enregistrer les frappes de touches nécessaires à un fichier comme celui-ci:

cat > keystrokes 

Appuyez sur Ctrl + C lorsque vous » Re fait d'enregistrer des frappes. Vérifiez le contenu du fichier. Certaines touches comme TAB peuvent ne 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 en lisant la sortie de more) peut typiquement être fait avec la barre d'espace.

Vous pouvez scp ce fichier comme vous le faites déjà avec le rpm. 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 à expect, qui est un outil unix conçu pour ce genre de chose. Je pense qu'il est inclus dans la plupart des distributions GNU/Linux. Si vous connaissez Python, vous préférerez peut-être pexpect.

+0

Cela fonctionne presque, mais pas tout à fait. Il semble que l'entrée est entendue seulement après avoir appuyé manuellement sur ESPACE. – Guy

+0

l'a aussi essayé - ne fonctionne pas – Guy

Questions connexes