Установка Java в Linux с помощью ssh
Вопрос
Я хочу установить Java на многие компьютеры с помощью ssh, поэтому хочу написать сценарий bash, который подойдет (примерно):
for c in computers
do
scp jre--.rpm $c
ssh $c 'sudu -s; chmod a+x jre--.rpm ; ./jre--.rpm; echo "success!"'
done
Проблема в том, что во время установки Java мне нужно «прочитать» уведомление и в конце ввести «да».Как мне это сделать?Есть ли более простой способ, чем «ожидать»?А если нет, то как мне вписать это в скрипт bash?
большое спасибо
Решение 2
ожидать - это правильный путь (спасибо 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
Другие советы
Сначала запишите необходимые нажатия клавиш в файл вот так:
cat > keystrokes
Ударять Ctrl+С когда вы закончите записывать нажатия клавиш.Проверьте содержимое файла.Некоторые клавиши, такие как TAB, могут записываться неправильно, но вы все равно можете редактировать файл с помощью текстового редактора.Обратите внимание, что прокрутка вниз на консоли (например.при чтении вывода из more
) обычно можно сделать с помощью клавиши пробела.
Вы можете просмотреть этот файл так же, как вы уже делали это с помощью rpm.Затем передайте содержимое файла нажатий клавиш на стандартный ввод установщика:
cat keystrokes | ./someinstaller
редактировать: Сожалеем, что это не работает.Может быть, вы сможете взглянуть на ожидать, инструмент Unix, предназначенный для подобных задач.Я думаю, что это включено в большинство ГНУ/Линукс распределения.Если вы знакомы с Python, вы можете предпочесть ожидать вместо.