Скрипты для пользователей линукс

Три полезных BASH-скрипта для пользователей Linux

Решил поделиться с вами полезными скриптами, которые пригодятся при использовании Linux-дистрибутивов. Ниже вас ожидает скриншот с исходным кодом скрипта и объяснением того, что он делает. В самом конце статьи оставлю ссылку на репозитории в своем GitHub, где будут расположены готовые скрипты.

🧹 Очистка кэша памяти и отображение дискового пространства

Этот скрипт выполняет две важные функции для пользователей Linux.

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

Вторая функция — отображение использования дискового пространства. Когда вы работаете на Linux, вам может потребоваться знать, сколько места осталось на жестком диске. Команда df -h показывает текущее использование дискового пространства и поможет вам планировать свое хранение файлов.

🔎 Поиск файла в директории

Этот скрипт позволяет быстро найти файл в заданных директориях на вашей системе Linux.

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

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

🗄️ Резервное копирование директориии с последующим сжатием

Этот скрипт создает резервную копию директории, которую вы выбрали, в другой директории на вашей системе Linux. Затем он предлагает вам сжать резервную копию в архив, чтобы сэкономить место на диске и упростить хранение копии.

Когда вы запустите скрипт, он запросит директорию, которую нужно скопировать, и директорию, в которую нужно создать резервную копию. Затем он скопирует директорию в указанное место и сообщит вам об успешном завершении операции. Если вы хотите сжать резервную копию в архив, скрипт запросит имя архива и выполнит сжатие в формате .tar.gz.

🏁 Подведем итог

Уверен, что найдутся пользователи, которым эти скрипты будут полезны. Если же какого-либо функционала будет недоставать или нужно будет изменить принцип работы скрипта, то вы всегда сможете сделать это, скачав их к себе на устройство. Скачать скрипты вы можете через мой репозиторий в GitHub по ссылке ниже.

Читайте также:  Kali linux и arduino

Напишите в комментариях, интересны ли вам подобные подборки полезных скриптов и стоит ли продолжать их периодически выкладывать?

Источник

27. bash скрипты №1

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

Мы работаем с bash, поэтому будем учиться писать сценарии для него. Более привычное название – скрипты. Кто-то называет это «bash программированием». И давайте сразу поставим себе задачу, которую будем решать с помощью скрипта. Начнём с чего-то простого – создать двух пользователей:

  1. Основная группа — it
  2. it – группа с правами суперпользователя
  3. Домашняя директория в /home/it
  4. Оболочка — /bin/bash
  1. Основная группа — users
  2. Домашняя директория в /home/users
  3. Оболочка — /sbin/nologin

Один из них — user1 — его основная группа будет it, у которой будут права суперпользователя, его домашняя директория будет внутри директории /home/it и его оболочка будет bash. Второй пользователь – user2 — будет в группе users, домашняя директория внутри директории /home/users, а оболочка nologin. Кстати, попробуйте самостоятельно вспомнить все команды, которые необходимо выполнить.

Для начала вспомним, как это делается. Во первых, нужно создать группы и директории. Создаём группу it:

Группа users есть по умолчанию:

У группы it должны быть права суперпользователя – заходим в:

Дальше нам нужны директории — /home/it и /home/users:

И наконец создаём пользователей:

sudo useradd user1 -g it -b /home/it -s /bin/bash sudo useradd user2 -g users -b /home/users -s /sbin/nologin tail /etc/passwd 

Всего у нас получилось 5 команд:

sudo groupadd it sudo visudo sudo mkdir -v /home/it,users> sudo useradd user1 -g it -b /home/it -s /bin/bash sudo useradd user2 -g users -b /home/users -s /sbin/nologin 

Теперь давайте сделаем скрипт – просто вставим все эти 5 команд в файл с любым названием:

Каждая команда с новой строки.

Но прежде чем запускать скрипт, надо вернуть всё как было – удаляем пользователей, группу, директории и запись из sudoers:

sudo userdel -r user1 sudo userdel -r user2 sudo groupdel it sudo rm -r /home/ sudo visudo sudo grep «%it» /etc/sudoers

Запускаем скрипт с помощью bash:

У меня открылся visudo – это один из шагов, когда мне нужно добавить группу it в sudoers. Добавил, сохранил. Теперь опять проверяем:

всё создалось. И это одной командной, не считая ручного заполнения visudo.

