Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: bash expect: двойная аутентификация  (Прочитано 1967 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
bash expect: двойная аутентификация
« : 10 Октября 2014, 13:57:28 »
Привет. Вот такой скрипт позволяет аутентифицироваться в ssh:
#!/usr/bin/expect
spawn  ssh -p123 user@host.ru
expect "user@host.ru's password:"
send "gvery56uhsgd\n";
interact
Так работает.
Далее я хочу сразу же аутентифицироваться под root. Т.е. сначала пол user и сразу под root, а потом управление передать. Пытаюсь это сделать так:
#!/usr/bin/expect
spawn  ssh -p123 user@host.ru
expect "user@host.ru's password:"
send "gvery56uhsgd\n";
spawn  su
expect "Password:"
send "ge53egshdsyr\n";
interact
Но так не выходит, пишет su: Authentication failure. Странно, т.к. пароль точно правильный. Как это исправить?

Оффлайн Scorry

  • Активист
  • *
  • Сообщений: 842
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #1 : 10 Октября 2014, 14:56:18 »

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #2 : 10 Октября 2014, 17:55:22 »
похоже на то, что надо, но что-то нифига не работает  :(

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #3 : 10 Октября 2014, 17:59:06 »
Обязательно именно expect?
http://www.fabfile.org/

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash expect: двойная аутентификация
« Ответ #4 : 10 Октября 2014, 18:04:47 »
похоже на то, что надо, но что-то нифига не работает
Там в скрипте строка с паролем заканчивается возвратом каретки "\r".

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #5 : 10 Октября 2014, 18:20:34 »
Там в скрипте строка с паролем заканчивается возвратом каретки "\r".
а должна чем заканчиваться?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash expect: двойная аутентификация
« Ответ #6 : 10 Октября 2014, 18:40:06 »
Хз, как оно должно быть, я им не пользуюсь.
Имею ввиду, что в скрипте по ссылке, претендующем на работоспособность, строка оканчивается возвратом каретки "\r".
А у вас в хэдпосте в конце строки стоит "\n".
Возможно, тут играет роль версия expect, используемый login-shell, а также его настройки.

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #7 : 10 Октября 2014, 18:44:50 »
да уже всё пробовал, уже и с бубном прыгал((

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash expect: двойная аутентификация
« Ответ #8 : 10 Октября 2014, 19:04:43 »
Проверил на F20 — работает и "\r" и "\n".

В общем, надо смотреть в режиме отладки:
expect -d myscript.exp

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #9 : 10 Октября 2014, 23:14:09 »
запустил я в режиме отладки, но что-то ничего полезного не увидел((

Пользователь решил продолжить мысль 10 Октября 2014, 23:25:50:
вот вывод в режиме отладки:
expect version 5.45
argv[0] = expect  argv[1] = -d  argv[2] = login.exp   
set argc 0
set argv0 "login.exp"
set argv ""
executing commands from command file login.exp
spawn ssh -p123 user@host.com
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {22363}

expect: does "" (spawn_id exp7) match glob pattern "user@host.com's password:"? no
user@host.com's password:
expect: does "user@host.com's password: " (spawn_id exp7) match glob pattern "user@host.com's password:"? yes
expect: set expect_out(0,string) "user@host.com's password:"
expect: set expect_out(spawn_id) "exp7"
expect: set expect_out(buffer) "user@host.com's password:"
send: sending "password123\n" to { exp7 }

expect: does " " (spawn_id exp7) match glob pattern "#"? no


expect: does " \r\n" (spawn_id exp7) match glob pattern "#"? no
.....
expect: set expect_out(0,string) "#"
expect: set expect_out(spawn_id) "exp7"
expect: set expect_out(buffer) " \r\nLinux host 2.6.32-042stab088.4 #"
spawn su
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {22367}

expect: does "" (spawn_id exp8) match glob pattern ": "? no
Пароль:
expect: does "\u041f\u0430\u0440\u043e\u043b\u044c: " (spawn_id exp8) match glob pattern ": "? yes
expect: set expect_out(0,string) ": "
expect: set expect_out(spawn_id) "exp8"
expect: set expect_out(buffer) "\u041f\u0430\u0440\u043e\u043b\u044c: "
send: sending "password321\r\n" to { exp8 }
tty_raw_noecho: was raw = 0  echo = 1
spawn id exp8 sent <\r\n>

spawn id exp8 sent <su: \u0421\u0431\u043e\u0439 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438\r\n>
su: Сбой при проверке подлинности
interact: received eof from spawn_id exp8
tty_set: raw = 0, echo = 1
tty_set: raw = 6, echo = 0

« Последнее редактирование: 10 Октября 2014, 23:25:50 от lyoha100 »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash expect: двойная аутентификация
« Ответ #10 : 11 Октября 2014, 01:12:20 »
Видимо, на удалёнке у вас система нестандартная.
Или что-то не так с login-shell.
Ну, есть и другие варианты зайти под рута.

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #11 : 11 Октября 2014, 09:17:56 »
какие другие варианты?

Пользователь решил продолжить мысль 11 Октября 2014, 09:28:12:
Кстати, система - debian.
« Последнее редактирование: 11 Октября 2014, 09:28:12 от lyoha100 »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: bash expect: двойная аутентификация
« Ответ #12 : 11 Октября 2014, 14:02:10 »
какие другие варианты?
1) sudo
2) SSH Public Key Authentication

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #13 : 11 Октября 2014, 14:31:20 »
Цитировать
какие другие варианты?

выше ссылку на Fabric смотри, как раз для этих целей и создавался инструмент

Оффлайн lyoha100

  • Автор темы
  • Любитель
  • *
  • Сообщений: 51
    • Просмотр профиля
Re: bash expect: двойная аутентификация
« Ответ #14 : 11 Октября 2014, 15:50:43 »
Цитировать
какие другие варианты?

выше ссылку на Fabric смотри, как раз для этих целей и создавался инструмент

а том можно после авторизаций передать управление в терминал? Я смотрю там python.

Пользователь решил продолжить мысль 11 Октября 2014, 15:54:01:
блин там вообще другой синтаксис... Помогите те, кто знает, приведите пример пожалуйста двойной авторизации  :-\
« Последнее редактирование: 11 Октября 2014, 15:54:01 от lyoha100 »

 

Страница сгенерирована за 0.051 секунд. Запросов: 25.