Я создал сценарий оболочки, как дали ниже. Этот сценарий войдет в удаленный сервер, поскольку обычный пользователь затем переключается на пользователя root для создания каталога. Сценарий как дан ниже.
ssh-t qbadmin@10.3.2.0'
su базируются-c"
отзовитесь эхом \, "Дают Имя каталога: \";
считайте dir;
mkdir \$dir;
";
'
Здесь сценарий попросит у Пароля обычного пользователя сначала. С другой стороны это попросит пароль root. Как я мог автоматизировать это использование expect
команда. Я хочу предоставить пароль автоматически для пользователя root только. Я думаю, что это может быть, покончили expect
.
Помогите мне.
Если вы хотите передать только пароль root, вам необходимо
ssh -t root@10.3.2.0 …
Лучший/легче путь, чем использование ожидает, SSHPASS, который отправляет пароль через с запросом SSH:
sshpass -p <PASSWORD> ssh <USER>@<SERVER> <SSH Command>
ПАРОЛЬ является паролем, который будет вводиться, при запросе ПОЛЬЗОВАТЕЛЬ является именем пользователя, СЕРВЕРОМ является IP-адрес сервера (например, 10.8.100.100), и Команда SSH является командой, которую Вы хотите выполнить.
Для Вашего примера:
sshpass -p <PASSWORD> ssh qbadmin@10.3.2.0 mkdir <full path for new dir>
Устанавливать SSHPASS:
sudo apt-get install sshpass
Если Вы будете желать, чтобы сессия SSH осталась впоследствии, чем можно использовать, то ожидают со следующим,
#!/bin/bash
##Enter Username and Password Details:
userName=<UserName>
password=<Password>
expect -c "
spawn ssh ${userName}@10.8.100.100 ##put your own IP here
expect "password: " ##or whatever password prompt you get
send "$password\r"
expect -re "Last Login: " ##or whatever the end of your welcome message is
send "su -i"
expect "password for <UserName>"
send "$password\r"
"
Это уедет, корневой доступ вошел в систему, однако пока сценарий не отправляет оператор возврата, он будет содержать управление, пока Вы не поразите Ctrl+c. Но это должно ответить на Ваш вопрос.
Я не вижу принятого ответа спустя годы, поэтому я также добавлю кое-что, что может быть полезным для других. Моя ситуация не имела ничего общего с SSH, но, используя ожидание spawn следующим образом, я смог заставить его работать.
expect -c "
spawn myProc
expect \"Do you wish to continue with XYZ? (y/N)\" {
send \"n\r\"
exp_continue
}
"
Надеюсь, это поможет.