Напишите свой первый Bash-скрипт
Давайте попробуем объединить все, что мы узнали, и создать наш первый скрипт Bash!
Планирование сценария
В качестве примера мы напишем скрипт, который будет собирать полезную информацию о нашем сервере, например:
Текущее использование диска
Текущее использование ЦП
Текущее использование оперативной памяти
Проверьте точную версию ядра
Не стесняйтесь корректировать скрипт, добавляя или удаляя функциональные возможности, чтобы они соответствовали вашим потребностям.
Написание сценария
Первое, что вам нужно сделать, это создать новый файл с .sh
расширением. Я создам файл под названием status.sh
скрипт, который мы создадим, который даст нам статус нашего сервера.
Создав файл, откройте его в своем любимом текстовом редакторе.
Как мы узнали в главе 1, в самой первой строке нашего Bash-скрипта нам нужно указать так называемый Shebang :
#!/bin/bash
Все, что делает shebang, — это дает указание операционной системе запустить сценарий с исполняемым файлом /bin/bash.
Добавление комментариев
Далее, как обсуждалось в главе 6, давайте начнем с добавления некоторых комментариев, чтобы люди могли легко понять, для чего используется сценарий. Чтобы сделать это сразу после shebang, вы можете просто добавить следующее:
#!/bin/bash
# Script that returns the current server status
Добавление вашей переменной
Затем давайте продолжим и применим то, что мы узнали в главе 4, и добавим некоторые переменные, которые мы, возможно, захотим использовать в сценарии.
Чтобы присвоить значение переменной в bash, вам просто нужно использовать =
знак. Например, давайте сохраним имя хоста нашего сервера в переменной, чтобы мы могли использовать его позже:
server_name=$(hostname)
Используя, $()
мы сообщаем bash, что нужно интерпретировать команду, а затем присвоить значение нашей переменной.
Теперь, если бы мы вывели переменную, мы бы увидели текущее имя хоста:
echo $server_name
Добавление вашей первой функции
Как вы уже знаете после прочтения главы 12, чтобы создать функцию в bash, вам нужно использовать следующую структуру:
function function_name() {
your_commands
}
Давайте создадим функцию, которая возвращает текущее использование памяти на нашем сервере:
function memory_check() {
echo ""
echo "The current memory usage on ${server_name} is: "
free -h
echo ""
}
Быстрый запуск функции:
function memory_check() {
- так мы определяем функциюecho ""
— здесь мы просто печатаем новую строкуecho "The current memory usage on ${server_name} is: "
— здесь мы печатаем небольшое сообщение и$server_name
переменную}
- наконец, вот как мы закрываем функцию
Затем, как только функция будет определена, для ее вызова просто используйте имя функции:
# Define the function
function memory_check() {
echo ""
echo "The current memory usage on ${server_name} is: "
free -h
echo ""
}
# Call the function
memory_check
Добавление дополнительных функций
Прежде чем проверить решение, я бы посоветовал вам использовать приведенную выше функцию и написать несколько функций самостоятельно.
Функции должны делать следующее:
Текущее использование диска
Текущее использование ЦП
Текущее использование оперативной памяти
Проверьте точную версию ядра
Не стесняйтесь использовать Google, если вы не уверены, какие команды вам нужно использовать, чтобы получить эту информацию.
Когда вы будете готовы, прокрутите вниз, посмотрите, как мы это сделали, и сравните результаты!
Обратите внимание, что существует несколько правильных способов сделать это!
Пример сценария
Вот как будет выглядеть конечный результат:
#!/bin/bash
##
# BASH script that checks:
# - Memory usage
# - CPU load
# - Number of TCP connections
# - Kernel version
##
server_name=$(hostname)
function memory_check() {
echo ""
echo "Memory usage on ${server_name} is: "
free -h
echo ""
}
function cpu_check() {
echo ""
echo "CPU load on ${server_name} is: "
echo ""
uptime
echo ""
}
function tcp_check() {
echo ""
echo "TCP connections on ${server_name}: "
echo ""
cat /proc/net/tcp | wc -l
echo ""
}
function kernel_check() {
echo ""
echo "Kernel version on ${server_name} is: "
echo ""
uname -r
echo ""
}
function all_checks() {
memory_check
cpu_check
tcp_check
kernel_check
}
all_checks
Заключение
Bash-скрипты — это круто! Независимо от того, являетесь ли вы инженером DevOps/SysOps, разработчиком или просто энтузиастом Linux, вы можете использовать сценарии Bash для объединения различных команд Linux и автоматизации скучных и повторяющихся ежедневных задач, чтобы вы могли сосредоточиться на более продуктивных и интересных вещах!
Last updated