2009-09-30 2 views
5

Я хочу установить Java на многих компьютерах с помощью SSH, поэтому я хочу, чтобы написать Баш скрипт, который будет делать (примерно):Установка Java на Linux с помощью SSH

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

Проблема заключается в том, что во время I установки Java необходимо «прочитать» уведомление и ввести «да» в конце. Как мне это сделать? Есть ли более простой способ, чем «ожидать»? И если не так, как я вписываю его в сценарий bash?

Большое спасибо

ответ

1

ожидать это путь (спасибо 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

Смотрите этот пост:

Need help: Automatically accept EULA with apt-get

+0

Я использую красную шапочку - только «ни установить» и устанавливает открытый Java, который ничего не стоит – Guy

+0

Видимо есть файл, который вы можете создайте, который, если присутствует, пропустит прием EULA - не знаю, какой файл, но он может помочь. – rajax

+0

Это звучит как только то, что мне нужно - любая подсказка о том, как его создать? – Guy

2

Во-первых, запись необходимых нажатий клавиш в файл, например так:

cat > keystrokes 

Нажмите Ctrl + C, когда вы» сделанный запись нажатия клавиш. Проверьте содержимое файла. Некоторые ключи, такие как TAB, могут неправильно записываться, но вы все равно можете редактировать файл с помощью текстового редактора. Обратите внимание, что прокрутка вниз на консоли (например, при чтении вывода от more) обычно может выполняться с помощью пробела.

Вы можете scp этот файл, как вы уже сделали с rpm. Далее труба содержания нажатий клавиш файл на стандартный ввод программы установки:

cat keystrokes | ./someinstaller 

редактировать: Жаль слышать это не работает. Возможно, вы можете взглянуть на expect, который является инструментом unix, разработанным для такого рода вещей. Я думаю, что он включен в большинство дистрибутивов gnu/linux. Если вы знакомы с python, вы можете предпочесть вместо этого pexpect.

+0

Это почти работает, но не совсем. Кажется, вход слышен только после того, как я вручную нажимаю ПРОБЕЛ. – Guy

+0

тоже попробовал - не работает – Guy