Поиск по сайту:

5 сценариев оболочки для новичков в Linux для изучения программирования оболочки — часть II


Чтобы научиться чему-то, нужно это делать, не боясь потерпеть неудачу. Я верю в практичность и поэтому буду сопровождать вас в практический мир языка сценариев.

Эта статья является продолжением нашей первой статьи «Понимание оболочки Linux и базовых сценариев оболочки — часть I», в которой мы дали вам представление о сценариях, продолжив тем, что не разочаруем вас в этой статье.

Сценарий 1: рисование специального узора

#!/bin/bash
MAX_NO=0
echo -n "Enter Number between (5 to 9) : "
read MAX_NO
if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then
   echo "WTF... I ask to enter number between 5 and 9, Try Again"
   exit 1
fi
clear
for (( i=1; i<=MAX_NO; i++ )) do     for (( s=MAX_NO; s>=i; s-- ))
    do
       echo -n " "
    done
    for (( j=1; j<=i;  j++ ))     do      echo -n " ."      done     echo "" done ###### Second stage ###################### for (( i=MAX_NO; i>=1; i-- ))
do
    for (( s=i; s<=MAX_NO; s++ ))
    do
       echo -n " "
    done
    for (( j=1; j<=i;  j++ ))
    do
     echo -n " ."
    done
    echo ""
done
echo -e "\n\n\t\t\t Whenever you need help, linux-console.net is always there"

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