Но.. мы говорим про автоматизацию, а мне всё равно приходится добавлять запись в sudoers вручную. Давайте сделаем так, чтобы запись добавлялась без нашего участия. Помните, как мы делали с рейдом – писали echo текст и направляли в файл? Сделаем точно также. Заменим в нашем файле visudo на echo:

Возьмём текст в одинарные кавычки, чтоб баш никак не обработал команду и направим этот текст в файл /etc/sudoers:

echo '%it ALL=(ALL) ALL' >> /etc/sudoers 

с помощью двух символов больше, чтобы не перезаписать файл, а дополнить. Правда сама такая команда не сработает – перенаправление вывода (>>) выполняется от моей оболочки, не от команды sudo, а у моего пользователя не хватит прав записать что-то в sudoers.

sudo echo '%it ALL=(ALL) ALL' >> /etc/sudoers 

Можно, конечно, использовать команду tee, но, вообще, учитывая, что все команды тут выполняются с sudo, легче сделать по другому. Просто сотрём отсюда все sudo, а при запуске, вместо bash myscript будем писать:

Тогда весь скрипт будет выполняться в оболочку суперпользователя – это и избавит нас от проблемы с перенаправлением вывода и не будет необходимости внутри скрипта запускать sudo.

Но неплохо было бы на всякий случай сделать копию файла sudoers, чтобы случайно его не испортить. Добавим команду в начале скрипта:

Хорошо, теперь опять удалим то что создали:

sudo userdel -r user1 sudo userdel -r user2 sudo groupdel it sudo rm -r /home/it,users> sudo visudo cp /etc/sudoers.bkp> 

sudo bash myscript tail -2 /etc/passwd sudo tail -1 /etc/sudoers 

Сработало – одной командой мы создали всё что нам нужно.

Чтобы наш скрипт выглядел более самостоятельным, то есть, чтобы нам не приходилось каждый раз перед ним писать bash, а также чтобы мы могли делиться этим скриптом с другими, кто, возможно, использует другие оболочки, мы можем внутри самого скрипта указать, а под какой именно интерпретатор написан скрипт. Так как, теоретически, у нас в скрипте могут быть всякие особенности, присущие только bash, которых нет в других интерпретаторах. Но тут могут быть нюансы – нужно понимать, что bash есть во многих системах, но не во всех. Если вы пишете скрипт, который предполагаете использовать не только на GNU/Linux, но и на всяких UNIX-ах, где может не быть bash-а, то лучше писать скрипты под интерпретатор shell. Чтобы указать, с помощью какого интерпретатора запускать скрипт, в первой строчке самого скрипта указываются два символа:

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

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

Давайте так и оставим. Правда, так как теперь мы будем запускать скрипт напрямую, а не передавая его программе bash, ему понадобятся права для запуска – для этого пишем:

не получится – sudo будет искать программу myscript в директориях её переменной PATH. Либо нужно поместить myscript в одну из директорий переменной PATH, либо явно указывать путь к этому скрипту – достаточно поставить перед ним точку и слеш, если он в текущей директории:

Но наш скрипт получился слишком однозадачным – он нацелен на создание двух конкретных пользователей. Сойдёт на разок, но потом, если понадобится создать ещё пользователей, придётся изменять скрипт. Давайте сделаем наш скрипт более динамическим – добавим в него переменные. Пользователей и группы заменим на переменные – user1,user2,group1,group2, а так как директории совпадают с именами групп, там тоже используем переменные. В строке echo одинарные кавычки, а значит переменная не обработается. Надо немного переделать строчку. Можно по разному, но я просто оставлю переменную group1 за кавычками. Теперь, если мне понадобится выполнить скрипт для других пользователей и групп, я могу просто заменить в начале скрипта значения переменных, вместо того, чтобы переделывать весь скрипт.

Опять же получилось так себе – у нас тут скрипт на двух пользователей в двух группах – а если мне нужно добавить одного или трёх пользователей? Давайте уберём всё что касается user2 и group2. Конечно, для второго пользователя придётся опять запускать скрипт, но динамичность скрипта это компенсирует.

Хотя.. в скрипте всё ещё вручную прописаны переменные user и group. Придётся для каждого пользователя заходить и менять значения. Обычно, когда мы работаем с программами в командной строке, мы передаём ей какие-то параметры. Нельзя ли пользователя и группу передать в виде параметров, чтоб не приходилось менять скрипт? Можно.

Давайте сделаем так – создадим новый скрипт:

Источник

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