5 Shell-скриптов для новичков в Linux для изучения программирования в оболочке

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

В этой статье мы рассмотрим пять сценариев оболочки, которые могут изучить новички в Linux, чтобы начать работу с программированием оболочки. Мы рассмотрим некоторые основы shell-сценариев и приведем примеры каждого из них, чтобы помочь вам понять, как они работают.

Что такое Shell Scripting?

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

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

Сценарий 1: Hello World

Первый скрипт, который изучает каждый программист, – это классическая программа “Hello, World!”. Это простой скрипт, который просто печатает сообщение на экране. Вот как выглядит скрипт –

Пример

#!/bin/bash
echo "Hello, World!"

Выход

Hello, World!

Первая строка скрипта называется “shebang”, она указывает оболочке, какой интерпретатор использовать для выполнения скрипта. В данном случае мы используем оболочку bash.

Вторая строка – это собственно команда, которая выводит сообщение на экран. Команда echo просто отображает текст, который следует за ней.

Чтобы запустить скрипт, сохраните его в файл (например, hello.sh), сделайте его исполняемым с помощью команды chmod +x hello.sh, а затем запустите его с помощью команды ./hello.sh.

Скрипт 2: Простой калькулятор

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

Пример

#!/bin/bash
echo "Enter first number: "
read num1
echo "Enter second number: "
read num2
echo "The sum is: $((num1 + num2))"

Выход

Enter first number: 
Enter second number: 
The sum is: 0

Первые две строки скрипта предлагают пользователю ввести два числа, а затем считывают эти числа в переменные num1 и num2.

Третья строка выполняет фактическое вычисление. В данном случае мы складываем num1 и num2, используя синтаксис $(( )).

Чтобы запустить скрипт, сохраните его в файл (например, calculator.sh), сделайте его исполняемым с помощью команды chmod +x calculator.sh, а затем запустите его с помощью команды ./calculator.sh.

Скрипт 3: Резервное копирование файлов

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

#!/bin/bash
backup_dir=/path/to/backup/dir/
filename=file.txt
cp $filename $backup_dir/${filename}_$(date +%Y-%m-%d_%H-%M-%S)

Первая строка скрипта устанавливает переменную backup_dir в путь к каталогу резервных копий.

Вторая строка устанавливает переменную filename в имя файла, который мы хотим сохранить.

Третья строка копирует файл в резервную директорию с помощью команды cp. Синтаксис {filename}{filename}(date +%Y-%m-%d_%H-%M-%S) добавляет временную метку в конец имени файла, чтобы каждая резервная копия имела уникальное имя.

Чтобы запустить скрипт, сохраните его в файл (например, backup.sh), сделайте его исполняемым с помощью команды chmod +x backup.sh, а затем запустите его с помощью команды ./backup.sh.

Сценарий 4: Информация о системе

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

Пример

#!/bin/bash
echo "Operating system: $(uname -o)"
echo "Kernel version: $(uname -r)"
echo "CPU information: $(lscpu | grep "Model name" | awk '{print $3, $4, $5, $6, $7, $8}')"

Выход

Operating system: GNU/Linux
Kernel version: 5.15.0-60-generic
CPU information: AMD Ryzen 9 5950X 16-Core Processor

Давайте разберем это на части. первая строка скрипта – это строка shebang, как обычно.

Следующие три строки используют различные команды для отображения информации о системе. команда uname -o отображает операционную систему, команда uname -r отображает версию ядра, а lscpu | grep “Model name” | awk ‘{print 3,4, 5,6, 7,8}’ выводит информацию о процессоре.

Чтобы запустить скрипт, сохраните его в файл (например, systeminfo.sh), сделайте его исполняемым с помощью команды chmod +x systeminfo.sh, а затем запустите его с помощью команды ./systeminfo.sh.

Скрипт 5: Генератор паролей

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

Выход

#!/bin/bash
length=12
password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=' | fold -w $length | head -n 1)
echo "Your new password is: $password"

Выход

Your new password is: YRY+zm:<JwYi

Давайте разберем это на части. Первая строка скрипта – это строка shebang, как обычно.

Вторая строка устанавливает переменную length в желаемую длину пароля.

Третья строка генерирует случайный пароль с помощью команды cat /dev/urandom | tr -dc ‘a-zA-Z0-9!@#length | head -n 1. Эта команда использует команду cat /dev/urandom для генерации случайных данных, а затем с помощью команды tr отфильтровывает ненужные символы. Команда fold -w $length разбивает вывод на строки нужной длины, а команда head -n 1 выделяет первую строку (т. е. пароль).

Чтобы запустить скрипт, сохраните его в файл (например, password.sh), сделайте его исполняемым с помощью команды chmod +x password.sh, а затем запустите его с помощью команды ./password.sh.

Scritp 6: Поиск файлов

Скрипт, позволяющий искать файлы в каталоге или подкаталогах по ключевому слову. Вот пример –

#!/bin/bash
echo "Enter directory to search: "
read dir
echo "Enter keyword to search for: "
read keyword
find $dir -name "*$keyword*" -print

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

Сценарий 7: Резервное копирование каталогов

Сценарий, создающий резервную копию всей директории (включая поддиректории и файлы) в резервное место. Вот пример –

#!/bin/bash
src_dir=/path/to/src/dir/
backup_dir=/path/to/backup/dir/
tar -czf $backup_dir/backup_$(date +%Y-%m-%d_%H-%M-%S).tar.gz $src_dir

Этот сценарий задает переменные для исходного и резервного каталогов, а затем с помощью команды tar создает сжатый архив исходного каталога в резервном каталоге, с временной меткой в имени файла.

Сценарий 8: Мониторинг процессов

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

#!/bin/bash
process_name=myprocess
while true
do
   if ps aux | grep $process_name | grep -v grep > /dev/null
   then
      sleep 1
   else
      echo "$process_name has stopped running."
      mail -s "Process Monitor Alert" user@example.com <<< "$process_name has stopped running."
      break
   fi
done

Этот скрипт использует цикл while для непрерывной проверки запущенности процесса с определенным именем с помощью команды ps. Если процесс не запущен, скрипт отправляет оповещение по электронной почте указанному пользователю с помощью команды mail.

Scritp 9: Веб-скраппинг

Сценарий, который извлекает данные с веб-сайта и сохраняет их в файле или базе данных. Вот пример использования команд curl и grep –

#!/bin/bash
url="http://example.com"
data=$(curl -s $url)
echo $data | grep -oP '(?<=).*?(?=)' > title.txt

Этот скрипт использует команду curl для получения HTML-содержимого веб-страницы, а затем с помощью grep извлекает тег title и сохраняет его в файл.

Сценарий 10: Автоматизация SSH

Скрипт, автоматизирующий вход в систему по SSH и выполнение команд на удаленных серверах. Вот пример использования команды sshpass –

#!/bin/bash
server="example.com"
username="user"
password="password"
command="ls"
sshpass -p $password ssh $username@$server $command

Этот скрипт использует команду sshpass для автоматизации входа в систему SSH и выполнения команды на удаленном сервере без участия пользователя.

Сценарий 11: Резервное копирование базы данных

Скрипт, выполняющий резервное копирование базы данных MySQL и загружающий ее на удаленный сервер. Вот пример с использованием команды mysqldump и команды rsync.

#!/bin/bash
db_name="mydb"
db_user="user"
db_password="password"
backup_dir="/path/to/backup/dir/"
backup_file="$backup_dir/backup_$(date +%Y-%m-%d_%H-%M-%S).sql"
mysqldump -u $db_user -p$db_password $db_name > $backup_file
rsync -avz $backup_dir user@example.com:/path/to/remote/dir/

Этот скрипт использует команду mysqldump для создания резервной копии базы данных MySQL и сохранения ее в файл с временной меткой в имени. Затем он использует команду rsync для загрузки файла резервной копии на удаленный сервер.

Заключени

Сценарии Shell – это мощный инструмент, который может помочь вам автоматизировать задачи, выполнять задачи системного администрирования и даже создавать программное обеспечение. Сценарии, которые мы рассмотрели в этой статье, – это лишь вершина айсберга, когда речь идет о сценариях Shell, но они должны дать вам хорошую основу для создания собственных сценариев.

Помните, что практика делает совершенным, поэтому не бойтесь экспериментировать с различными командами и сценариями, чтобы увидеть, что работает лучше всего. Счастливых сценариев!

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *