The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Ввод пароля при помощи Shell скрипта"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Jinx email on 14-Ноя-11, 17:04 
Пытаюсь автоматизировать архивирование. На данный момент мне требуется подключаться к удаленным Линуксовым станциям/серверам и забирать оттуда некие файлы. Для этих целей решил использовать SSHFS.
Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить пароль пользователя, но как автоматизировать его ввод я понять не могу.

Скажу заранее - авторизацию по ключах сделать не могу по нескольких причинах, которые называть не вижу смысла.

Итак, подключаюсь так:


sshfs root@192.168.1.1:/usr/ /mountpoint

После чего получаю:

root@192.168.1.1's password:

Куда и нужно скриптом ввести пароль.

Возможно-ли такое сделать?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от DeadLoco (ok) on 14-Ноя-11, 17:34 

cat "MyVeryStrongPass" | sshfs root@192.168.1.1:/usr/ /mountpoint

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Jinx email on 14-Ноя-11, 17:51 
> cat "MyVeryStrongPass" | sshfs root@192.168.1.1:/usr/ /mountpoint

Я что-то совсем не понял суть этого действия. cat это читалка файлов, как с его помощью ввести пароль?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от DeadLoco (ok) on 14-Ноя-11, 17:59 
> Я что-то совсем не понял суть этого действия. cat это читалка файлов,
> как с его помощью ввести пароль?

Кат - далеко не только читалка файлов. Кат - это выводитель в стдаут чего-нибудь. Если что-нибудь - путь к файлу, то выведется содержимое файла. А если что-нибудь - строка, то в стдаут выведется эта строка. Затем мы через перенаправление загоняем эту строку на стдин другой команды. Вуаля.

Нетривиальное использование ката:

# cat > /path/to/the/file.txt <ENTER>
<CTRL-D>
#

Выводим "ничего" в файл. Если кат запустить без аргументов, то он ждет ввода строк или путей с стдина. Если стдин сразу закрыть по КТРЛ-Д, то кат не выведет ничего. Но перед этим он через > обнулит файл вывода. Таким образом удобно чистить длинные логи, которые нежелательно удалять/создавать заново (обычный источник гемора с апачем).

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от DeadLoco (ok) on 14-Ноя-11, 18:08 
Вот еще один малоизвестный скриптовый трюк:

#!/bin/sh
. . . . .
cat << ENDOFTEXT | /usr/sbin/sendmail -t
From: root@box
To: user@box
Subject: HELLO
Content-Type: text/plain; charset="UTF-8"

Вы получили это письмо, потому что я не забыл воткнуть пустую строку между телом письма и его хедерами...
ENDOFTEXT
. . . . .

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Jinx email on 14-Ноя-11, 18:14 
> cat "MyVeryStrongPass" | sshfs root@192.168.1.1:/usr/ /mountpoint

Очень плохо понял как это работает - буду еще в маны вчитываться.

Не работает такой способ, по крайней мере у меня не получается. Сначала мне говорит что мол файла или директории под именем "MyVeryStrongPass" (вводил не это) нету, а потом спрашивает пароль на подключение.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Jinx email on 14-Ноя-11, 18:24 
> cat "MyVeryStrongPass" | sshfs root@192.168.1.1:/usr/ /mountpoint

Еще пытался вместо MyVeryStrongPass указывать ссылку на файл с паролем - больше не ругалось, но запрос пароля все равно появился.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от DeadLoco (ok) on 14-Ноя-11, 18:32 
> Не работает такой способ, по крайней мере у меня не получается.

Ну, попробуйте в скрипте сделать так:

cat << ENDOFPASS | sshfs root@192.168.1.1:/usr/ /mountpoint
MyVeryStrongPass
ENDOFPASS

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Square (ok) on 14-Ноя-11, 18:41 
> Возможно-ли такое сделать?

echo 'password' | sshfs user@remote.host:/somedir /somemydir -o password_stdin

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от elvenic (??) on 14-Ноя-11, 19:41 

> Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить
> пароль пользователя, но как автоматизировать его ввод я понять не могу.