Пример вывода
[root@tecmint ~]# chmod 755 Special_Pattern.sh
[root@tecmint ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .

                         Whenever you need help, linux-console.net is always there

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

Скачать Special_Pattern.sh

Сценарий 2: Создание красочного сценария

Кто говорит, что Linux бесцветен и скучен, сохраните приведенные ниже коды в любом месте [dot] sh, сделайте его исполняемым и запустите, не надо Не забудь рассказать, как это было, Подумай, чего ты можешь добиться, реализовав это где-то.

#!/bin/bash
clear 
echo -e "33[1m Hello World"
bold effect
echo -e "33[5m Blink"
blink effect
echo -e "33[0m Hello World"
back to normal
echo -e "33[31m Hello World"
Red color
echo -e "33[32m Hello World"
Green color
echo -e "33[33m Hello World"
See remaining on screen
echo -e "33[34m Hello World"
echo -e "33[35m Hello World"
echo -e "33[36m Hello World"
echo -e -n "33[0m"
back to normal
echo -e "33[41m Hello World"
echo -e "33[42m Hello World"
echo -e "33[43m Hello World"
echo -e "33[44m Hello World"
echo -e "33[45m Hello World"
echo -e "33[46m Hello World"
echo -e "33[0m Hello World"

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

Внимание. Возможно, ваш терминал не поддерживает мигание.

Пример вывода
[root@tecmint ~]# chmod 755 Colorfull.sh
[root@tecmint ~]# ./Colorfull.sh

Hello World
Blink
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

Скачать Colorfull.sh

Сценарий 3: зашифровать файл/каталог

Этот скрипт зашифрует файл (помните? каталог/драйвер/…. в Linux все рассматривается как файл. >). Текущее ограничение приведенного выше сценария заключается в том, что он не поддерживает автоматическое завершение имени с помощью TAB. Более того, вам необходимо поместить скрипт и файл, который нужно зашифровать, в одну папку. Возможно, вам придется установить «pinentry-gui», используя пакет yum или apt, если необходимо.

[root@midstage ~]# yum install pinentry-gui
[root@midstage ~]# apt-get install pinentry-gui

Создайте файл с именем «Encrypt.sh», поместите следующий скрипт, сделайте его исполняемым и запустите, как показано.

#!/bin/bash
echo "Welcome, I am ready to encrypt a file/folder for you"
echo "currently I have a limitation, Place me to thh same folder, where a file to be 
encrypted is present"
echo "Enter the Exact File Name with extension"
read file;
gpg -c $file
echo "I have encrypted the file successfully..."
echo "Now I will be removing the original file"
rm -rf $file

Пример вывода

[root@tecmint ~]# chmod 755 Encrypt.sh
[root@tecmint ~]# ./Encrypt.sh

Welcome, I am ready to encrypt a file/folder for you
currently I have a limitation, Place me to the same folder, where a file to be

encrypted is present
Enter the Exact File Name with extension

package.xml

                                                   ┌─────────────────────────────────────────────────────┐
                                                   │ Enter passphrase                                    │
                                                   │                                                     │
                                                   │                                                     │
                                                   │ Passphrase *******_________________________________ │
                                                   │                                                     │
                                                   │       <OK>                             <Cancel>     │
                                                   └─────────────────────────────────────────────────────┘

Please re-enter this passphrase

                                                   ┌─────────────────────────────────────────────────────┐
                                                   │ Please re-enter this passphrase                     │
                                                   │                                                     │
                                                   │ Passphrase ********________________________________ │
                                                   │                                                     │
                                                   │       <OK>                             <Cancel>     │
                                                   └─────────────────────────────────────────────────────┘

I have encrypted the file successfully...
Now I will be removing the original file
</pre>

gpg -c : ваш файл зашифруется с использованием ключа доступа, также известного как пароль. В этом процессе обучения вы никогда бы не подумали, что сам процесс обучения может быть настолько простым. Итак, что вам нужно после шифрования файла? Очевидно! расшифровка файла. И я хочу, чтобы вы — ученик, читатель — сами написали сценарий дешифрования, не волнуйтесь, я не оставляю вас посередине, я просто хочу, чтобы вы что-то извлекли из этой статьи.

Примечание: gpg -d filename.gpg > имя файла — это то, что вам необходимо реализовать в сценарии дешифрования. В случае успеха вы можете опубликовать свой сценарий в комментариях, а если нет, вы можете попросить меня написать его для вас.

Скачать Encrypt.sh

Сценарий 4: Проверка использования сервера

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

#!/bin/bash
    date;
    echo "uptime:"
    uptime
    echo "Currently connected:"
    w
    echo "--------------------"
    echo "Last logins:"
    last -a |head -3
    echo "--------------------"
    echo "Disk and memory usage:"
    df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
    free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'
    echo "--------------------"
    start_log=`head -1 /var/log/messages |cut -c 1-12`
    oom=`grep -ci kill /var/log/messages`
    echo -n "OOM errors since $start_log :" $oom
    echo ""
    echo "--------------------"
    echo "Utilization and most expensive processes:"
    top -b |head -3
    echo
	top -b |head -10 |tail -4
    echo "--------------------"
    echo "Open TCP ports:"
    nmap -p- -T4 127.0.0.1
    echo "--------------------"
    echo "Current connections:"
    ss -s
    echo "--------------------"
    echo "processes:"
    ps auxf --width=200
    echo "--------------------"
    echo "vmstat:"
    vmstat 1 5
Пример вывода
[root@tecmint ~]# chmod 755 Server-Health.sh
[root@tecmint ~]# ./Server-Health.sh

Tue Jul 16 22:01:06 IST 2013
uptime:
 22:01:06 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
Currently connected:
 22:01:06 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
tecmint   pts/0    116.72.134.162   21:48    0.00s  0.03s  0.03s sshd: tecmint [priv]
--------------------
Last logins:
tecmint   pts/0        Tue Jul 16 21:48   still logged in    116.72.134.162
tecmint   pts/0        Tue Jul 16 21:24 - 21:43  (00:19)     116.72.134.162
--------------------
Disk and memory usage:
Free/total disk: 292G / 457G
Free/total memory: 3510 / 3838 MB
--------------------
OOM errors since Jul 14 03:37 : 0
--------------------
Utilization and most expensive processes:
top - 22:01:07 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
Tasks: 149 total,   1 running, 148 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.3%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  3788 1128  932 S  0.0  0.0   0:32.94 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:14.07 migration/0

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

  1. «>» : оператор перенаправления вызывает создание файла, и если он существует, его содержимое перезаписывается.
  2. >>’: когда вы используете >>, вы добавляете информацию, а не заменяете ее.
  3. «>>» безопасен по сравнению с «>».

Скачать Server-Health.sh

Сценарий 5: проверка места на диске и отправка оповещения по электронной почте

Как насчет получения электронного письма, когда использование диска в разделе PART превышает максимально допустимое? Это спасительный сценарий для веб-администраторов с небольшими изменениями.

MAX=95
[email 
PART=sda1
USE=`df -h |grep $PART | awk '{ print $5 }' | cut -d'%' -f1`
if [ $USE -gt $MAX ]; then
  echo "Percent used: $USE" | mail -s "Running out of disk space" $EMAIL
fi

Примечание. Удалите «USER» из своего имени пользователя. Вы можете проверить почту с помощью команды «mail».

Скачать Check-Disk-Space.sh

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