1

Я пытаюсь автоматизировать некоторые конфигурации, которые у меня есть, с помощью bash-скрипта, я никогда не делал этого раньше, поэтому я попробовал что-то простое, например Hello World! и все работает просто отлично, но потом я попробовал что-то вроде этого:

#!/bin/bash
sudo su
apt-get purge postfix

и он ничего не делает, я проверяю, и postfix все еще установлен, и в любое время он запрашивает любую мою запись, я просто пытался с apt-get но я буду делать такие вещи, как ssh-keygen или даже писать файлы, которые я угадайте с помощью cat или что-то еще, как я могу сделать скрипт работающим, а также посмотреть, что происходит?

3 ответа3

7

sudo su запускает su для вас, что, в свою очередь, оставляет вас в оболочке от имени root, ожидая вашего ввода.

То, что вы хотите сделать, это sudo apt-get purge postfix . man sudo чтобы понять, почему.

Вы найдете множество примеров сценариев bash для дальнейшего использования.

4

Это лучше всего автоматизировать с помощью учетной записи root/admin и не оставлять в файлах обычного пользователя.

Лучшая практика в отношении того, чего вы хотите достичь, - стать пользователем root sudo su - и затем работать в /root user dir. Нечто подобное обычно лучше всего хранить в ~/bin или ~/scripts поэтому, если оно не существует, вам, возможно, потребуется его создать, а затем убедиться, что новый дом является частью вашего PATH . Всегда полезно иметь какой-то каталог сценариев для размещения небольших сценариев, которые вы используете для управления своими системами. Со временем у вас их будет довольно много, и у каждого администратора есть свой "набор инструментов", который они держатся за эти вещи. Хитрость заключается в том, чтобы попытаться написать код, который можно использовать повторно и тем самым облегчить вашу жизнь.

Если вы собираетесь использовать несколько этих файлов, я бы создал для них специальный каталог, например ~/scripts/sysupdates и постараюсь, чтобы каждый файл выполнял только одну вещь. Это отражает функции других * nix систем, таких как init.d, и сделает обслуживание системы более простым и интуитивно понятным. Это также имеет целью ограничить наши записи в других местах, как вы скоро увидите.

если вы создаете файлы для того, что хотите обновить, как упомянуто выше (например, postfix, qmail, update), то вы можете просмотреть их с помощью одного скрипта в ~/scripts, который может быть чем-то вроде:

#/usr/bin/bash
#
# Script: updater.sh
# Author: My Name  
# Date: yyyymmdd - ee   (ee = times edited)
# 
# Purpose: run update scripts from ~/scripts/sysupdates
# 
# Notes:
# 

for SCRIPT in `ls ~/scripts/sysupdates`; do ${SCRIPT}; done

Сделайте себе одолжение и получите привычку делать правильный заголовок для каждого файла, который вы создаете. Это займет всего минуту и избавит от головной боли в будущем, помните, что вы, возможно, не помните, почему вы создали его позже или что он сделал, или это может быть не тот, кто должен поддерживать его один день.

Последняя часть этого для редактирования корневого crontab. Cron - это программа, которая запускает данный скрипт с заданным интервалом. Поэтому, если мы добавим наш скрипт updater.sh в crontab, все, что нам нужно сделать, это добавить файлы в ~/scripts/sysupdates и они запустятся автоматически.

Вы получаете доступ к crontab с помощью crontab -e который редактирует crontab с помощью определенного системного редактора (обычно это vim в linux).Существует генератор crontab, который поможет вам по адресу:http://www.thepcmanwebsite.com/crontab_generator.shtml сделать свой собственный. Добавьте строку:

5 0 1 * * /root/scripts/updater.sh

Тебе должно быть хорошо идти. Удачи с этими инструментами, поскольку они могут сделать жизнь SysAdmin намного проще.

Одно слово предостережения; Я бы не стал добавлять apt-get -y dist-upgrade в ваши скрипты, запускать его, когда вы готовы с ним справиться, если он запустится неправильно.

1

apt-get purge работает только как sudo или root, чтобы запустить sudo из скрипта, вам нужно включить sudo без паролей для пользователя, которым вы запускаете скрипт, иначе он запросит пароль и будет ждать.

Запустите visudo и добавьте строку внизу:

yourusername ALL=NOPASSWD: ALL

Также apt-get выдает подсказку, чтобы удалить пакет без подсказки, используйте опцию -y

sudo apt-get purge package -y

Конечный результат будет примерно таким:

#!/bin/bash
sudo apt-get purge postfix -y

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .