Я младший системный администратор. Причина, по которой я задаю этот вопрос, в том, что у нас нет старшего системного администратора, который бы разбирался в скриптах. Старшие ребята находятся в главном офисе и слишком заняты для чего-то такого.
Мой сценарий такой. Мне часто приходится запускать три скрипта для развертывания приложения. Скрипты были написаны старшим системным администратором. Обычно с ними все проходит гладко и без ошибок. Но мне приходится нянчиться с ними для ввода. :(
В некоторых частях этих скриптов есть части, где мне нужно ввести «да» или «нет». Мои ответы никогда не меняются, если только предыдущая часть не удалась, тогда я выбираю «нет», и появляется сообщение «сборка не удалась».
В основном я управляю следующими частями:
1 — SSH-подключение к серверу развертывания
2 - отредактируйте небольшую строку в файле (которая указывает специфичную для сервера информацию)
3 - запустить скрипт A, который в основном scps всех файлов из развертывания на целевой сервер. Единственный ввод, который я должен здесь дать, находится в конце. Он спрашивает, отображается ли правильная дата из цели, если я отвечаю "да", сборка успешна.
4 - запустить скрипт B также с сервера развертывания, которому требуется некоторая конкретная информация, например:
./scriptB XYZ, где X, Y, Z изменяются в зависимости от информации целевого сервера.
В сценарии B есть несколько вопросов типа «вы хотите сделать это или отказаться от этого», ответы остаются прежними. Также иногда есть ошибка ANT, поэтому он хочет, чтобы я нажал «1», пока сценарий не продолжится.
5 — запустить скрипт C, который очень похож на скрипт B. Однако в какой-то момент он собирается запустить определенный шаг, и мне приходится вручную нажать «control c», чтобы выйти.
Я новичок в написании скриптов, но если бы кто-то мог мне рассказать или дать идею, как это сделать, было бы здорово. Я подумал, что, возможно, я мог бы использовать expect.
Еще лучше было бы, если бы я мог просто нажать какой-нибудь EXE на моем ноутбуке с Windows, и он все сделает. Это вообще возможно?
решение1
Похоже, вам следует обратить внимание на две вещи:
- Редактирование старого скрипта таким образом, чтобы он либо автоматически выполнял некоторые проверки (например, проверку временной метки), либо удалял запросы (поиск
read
команд) и отвечал значениями по умолчанию. - Используя инструмент, предназначенный именно для этой задачи, такой какАнсибль.
Если вы хотите узнать что-то новое и улучшить свое резюме системного администратора, я бы рассмотрел второй вариант, хотя первый должен отлично подойти в краткосрочной перспективе!
Если вы начнете с первого варианта, который я упомянул, попробуйте сделать так, чтобы Скрипт А не требовал подсказки — используйте функцию, date
чтобы получить текущую дату, возможно, и выполните проверку автоматически. Если это дата, которую вы сравниваете из файлов, которые вы только что скопировали, вы должны иметь возможность использовать такие инструменты, как find
или , ls
чтобы получить эту информацию.
При запуске скрипта C будет легко вставить exit
команду туда, где вы обычно нажимаете CtrlC.
Превыше всего, не забудьте проверить это на некритических ящиках! Вы же не хотите испортить производственную установку, пока вы взламываете старые скрипты...