Как написать скрипт linux для добавления конкретных компьютеров под обновление

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Учимся писать базовые скрипты в Unix и Linux

Если вы еще не умеете писать скрипты в системах Unix и Linux, эта статья познакомит с основами написания скриптов.

Написание скриптов в системе Unix или Linux может быть одновременно и простым и чрезвычайно сложным. Все зависит от того, что вы пытаетесь выполнить, используя скрипт. В этой статье мы рассмотрим основы создания скриптов — то, как начать, если вы никогда раньше не создавали скрипты.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Идентификация оболочки.

Сегодня в системах Unix и Linux есть несколько оболочек, которые вы можете использовать. Каждая оболочка — это интерпретатор команд. Он считывает команды и отправляет их ядру для обработки.

Bash является одной из самых популярных оболочек, но существуют также zsh , csh , tcsh и korn . Есть даже оболочка под названием fish , которая может быть особенно полезна новичкам в Linux благодаря полезным параметрам автозаполнения команд. Чтобы определить, какую оболочку вы используете, используйте эту команду:

Вы также можете определить свою основную оболочку, просмотрев файл /etc/passwd :

Один из способов определить, какие оболочки доступны в системе Linux, — это проверить файл /etc/shells .

На выводе видно, что доступно всего девять оболочек.

Какую оболочку выбрать пользователю во многом зависит от того, что он привык использовать, поскольку большая часть синтаксиса в скриптах не представляет команды, которые вы найдете в /bin , /us /bin или /usr/local/bin . Вместо этого они являются частью самой оболочки и называются «встроенными». Сюда входят команды, используемые для цикла (например, for и while ).

Один из простых вариантов создания скриптов — использовать ту оболочку, которую вы используете в командной строке, поскольку, в конце концов, вам будет более или менее комфортно ее пользоваться.

Выбор оболочки

Чтобы определить, какая из доступных оболочек будет выполнять команды вашего скрипта, в первой строке вашего скрипта пропишите одну из строчек, приведенных ниже:

Когда первая строка вашего скрипта идентифицирует оболочку, которая будет использоваться, эта оболочка будет выполнять команды в скрипте. Если вы не определите оболочку в первой строке в скрипте, то оболочка, которую вы используете при вызове сценария, будет той, которая его запускает.

Выполнение команд

Любую команду, которую вы запускаете в командной строке Linux, можно запустить в скрипте, если он совместим с указанной оболочкой. Используйте свой любимый текстовый редактор и вводите нужные для исполнения команды. Вот очень простой скрипт, который выводит текущую дату в формате день-месяц-год. Скрипт имеет название today .

Чтобы запустить этот скрипт, выполните команду:

Добавление комментариев

Рекомендуется добавлять к скриптам комментарии, объясняющие, для чего предназначен скрипт, особенно если скрипт длинный или имеется сложный синтаксис. Просто начните комментарий со знака # . Комментарии могут быть отдельными строками или добавляться в конец команд в скрипте. Например:

Делаем файл исполняемым

Чтобы сделать скрипт исполняемым, используйте команду chmod и убедитесь, что предполагаемые пользователи могут его запустить. Например:

Если скрипт не сделан как исполняемый, его все равно можно запустить с помощью символа . Это встроенная функция, которая «выполняет» (т. е. читает и запускает) скрипт.

Использование команды if

Команда if позволяет вам проверять условия или переменные. В примере ниже мы проверяем, запускается ли скрипт в пятницу.

Базовый синтаксис команды if — if value == other_value . Знак == выполняет сравнение, и необходимо убедиться, что оболочка видит по одному значению с каждой стороны оператора сравнения. По этой причине часто приходится заключать свои строки в кавычки.

Понятие переменных

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

Запрос пользователя на ввод данных

Чтобы пользователь, во время исполнения скрипта, смог ввести некоторую информацию, вам необходимо вывести как подсказку, так и команду, чтобы прочитать, что вводит пользователь. Вы также должны присвоить переменной имя, которое имеет смысловое значение, как в этом примере. Обратите внимание, что использование команды echo -n означает, что пользователь вводит свой ответ в той же строке, что и приглашение.

Читайте также:  Шрифт командной строки linux

Человек, запускающий сценарий, увидит приглашение и введет ответ :

Использование аргументов командной строки

Чтобы использовать аргументы, которые пользователь вводит вместе с именем скрипта, необходимо знать, как их идентифицировать. Аргументам скрипта будут присвоены имена $1 , $2 и так далее. Для любого аргумента, который вы собираетесь использовать неоднократно, вы можете рассмотреть возможность присвоения этих значений более значимым именам переменных.

В этом случае мы проверяем, является ли первый предоставленный аргумент числовым, и закрываем скрипт, если это не так. Если ответ — число, то далее назначаем его переменной $loops , чтобы использовать позже в скрипте.

Еще одна полезная вещь, которую нужно сделать в скрипте, — это сначала проверить наличие аргументов. В противном случае синтаксис, подобный показанному выше, не сработает, потому что оболочка увидит выражение if [[! = 7 *]]; , что приведет к синтаксической ошибке.

Чтобы проверить правильность количества предоставленных аргументов, вы можете использовать синтаксис, подобный приведенному ниже, который проверяет, были ли предоставлены по крайней мере два аргумента, и, в противном случае, напоминает пользователю, что требуется как количество строк, так и имя файла:

Различные способы создания циклов

Есть несколько способов сделать цикл внутри скрипта. Используйте for , если вы хотите повторить действие заданное количество раз. Например:

Используйте while , если хотите выполнять какое-то действие, пока условие существует или не существует.

Использование оператора case

Операторы case позволяют вашим скриптам реагировать по-разному в зависимости от того, какие значения проверяются. В приведенном ниже скрипте используются разные команды для извлечения содержимого файла, предоставленного в качестве аргумента, путем определения типа файла.

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

Реакция на ошибки

Вы можете обнаруживать ошибки в скриптах и реагировать на них и тем самым избегать других ошибок. Хитрость заключается в том, чтобы проверять выходные коды после запуска команд. Если код выхода имеет значение, отличное от нуля, произошла ошибка. В этом скрипте проверяется, запущен ли Apache, но отправляем результат проверки в /dev/null . Затем проверяем, не равен ли код выхода нулю, поскольку это означает, что команда ps не получила ответа. Если код выхода не равен нулю, сценарий сообщает пользователю, что Apache не запущен.

Мини — курс по виртуализации

Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

Источник

Как написать скрипт linux для добавления конкретных компьютеров под обновление

Один из читателей просил написать статью про создание скрипта, чтобы автоматически добавить нужные репозитории и установить из них нужные нам пакеты.

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

Вот собственно об этом и пойдет речь в данной статье.

Для начала опишу команды:

sudo — это команда, которая дает права суперпользователя, для доступа к действиям root текущему пользователю.

apt-get — это пакетный менеджер в ubuntu.
с помощью пакетного менеджера мы обновляем систему, устанавливаем пакеты. Облегчает жизнь пользователям.
Итак нам понадобятся команды пакетного менеджера:
apt-get update — обновляет информацию о пакетах в добавленных в систему репозиториях
add-apt-repository — данная команда добавляет репозитории в систему.
возможно два способа добавления:

Приступим к практике.

Создаем простой текстовый файл, называем его «name.sh» (называйте как угодно, главное, чтобы разрешение было .sh)

Открываем текстовым редактором.
Для начала нужно обязательно поставить вверху следующее обозначение:

Важное замечание!
Не вводите команды в скрипт используя команду sudo, так как скрипт вы будете запускать с помощью этой команды, и следовательно все команды внутри скрипта будут выполняться от суперпользователя.
А если внесете эту команду в скрипт, то будет спрашивать ввод пароля, а при долгой выполнении одной из команд, прервется сессия суперпользователя, вы пойдете пить чай, а в командной строке будет висеть выполнение задачи. Думаю смысл ясен.

Итак сначала мы записываем команду для обновления информации о пакетах:

