10:46 Пример работы с Bash+Expect. Автоматизация роботы |
Каждый разработчик в определенные моменты жизни сталкивается с задачами, ктороые требуют постоянно проделывать одну и туже работу каждый день. Если такая задача включает в себя авторизацию и работу на разнообразных удаленных машинах, или передачу файлов на другие сервера, то она явно подлежит автоматизации. Если одна и та же процедура повторяется несколько раз, то ее надо автоматизировать. Если вы при этом работаете в windows, то вам очень поможет Cygwin. Специально для таких целей используется bash (командная оболчка Unix). Для автоматизации ввода пароля.логина используется другая оболчка - expect. Приведу пример простого скрипта, кторый с вашей машины логинится на другую, авторизируется там и проводит обновление из SVN какого-то проекта (задача выбрана просто для примера, также для примера она буде запущена из под Cygwin) Устанавливаем Cygwin, заходим в домашнуюю папку пользователся (например "c:cygwinhomeАдминистратор"). В ней создаем файл: File: update.sh С таким содержимым: #!/bin/bash - директива которая указывает местоположения непосредственно bash обработчика #!/bin/expect - указывает местоположение обработчика expect expect -c '...' - выполняет запуск консольных команд с перехватом ввода - вывода с помощью expect spawn ssh -p 22 user@host; - конектимся к удаленному хосту с указаным именем пользователя expect assword; - команда которая перехватывает ввод пароля и ждет когда мы его пошлем из нашего скрипта send "password "; - посылаем запросившему серверу пароль пользователя в удаленной системе send "cd /var/www/project_path "; - переходим в папку с проектом send "sudo svn up "; - выполняем обноление из SVN с правами админа (предпологаем что наш юзер имеет права для віполнения команды sudo) expect assword ; - перехватываем ввод пароля send "password "; - отправляем пароль пользователя expect "ssh>" - запрашиваем консоль echo "Update finished!" - информируем об успешном обновлении Обработка ошибок, варианты ввода вы уже можете дописать сами. Главная цель - пример реального использования bash+expect |
|
Всего комментариев: 1 | ||
| ||