bash ввод пароля в скрипте
Ввод пароля в скрипте
У товарища на Арче вот такая штука вполне себе работает:
А вот с подключением к SSH и на Арче такое не проканывает, есть способ передать пароль туда, или же только ключи создавать?
использовать expect шелл, или писать скрипты с использованием каких-то expect библиотек типа pexpect
-S ок, работает, спасибо. Почему на Арче работает без этой опции?
Или же мудрить с библиотеками и тп, как пишут ниже..
тут уже дело принципа стало:). Как передать пароль в консоли\скрипте?
И, я так понимаю, с SSH так не прокатит, ибо опции подобной нет?
все программы поддерживают пароль в конфиге. Пароль — дополнительная мера защиты, его всегда можно отключить.
Для sudo проще всего поставить NOPASSWD, потому что хранить пароль в скрипте не имеет никакого смысла.
Как ввести пароль для команды, которая запрашивает его в bash?
Я пишу функцию оболочки UNIX, которая будет выполнять команду, которая предложит пользователю ввести пароль. Я хочу жестко закодировать пароль в скрипт и предоставить его команде. Я пытался ввести пароль в команду следующим образом:
Это может не сработать для некоторых команд, так как команда может очистить входной буфер перед запросом пароля.
Я также пытался перенаправить стандартный ввод в файл, содержащий пароль, как это, но это тоже не работает:
Я знаю, что некоторые команды позволяют вводить пароль в качестве аргумента,но я бы предпочел использовать стандартный ввод.
Я ищу быстрый и грязный способ вставить пароль в команду в баше.
Если ваша команда не позволяет использовать перенаправление ввода, параметр командной строки или конфигурационный файл, то вам придется прибегнуть к серьезному обману.
Программы, которые запрашивают пароли, обычно устанавливают tty в «сырой» режим и считывают входные данные непосредственно из tty. Если вы создадите подпроцесс в pty, вы можете заставить его работать. Именно это и делает Expect.
Взгляните на autoexpect (достойный учебник здесь). Это настолько быстро и грязно, насколько вы можете получить, не прибегая к обману.
Как использовать автоэкспект для передачи пароля в команду:
Эти шаги проиллюстрированы на рабочем столе Ubuntu 12.10. Точные команды для вашего распределения могут немного отличаться.
Это опасно, потому что вы рискуете раскрыть любой пароль, который вы используете, любому, кто может прочитать файл сценария autoexpect.
Не раскрывайте свой пароль root или пароли опытных пользователей, передавая их через expect подобным образом. Корневые наборы найдут это в одно мгновение, и ваша коробка будет принадлежать.
EXPECT порождает процесс, считывает текст, который поступает, а затем отправляет текст, предварительно определенный в файле скрипта.
Убедитесь, что у вас установлены expect и autoexpect :
Перейдите в свой домашний каталог:
Пользователь el не может передать файл в корневой каталог и должен ввести пароль:
Это ввод пароля, который мы хотим автоматизировать. Перезагрузите терминал, чтобы убедиться, что sudo снова запросит у нас пароль. Снова зайдите в /home / el и сделайте это:
Вы создали my_test_expect.exp файл. Ваш супер секретный пароль хранится в этом файле открытым текстом. Это должно заставить вас чувствовать себя очень неуютно. Смягчите некоторый дискомфорт, максимально ограничив разрешения и права собственности:
Вы видите такие команды в нижней части my_test_expect.exp :
Вам нужно будет убедиться, что приведенные выше команды expect подходят. Если сценарий autoexpect слишком чувствителен или недостаточно чувствителен, то он зависнет. В этом случае это приемлемо, потому что ожидание-это ожидание текста, который всегда будет приходить.
Запустите ожидаем скрипт как пользователь Эл:
Пароль, содержащийся в my_test_expect.EXP был поставлен в этом файле в корень пользователя Эл. Чтобы узнать, принят ли пароль, загляните в myfile.txt :
Это сработало, потому что это root, и Эл никогда не вводил пароль. Если вы предоставите свой пароль root, sudo или power user с помощью этого скрипта, то получить root на вашем ящике будет легко. Таково наказание за систему безопасности, которая не позволяет никому задавать вопросы.
Bash ввод пароля в скрипте
Developer
Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine
Репутация: 1
Всего: 11
как в bash скрипте произвести ввод пароля.
Тоесть например скрипт инициирует связь по ssh.
example:
ssh 192.168.0.15
Как в скрипте написать ввод пароля что бы команды после данной нормально отрабатывались. С ssh то вообщем понятно, тут можно и просто ключи настроить и не париться. Но интересует общий случай. Тоесть например вызов команды su в ssh скрипте.
Developer
Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine
Репутация: 1
Всего: 11
Опытный
Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane
Репутация: 9
Всего: 40
Developer
Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine
Репутация: 1
Всего: 11
Опытный
Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane
Репутация: 9
Всего: 40
а expect не пробовали?
свой собственный
Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ
Репутация: 17
Всего: 259
Программист-романтик
Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж
Репутация: 4
Всего: 92
Developer
Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine
Репутация: 1
Всего: 11
Спасибо за совет! То что мне и надо! Он мне помог
Ну это не проблема, так как скрипты создаются динамически и сразу же после выполнения удаляются. Так что тут все ок )
Спасибо, отличная статья.
Всем спасибо. Вопрос решен!
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.2.2008
Репутация: нет
Всего: нет
Naughtius Maximus
Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel
Репутация: 113
Всего: 317
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.
[ Время генерации скрипта: 0.1334 ] [ Использовано запросов: 21 ] [ GZIP включён ] Взаимодействие bash-скриптов с пользователемЛюбой приказ, который может быть неправильно понят, понимается неправильно (Армейская аксиома) Редкий скрипт лишен необходимости общения с пользователем. Мы ожидаем, что программа (утилита) будет выполнять то, что нам от нее хочется. Следовательно, нужны инструменты влияния на них, да и программа сама должна объяснить, как продвигается ее работа. Топик так же снабжен примитивными примерами, не несущими смысловой нагрузки, но позволяющими посмотреть в работе некоторые интересные штуки. ПеременныеВ файл config.cfg не забудем поместить строчку EMAIL=example@gmail.com Параметры командной строкиЕще один способ сообщить данные программе — указать при запуске в командной строке. Содержатся эти параметры в переменных с номерами. Например: $0 — имя скрипта, $1 — первый параметр, $2 — второй параметр и т. д. Также существуют две вспомогательные переменные: $# содержит количество переданных аргументов; $@ содержит все аргументы, переданные скрипту, разделенные пробелами. Вопросы и подтвержденияОбратите внимание, что на скриншоте буква «Д» — большая. Это означает действие по умолчанию, то есть если пользователь ничего не введет, то это будет равнозначно вводу «Д». OK / FAILВот так выглядит работа скрипта: Исходя из вышеприведенной ссылки код можно упростить. ПсевдографикаНе забываем вставлять clear для очистки экрана, чтобы не оставлять синий фон. Эта утилита поддерживает еще очень много типов диалоговых окон. Главным недостатком является то, что по умолчанию ее нет в системе. Альтернативой dialog может служить whiptail, который даже присутствует в некоторых системах по умолчанию. Хоть есть ярые противники GUI, но он явно имеет право на существование. Такие диалоги можно получить с помощью команды kdialog (если графической оболочкой выступает KDE), либо gdialog и zenity (для Gnome). Например, форма для ввода пароля: Как видите, явным недостатком этого метода является привязанность к конкретной среде рабочего стола. Да и вообще к графической среде, которая может и отсутствовать. Но, тем не менее, может и пригодиться когда-нибудь. P.S. Продолжение следует… UPD: Добавил упрощенный код в раздел «OK / FAIL». Bash ввод пароля в скрипте
Как в скрипте написать ввод пароля что бы команды после данной нормально отрабатывались.
Для ssh настройте авторизацию по ключам и не парьте мозг.
Вместо su используйте sudo. Там можно настроить вызов необходимых программ без запроса пароля. Если всё же хотите вводить пароль скриптом, то смотрите в сторону expect.
Expect мне помог, спасибо!
В сети полно примеров для ввода пароля ssh с помощью expect.
С этим все ок. Вот например кусок того что я сделал для примера.
|