А вообще-то такие вещи делаются через expect (http://linux.die.net/man/1/expect)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Square (ok) on 14-Ноя-11, 19:59 
>> Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить
>> пароль пользователя, но как автоматизировать его ввод я понять не могу.
> А вообще-то такие вещи делаются через expect (http://linux.die.net/man/1/expect)

Следующий советчик заявит что без девушки-оператора такой вопрос решить нельзя...причем с бюстом не меньше 6....

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от elvenic (ok) on 14-Ноя-11, 21:52 
>>> Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить
>>> пароль пользователя, но как автоматизировать его ввод я понять не могу.
>> А вообще-то такие вещи делаются через expect (http://linux.die.net/man/1/expect)
> Следующий советчик заявит что без девушки-оператора такой вопрос решить нельзя...причем
> с бюстом не меньше 6....

Если девушка-оператор-с-бюстом-не-меньше-6 знает как писать скрипты на баше с expect для ввода пароля, я думаю это будет только приветствоваться :)


Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от IgorSapkov on 15-Ноя-11, 11:54 
>>>> Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить
>>>> пароль пользователя, но как автоматизировать его ввод я понять не могу.

Попробуй утилитку sshpass http://sourceforge.net/projects/sshpass/

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Andrey Mitrofanov on 15-Ноя-11, 13:35 
>> Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить
>> пароль пользователя, но как автоматизировать его ввод я понять не могу.
> А вообще-то такие вещи делаются через

...ssh-agent и аутентификацию по ключу http://www.opennet.ru/tips/1763_ssh_cache_password.shtml , второй вариант - с ControlMaster там тоже описан.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

14. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от Jinx email on 15-Ноя-11, 15:36 
Вот он - новый рабочий день. продолжаем мозговой штурм...


> Ну, попробуйте в скрипте сделать так:

С cat так и не свершилось - у меня постоянно требует пароль, и не важно каким-бы способом я не пытался.


> echo 'password' | sshfs user@remote.host:/somedir /somemydir -o password_stdin

Решение то вроди и рабочее, но вот только у меня не прокатило, при попытке подключения пишет следующее:


remote host has disconnected

При включении режима отладки получаю следующее:


debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: No more authentication methods to try.
Permission denied (publickey,password,keyboard-interactive).
remote host has disconnected

Такое впечатление что пытается использовать ключи, которых нет, после чего пытается использовать пароль, но в итоге ругается что не настроено... Вообще странно, но похоже проблема на стороне машины, к которой подключаюсь.


> Если девушка-оператор-с-бюстом-не-меньше-6 знает как писать скрипты на баше с expect для
> ввода пароля, я думаю это будет только приветствоваться :)

Если девушка-оператор-с-бюстом-не-меньше-6, то мне наверное не до шелла было-бы :)


> Попробуй утилитку sshpass http://sourceforge.net/projects/sshpass/

Как я понял для FreeBSD такого нет, толи так глючно работает что лучше считать что его нет.


> ...ssh-agent и аутентификацию по ключу http://www.opennet.ru/tips/1763_ssh_cache_password.shtml
> , второй вариант - с ControlMaster там тоже описан.

М? А как на счет этого?

> Скажу заранее - авторизацию по ключах сделать не могу по нескольких причинах,
> которые называть не вижу смысла.

Почему? Да много вариантов - например религия не позволяет, или я хочу делать бейкапы сайта, к котором доступ по ssh есть, но хостер услугу авторизации по ключах не предоставляет, или, или, или...
Я-же сразу написал что такой вариант не проходит.


> А вообще-то такие вещи делаются через expect (http://linux.die.net/man/1/expect)

Признаюсь честно - не знал о существовании expect, и при этом что-то подобное искал уже довольно давно. Спасибо.


Итак, спустя каких-то 5 часов мозгового штурма решение все таки было найдено. Сделал все через expect.
Вот он, мой чудный скрипт:


#!/usr/local/bin/expect

spawn -ignore HUP /usr/local/bin/sshfs root@192.168.1.1:/usr/ /mountpoint
expect "*assword*"
send "SuperPass\r"
expect "\n"


При чем без "-ignore HUP" в системе творятся вообще странные вещи - после выполнения скрипта диск вроди и подмонтировался, но df диск не видит, а при попытке или открыть точку монтирования, или считать содержимое или отмонтировать, терминал наглухо вис. Больше часа головой об эту проблему бился, но как говорится "Если долго мучится, то что нибудь получится", в итоге история все-же закончилась хеппи ендом.

Скрипт вроди работает нормально, проблем пока не замечено. Всем спасибо за помощь!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от GTAlex.ru email on 12-Фев-13, 13:04 
>[оверквотинг удален]
> send "SuperPass\r"
> expect "\n"
>
> При чем без "-ignore HUP" в системе творятся вообще странные вещи -
> после выполнения скрипта диск вроди и подмонтировался, но df диск не
> видит, а при попытке или открыть точку монтирования, или считать содержимое
> или отмонтировать, терминал наглухо вис. Больше часа головой об эту проблему
> бился, но как говорится "Если долго мучится, то что нибудь получится",
> в итоге история все-же закончилась хеппи ендом.
> Скрипт вроди работает нормально, проблем пока не замечено. Всем спасибо за помощь!

ТЫ ГЕНИЙ!
СПАСИБО ОГРОМНОЕ!!!

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

15. "Ввод пароля при помощи Shell скрипта"  +/
Сообщение от blackpepper on 17-Ноя-11, 08:21 
> Пытаюсь автоматизировать архивирование. На данный момент мне требуется подключаться к
> удаленным Линуксовым станциям/серверам и забирать оттуда некие файлы. Для этих целей
> решил использовать SSHFS.
> Столкнулся с следующей проблемой - при подключении к удаленной машине требуется вводить
> пароль пользователя, но как автоматизировать его ввод я понять не могу.
> Скажу заранее - авторизацию по ключах сделать не могу по нескольких причинах,
> которые называть не вижу смысла.
> Итак, подключаюсь так:
>
 
> sshfs root@192.168.1.1:/usr/ /mountpoint

а так проходит? sshfs root:пароль@192.168.1.1:/usr/ /mountpoint
>


> После чего получаю:
>
 
> root@192.168.1.1's password:
>

> Куда и нужно скриптом ввести пароль.
> Возможно-ли такое сделать?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру