2013-11-21 3 views
0

В одном разделе сценария bash мне нужно ssh в удаленном поле, изменить на root, а затем развернуть rpm. Мой код застрял после того, как он изменился на root, и я не уверен, почему. Любая помощь будет принята с благодарностью. В идеале я бы хотел, чтобы он был включен, переключился на root, развернул rpm, а затем вышел из сеанса ssh.Несколько SSH-команд в сценарии Bash

user="user" 
host="hostname" 
echo "Enter password: " 
read -s pw 
ssh -t "$user"@"$host" "sudo su; $pw; rpm -Uvh rpmtodeploy.rpm;" 

Это то, что я в данный момент:

пользователь @ локальный: ~ $ Баш rpm.sh

Введите пароль:

[корень @ имя хоста/главная/пользователя] #

ответ

1

Если вы не используете команду, bash ждет ее выхода до выполнения следующей команды. Поскольку su порождает интерактивную оболочку, она будет продолжать работать до тех пор, пока вы ее не закроете. Вы должны использовать Sudo непосредственно:

sudo rpm -Uvh rpmtodeploy.rpm 

Если у вас есть доступ к sudosu но не rpm, используйте -c вариант:

sudo su -c 'rpm -Uvh rpmtodeploy.rpm' 
+0

Как бы я передать свой пароль через первую команду? sudo rpm -Uvh rpmtodeploy.rpm – cakes88

+0

@Konnor У вас нет. Настройте 'sudo', чтобы разрешить' NOPASSWD' для команды 'rpm'. Если вы не можете этого сделать, вам придется использовать сценарий 'expect'. – jordanm

+0

А, ок, я изучал это раньше. Спасибо @jordanm – cakes88

Смежные вопросы