add-apt -repository ‘deb http://packages.linuxmint.com/ julia main’

sh -c ‘echo «deb http://dl.google.com/linux/chrome/deb/ stable main» >> /etc/apt/sources.list.d/google-chrome.list’

wget -q -O — https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add —

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

После того, как добавили список репозиториев, теперь нужно записать команду для обновления информации о пакетах в репозиториях:

apt-key adv —recv-keys —keyserver keyserver.ubuntu.com `apt-get update 2>&1 | grep -o ‘[0-9A-Z]\<16\>$’ | xargs`

PACKAGES=»p7zip libgcc faad gimp conky»

В этот список вы записываете все пакеты через запятую, которые хотите установить.

А потом следующая строчкой устанавливаем этот список пакетов:
sudo apt-get -y —force-yes install $PACKAGES

Вот таким образом у вас должно получиться нечто такое (для увеличения картинки кликните по ней):

apt-get -y —force-yes remove название_пакета

gsettings set org.gnome.gedit.preferences.encodings auto-detected «[‘UTF-8’, ‘WINDOWS-1251’, ‘CURRENT’, ‘ISO-8859-15’, ‘UTF-16’]»

В принципе всё, если будут еще какие-то вопросы специфичные по этому поводу, задавайте в комментариях.
Я постараюсь ответить и в случае чего дополнить статью.

Источник

Скрипт для тех, кому лень разбираться в Linux

Сфер применения Linux может быть очень много. Особенно, когда арендовать VPS стало можно от $1 в месяц. Кроме стандартного использования под хостинг сайтов, его используют в качестве сервера для игр (CS:GO, Terraria, Minecraft), в качестве Proxy-сервера и VPN-сервера. Под майнинг криптовалют. Под резервное хранилище бэкапов. Под домашнюю торренто-качалку. А также для тестирования, разработки и просто различных экспериментов. Именно доступность VPS на базе Linux с огромным спектром возможного его применения привела к популяризации Linux. Но желающих использовать Linux значительно больше, чем людей, которые умеют его использовать. И часто именно слабые познания администрирования Linux останавливают людей от его использования. Ну или просто усложняют таким людям жизнь — им приходится часами ковыряться в мануалах, форумах и «статьях для новичков».

Да мне и самому надоело лазить по специализированным форумам, каждый раз, когда приходится сделать шаг влево или шаг вправо относительно того, что я уже научился делать. Именно поэтому, со временем, все типовые вещи я свёл в один скрипт с дружелюбным интерфейсом, который умеет делать всё сам. Начиналась всё с малого. Скрипт просто автоматизировал установку нужного мне софта. Но за полгода он превратился уже в весьма серьёзную утилиту весом более 100 Кб, в которой около 2,5 тысяч строк кода. Скрипт ранее нигде не выкладывался. Использовался только в личных целях мной и несколькими моими товарищами. Пришло время им поделиться с публикой. Уверен, многим людям он способен сэкономить кучу времени.

Чтобы понять, что он умеет, проще всего глянуть на заглавный скриншот:

Информация о системе

Этот раздел в дружелюбной форме выводит информацию об этом сервере. Что за железо, какая ОС, какой IP-адрес. Причём, IP адрес он сначала пытается определить по интерфейсу, но т.к. бывают VPS без выделенного IP-адреса (за NAT), далее скрипт лезет в интернет и с помощью сторонних сайтов смотрит с какого IP пришли запросы и показывает реальный внешний IP-адрес (на это тратится пара секунд). Выглядит это информационное окно так:

Работа с ОС

В этом разделе собрано несколько как мелких утилит, типа смены пароля root, установки часового пояса, обновление ОС, добавление репозитория, установка популярных приложений (типа midinght commander), так и несколько более серьезных, на которых остановлюсь подробнее:

    Антивирус. Да, на Линуксе не бывает вирусов. Но бывают бэкдоры, которые через сайт открывают доступ ко всем вашим файлам злоумышленникам. Через эти же бэкдоры спамеры потом могут делать спам-рассылки используя ваш сервер. У меня в своё время за это забанили VPS. Поэтому, я предусмотрел установку антивируса. Разбираться в нём не нужно. Сам всё ставит, обновляет. Далее, не разбираясь в синтаксисе антивируса, через скрипт можно проверить весь диск или конкретную папку (например, где хостятся сайты).

Firewall. Не все умеют настраивать правила Firewall (iptables). А в некоторых арендуемых VPS он преднастроен и включен, причём так, что устанавливаемые вами сервисы не будут доступны. И вам придётся копаться в настройках и открывать порты. А неправильная и необдуманная настройка firewall может вообще привести к тому, что вы после этого в принципе не сможете подключиться по SSH к своему серверу и вам придется либо переустанавливать ОС, либо как-то лезть на сервер через web-терминал, но эта функция есть не у всех хостеров. В случае использования моего скрипта такие проблемы исключены, а настройка Firewall происходит через «Помощник», где нужно просто ответить на простые вопросы.

  • Планировщик задач (cron). Бывает, что нужно периодически выполнять какие-то типовые действия: проверка на вирусы, очистка логов, выкладывание бэкапов и т.д. Многие знают, что в Linux есть планировщик, который может выполнять задания по расписанию, но не всё умеют им пользоваться. Мой скрипт позволяет установить, включить, выключить планировщик и добавить в него задание, выбрав интервал запуска.
  • Установка панели управления хостингом

    Очень часто Linux используется именно для хостинга, но руками настраивать там все сервисы типа: Apache, Nginx, PHP, MySQL, почтовый демон и так далее — совсем непросто для новичков. Большинство предпочитает установить какую-либо панель управления. Но даже её нужно сначала как-то установить. В своём скрипте я собрал пять бесплатных панелей управления сайтом (Vesta CP, Webuzo, CWP, ZPanel, Ajenti) и платную ISPmanager (которая является, пожалуй, самой распространенной панелью в России). Про каждую панель есть небольшое описание, системные требования. Выбираем нужную панель, скрипт сам её скачает с официального сайта (свежую версию) и установит.

    Работа с VPN

    В последнее время многие заводят себе VPN для того, чтобы получить преимущества пользователей других географических зон. Например, обход запретов РосКомНадзора, использование каких-то внутренних американских или европейских сервисов и так далее. Многие для этого покупают готовые VPN-сервисы. Но значительно дешевле купить себе VPS в нужной стране и поднять свой собственный VPN. Вот только не все умеют его настраивать. С помощью этого скрипта вам нужно просто отвечать на вопросы и всё. Весь нужный софт установится сам, в firewall пропишутся нужные правила. Вы сможете просматривать, добавлять и удалять пользователей, которым разрешен доступ. Причём скрипт проанализирует какая у вас ОС и сделает всё, учитывая особенности конкретно этой ОС.

    Работа с Proxy

    Некоторым привычнее использовать прокси вместо VPN. Ну и это зачастую дешевле, потому что Прокси, в отличии от VPN, можно использовать на серверах, у которых нет своего выделенного IP-адреса (которые находятся за NAT), а такие сервера стоят в несколько раз дешевле (их можно приобрести за $2 в год). Поднимать свой прокси-сервер на Линукс — тоже не самая простая задача для новичков. Но этот скрипт всё сделает за вас. Причём там очень много настроек. «Помощник» при установке спросит на каком порту нам нужен Прокси (или же предложит стандартный), спросит нужна ли авторизация по логину/паролю (или пускать всех, кто знает адрес и порт). Скрипт даже учтёт потребности тех пользователей, кто любит загонять сторонний трафик в Прокси (через программы типа Proxifier) и настроит конфиг нужным образом. Ну и, естественно, сам внесёт все нужные правила в Firewall (iptables). Настройка прокси ещё никогда не была такой простой. Руками в конфиг лазить вообще не нужно.

    Работа с файлами и программами

    В этом разделе можно установить нужную программу (пакет) или удалить. Причём самое полезное там — это именно правильное удаление. Дело в том, что при установке какой-либо программы очень часто к ней устанавливается несколько сопутствующих пакетов, необходимых для её работы. И зачастую, размер этих дополнительных пакетов превышает размер собственно той программы, которую вы устанавливали. Но вот при удалении вашей программы удалится только сама программа, а все пакеты, которые были нужны для её (и только её) работы — останутся и продолжат занимать место. В моём скрипте я предусмотрел полное удаление программы — со всем дополнительным софтом, который ставился вместе с ней. В скрипте просто указываем название программы, дальше скрипт всё сделает сам.

    Очистка системы

    В случае активного использования сервера под хостинг, часто копится огромное количества логов доступа к сайтам. Объём всего этого мусора иногда может достигать гигабайт. Не все знают где и как это удалять. В этом разделе можно почистить эти логи. Удаляются логи Apache и Nginx, как целиком, так и конкретного пользователя. Кроме этого, из этого раздела можно удалить старые установочные пакеты, которые по умолчанию остаются на диске после установки софта и продолжают занимать место.

    На этом, собственно, пока всё. В планах, конечно, много что ещё хочется добавить. Например, бенчмарк, для оценки производительности различных компонентов сервера. Расширить поддержку других ОС и так далее. По мере сил и времени, я собственно этим и занимаюсь. Но, уже сейчас, он выполняет довольно много функций, востребованных новичками и способен сильно упростить им жизнь.

    Теперь собственно, очень важный вопрос. А на каких дистрибутивах Linux всё это работает? На всех версиях CentOS. А также, на всех прочих производных от Red Hat Enterprise Linux дистрибутивах (например, Scientific Linux). Почему именно RHEL? Ну скрипт я писал для себя, а мне CentOS ближе. Ну и если говорить о целевой аудитории данного скрипта (новички), то им, как правило, без разницы на каком дистрибутиве работать. Ведь обычно они одинаково плохо знают любой из них. А RHEL весьма неплох, стабилен, нетребователен к ресурсам, ну и, самое главное, присутствует почти у каждого хостера VPS. Версию CentOS при этом можно выбрать любую (5, 6, 7), как и разрядность. Для всех действий скрипт анализирует какая версия дистрибутива и учитывает специфику именно этой версии. Я, обычно, выбираю дистрибутив CentOS 6.x (можно Minimal) с разрядностью 64 бита.

    Ну и самое главное. Как собственно обзавестись этим скриптом? Вот тут можно посмотреть весь исходный код. Также проект выложен на гитхабе. Ссылка: github.com/Brizovsky/Breeze-Easy-Shell

    Всё что вам нужно, чтобы его использовать — это создать файл [название].sh и засунуть в него это содержимое. После чего запустить командой «sh [название].sh». Создать его можно как на сервере, так и на своем компьютере, а потом скопировать на сервер. Есть еще один вариант установки — выкачать на сервере прямо с гитхаба. Лично я делаю это вот так:

    После этого под рутом в терминале одной командой «breeze» запускаю его.

    P.S. Вообще, частенько возникает вопрос доверия использования чужих скриптов и это правильно. Но прелесть скриптов на bash в том, что перед их запуском можно открыть и посмотреть его. И убедиться в том, что он не делает ничего плохого. Функцию обновления скрипта вас использовать никто не заставляет. В общем-то, вас вообще никто не заставляет его использовать. Всегда можно просто посмотреть как настраивается VPN, Proxy и прочие вещи и вручную вколотить пару десятков команд, разобравшись в них. Обилие комментариев в коде даже поможет в них разобраться.

    UPD: За год скрипт прилично обновился. Во-первых, теперь он культурно обновляется с гитхаба, а не из подозрительных источников (в самой статье ссылки заменил), во-вторых, появилось много нового. Например, свое развитие получила функция очистки диска, стала очищать намного больше [кому-то ненужных] логов. Появилась функция бенчмарка (проверяем скорость работы диска и процессора), что позволяет сравнивать и оценивать различные VPS между собой.

    Источник

    Оцените статью