2009-09-30 7 views
5

chcę zainstalować oprogramowanie Java na wielu komputerach za pomocą ssh, więc chcę napisać skrypt bash, który zrobi (w przybliżeniu):Instalacja java na linux używając ssh

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

Problem polega na tym, że podczas instalacji java I należy "przeczytać" ogłoszenie i wpisać "tak" na końcu. Jak mam to zrobić? Czy istnieje łatwiejszy sposób niż "oczekiwać"? A jeśli nie, w jaki sposób dopasować go do skryptu bash?

thanks a lot

Odpowiedz

1

spodziewać jest do zrobienia (dzięki 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

używam czerwoną czapkę - jedynie „yum install” i instaluje otwartą Java, który jest bezwartościowy – Guy

+0

Podobno jest tam plik można stwórz, które w chwili obecnej pominieją akceptację EULA - nie ma pojęcia, który plik - ale może pomóc. – rajax

+0

brzmi jak to, czego potrzebuję - jakąkolwiek wskazówkę, jak to zrobić? – Guy

2

Najpierw nagrywać niezbędne klawiszy do pliku jak poniżej:

cat > keystrokes 

naciśnij Ctrl + C, gdy” ponownie wykonuj nagrywanie naciśnięć klawiszy. Sprawdź zawartość pliku. Niektóre klawisze, takie jak TAB, mogą nie nagrywać poprawnie, ale nadal możesz edytować plik za pomocą edytora tekstu. Zwróć uwagę, że przewijanie w dół na konsoli (np. Podczas odczytu wyjścia z more) można zwykle wykonać za pomocą spacji.

Możesz scp ten plik, jak już robisz z rpm. Następnie rura treść klawiszy plik do standardowego wejścia instalatora:

cat keystrokes | ./someinstaller 

edit: Przykro mi to nie działa. Być może możesz spojrzeć na expect, który jest narzędziem uniksowym przeznaczonym do tego typu rzeczy. Myślę, że jest on zawarty w większości dystrybucji gnu/linux. Jeśli znasz Pythona, możesz zamiast tego preferować pexpect.

+0

To prawie działa, ale nie do końca. Wygląda na to, że dane wejściowe są słyszalne dopiero po ręcznym naciśnięciu klawisza SPACJA. – Guy

+0

wypróbowany również - nie działa – Guy