Что такое сценарии оболочки?

Сценарий оболочки — это компьютерная программа, предназначенная для запуска в 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