как использовать, ожидают с ударом

Я создал сценарий оболочки, как дали ниже. Этот сценарий войдет в удаленный сервер, поскольку обычный пользователь затем переключается на пользователя root для создания каталога. Сценарий как дан ниже.

ssh-t qbadmin@10.3.2.0'
su базируются-c"
отзовитесь эхом \, "Дают Имя каталога: \";
считайте dir;
mkdir \$dir;
";
'

Здесь сценарий попросит у Пароля обычного пользователя сначала. С другой стороны это попросит пароль root. Как я мог автоматизировать это использование expect команда. Я хочу предоставить пароль автоматически для пользователя root только. Я думаю, что это может быть, покончили expect.

Помогите мне.

3
задан 19 March 2013 в 14:22

3 ответа

Если вы хотите передать только пароль root, вам необходимо

  • либо настроить вход без пароля в учетную запись пользователя, например, используя аутентификацию с открытым ключом и агент ssh на стороне клиента,
  • или настройте сервер (т.е. разрешите вход в систему как root, а затем выполните ssh -t root@10.3.2.0 …
0
ответ дан 19 March 2013 в 14:22

Лучший/легче путь, чем использование ожидает, 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. Но это должно ответить на Ваш вопрос.

3
ответ дан 19 March 2013 в 14:22

Я не вижу принятого ответа спустя годы, поэтому я также добавлю кое-что, что может быть полезным для других. Моя ситуация не имела ничего общего с SSH, но, используя ожидание spawn следующим образом, я смог заставить его работать.

expect -c "  
  spawn myProc
  expect \"Do you wish to continue with XYZ? (y/N)\" {
    send \"n\r\"
    exp_continue
  }          
"

Надеюсь, это поможет.

0
ответ дан 19 March 2013 в 14:22

Другие вопросы по тегам:

Похожие вопросы: