Что такое сценарии оболочки?
Сценарий оболочки — это компьютерная программа, предназначенная для запуска в Unix/Linux. Программа, которая шаг за шагом выполняется оболочкой, которая представляет собой еще одну программу, обеспечивающую уровень интерфейса между ядром Linux и конечным пользователем.
оболочка, которая может быть одной из следующих:
Оболочка Sh
Это называется оболочкой Борна, она была разработана в лабораториях AT&T в 70-х годах парнем по имени Стивен Борн. Это предпочтительная оболочка для программирования оболочки из-за ее компактности и скорости. Недостатком оболочки Bourne является то, что в ней отсутствуют функции для интерактивного использования, такие как возможность вызова предыдущих команд (история). В оболочке Bourne также отсутствует встроенная арифметическая и логическая обработка выражений.
Оболочка Bourne является оболочкой ОС Solaris по умолчанию. Это стандартная оболочка для сценариев администрирования системы Solaris. Для оболочки Bourne:
- Полное имя команды: /bin/sh и /sbin/sh.
- Приглашение по умолчанию для пользователя без полномочий root: $.
- Приглашение по умолчанию для корневого пользователя: #.
Оболочка C
Linux был построен с использованием языка C, и это побудило разработчиков из Университета Беркли разработать оболочку в стиле C, в которой синтаксис аналогичен языку C.
- Расширение UNIX, написанное Биллом Джоем из Калифорнийского университета в Беркли.
- Встроенные функции для интерактивного использования, такие как псевдонимы и история команд.
- Включает удобные функции программирования, такие как встроенная арифметика и синтаксис выражений, подобный C.
Для оболочки C:
- Полное имя команды: /bin/csh.
- Приглашение по умолчанию для пользователя без полномочий root: имя хоста %.
- Приглашение по умолчанию для корневого пользователя: имя хоста #.
Оболочка Ksh
Также называемая оболочкой Korn, она совместима с sh и bash. Ksh предлагает некоторые улучшения по сравнению с оболочкой Bourne.
- Автор Дэвид Корн из AT&T Bell Labs.
- Является надмножеством оболочки Борна.
- Поддерживает все в оболочке Bourne.
- Имеет интерактивные функции, сравнимые с теми, что есть в оболочке C.
- Включает удобные функции программирования, такие как встроенные арифметические операции и массивы в стиле C, функции и средства для работы со строками. .
- Работает быстрее, чем оболочка C.
- Запускает сценарии, написанные для оболочки Bourne.
Для оболочки Korn:
- Полное имя команды: /bin/ksh.
- Приглашение по умолчанию для пользователя без полномочий root: $.
- Приглашение по умолчанию для корневого пользователя: #.
Оболочка GNU Bourne-Again
Также называемая оболочкой Bash, она очень популярна и совместима со сценариями оболочки sh, поэтому вы можете запускать свои сценарии sh, не изменяя их. Мы собираемся использовать эту оболочку в этом блоге.
- Совместим с оболочкой Bourne.
- Включает в себя полезные функции оболочек Korn и C.
- Имеет клавиши со стрелками, которые автоматически назначаются для вызова и редактирования команд.
Для оболочки GNU Bourne-Again:
- Полное имя команды: /bin/bash.
- Приглашение по умолчанию для пользователя без полномочий root: bash-x.xx$. (Где x.xx указывает номер версии оболочки. Например, bash-3.50$)
- Приглашение по умолчанию для корневого пользователя: bash-x.xx#. (Где x.xx указывает номер версии оболочки. Например, bash-3.50$#)
Почему BASH стал популярным
Основная идея сценариев bash заключается в выполнении нескольких команд для автоматизации конкретной работы. Как вы, возможно, знаете, вы можете запускать несколько команд из оболочки, разделяя их точкой с запятой (;):
лс ; pwd
Предыдущая строка представляет собой мини-скрипт bash.
С чего начать с простого скрипта...?
Шаг 01. Создайте файл test.sh с помощью редактора vi
Шаг 02. Вставьте код ниже
#!/bin/bash
echo "hello world" //print to screen
#Read input from key board :
echo “Please enter your name: “
read name
echo “Welcome to Linux $name”
Шаг 03. Измените разрешение файла, используя команду ниже
chmod 777 test.sh (setting full access to test.sh)
Шаг 04. Запустите скрипт, используя команду ниже
./test.sh


Использовать скрипт для отображения информации о системе
Мы начнем с добавления нескольких комментариев вверху и некоторых команд после:
#!/bin/bash # Sample script written for Part 4 of the RHCE series # This script will return the following set of system information: # -Hostname information: echo -e “\e[31;43m***** HOSTNAME INFORMATION *****\e[0m” hostname echo “”
# -Использование дискового пространства файловой системой:
echo -e “\e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****\e[0m” df -h echo “” # -Free and used memory in the system: echo -e “\e[31;43m ***** FREE AND USED MEMORY *****\e[0m” free -g echo “” # -System uptime and load: echo -e “\e[31;43m***** SYSTEM UPTIME AND LOAD *****\e[0m” uptime echo “” # -Logged-in users: echo -e “\e[31;43m***** CURRENTLY LOGGED-IN USERS *****\e[0m” who echo “” # -Top 5 processes as far as memory usage is concerned echo -e “\e[31;43m***** TOP 5 MEMORY-CONSUMING PROCESSES *****\e[0m” ps -eo %mem,%cpu,comm — sort=-%mem | head -n 6 echo “” echo -e “\e[1;32mDone.\e[0m”

Автоматизация задач с помощью сценариев оболочки
Сценарии оболочки можно использовать для автоматизации сложных задач, выполняемых вручную, или повторяющихся задач.
Пример 01.
#!/bin/bash
# -Find and / or delete files with 777 permissions.
echo -e “\e[4;32mLOOKING FOR FILES WITH 777 PERMISSIONS\e[0m”
# Enable either option (comment out the other line), but not both.
# Option 1: Delete files without prompting for confirmation. Assumes GNU version of find.
#find -type f -perm 0777 -delete
# Option 2: Ask for confirmation before deleting files. More portable across systems.
find -type f -perm 0777 -exec rm -i {} +;
echo “”
Пример 02.
#!/bin/bash
# -Alert when file system usage surpasses a defined limit
echo -e “\e[4;32mCHECKING FILE SYSTEM USAGE\e[0m”
THRESHOLD=30
while read line; do
# This variable stores the file system path as a string
FILESYSTEM=$(echo $line | awk ‘{print $1}’)
# This variable stores the use percentage (XX%)
PERCENTAGE=$(echo $line | awk ‘{print $5}’)
# Use percentage without the % sign.
USAGE=${PERCENTAGE%?}
if [ $USAGE -gt $THRESHOLD ]; then
echo “The remaining available space in $FILESYSTEM is critically low. Used: $PERCENTAGE”
fi
done < <(df -h — total | grep -vi filesystem)
Задания Cron
планировать выполнение задач на периодической основе и отправлять результаты предварительно определенному списку получателей по электронной почте или сохранять их в файл, который можно просмотреть с помощью веб-браузера.
#!/bin/bash until [[ “$(date)” =~ “28 17:07:” ]]; do sleep 50 done echo echo -e “\e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****\e[0m” df -h echo “”
Как сохранить задание cron в фоновом режиме
Один из самых стандартных способов запуска задач в фоновом режиме на компьютерах с Linux — это задания cron. Сам «Крон» — это демон (или программа), работающий в фоновом режиме. Расписание различных выполняемых заданий находится в файле конфигурации «crontab». (находится по адресу /var/spool/cron/crontab)
Проверять,
crontab -l
Чтобы настроить кукурузу,
crontab -e
тогда,
# ~ # SHELL=/bin/bash HOME=/ #MAILTO=”[email protected]” #This is a comment * * * * * echo ‘Run this command every minute’ >> /home/engineer/scripting/output.txt
Добавит выходной файл в /home/engineer/scripting/output.txt.
Как собрать данные с удаленного маршрутизатора/коммутатора с помощью скрипта
#!/usr/bin/expect
set arg1 [lindex $argv 0]
spawn telnet RouterName_A
sleep 10
expect “name: “ {send “testUsr\r”}
set timeout 3
expect “word: “ {send “testPwd\r”}
expect “01>” {send “enable\r”}
expect “word: “ {send “enablePwd\r”}
set times 0
while { $times < 5 } {
expect “#” {send “sh ip route \r”}
sleep 5
set times [ expr $times+1]
}
expect “#” {send “exit\r”}
interact
Ссылки по теме,
The beginner's guide https://medium.com/@mail.malindat/shell-scripting-beginners-guide-6ae937e8d58f