Пишем Админку на shell

left Думаю после некоторого времени работы с командной строкой надоедает бить одни и теже команды, и даже не помогает что они запоминаются. Да что уж говорить, порой просто забываешь где что лежит. Особенно стало надоедать выставлять разные права доступа на файлы веб сервера. Я уже давно подумывал написать что-то для управления всей этой радостью. И вот последней каплей стало то, что надо было выполнять над севером некоторые действия людям совершенно не разбираюшимся в Linux.

Я выбрал путь одно файла. Хоть у меня и были уже некоторые скриты резервирования конфигов, баз данных. Но мне захотелось что бы все было в одном файле и легко копировалось. Особенно очень удобно держать этот скрипт у себя на веб сервере и с помошью команды wget заливать на новую виртуальную машину. Если все же необходимо подключить какой-то скрипт, то можно реализовать так:

. /path/to/script или source /path/to/script

Или если надо запустить уже существующий:

bash /path/to/script

Разместить скрипт луше всего или у себя в домашней директории или прямо в файловой системе. Название придумать покороче, что бы вбивать его не надоедало.

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

#!/bin/bash
myecho() {
    echo
    echo Нажмите Enter для продолжения
    read
}

Дальше само меню у нас будет состоять из обычного цыкла while и case. Для человека хоть немного знакомого с програмирование говорить нечего. В обратном случае гугль вам в помошь, хотя на примере думаю понятно будет.

#!/bin/bash
n=1
while [ "$n" -ne 0 ];
do
    clear
    echo -= Admin panel =-
    echo 1 — chmod 777 for www
    echo 2 — Web server Status
    echo Введите номер меню
    echo или 0 для выхода.

    case $n in
        0)
        echo Bye! Made by BW on iSudo.ru
        ;;

        1)
        sudo chmod 777 -R /var/www/
        myecho
        ;;

        2)
        sudo /etc/init.d/apache2 status
        sudo /etc/init.d/mysql status
        myecho
        ;;

        *)
        echo==Не верная команда==—
        ;;
    esac
done
exit 0 # конец выполнения програмы

Еше можно реализовать структуру IF. У меня она выполняет функцию открыть лог файл или вывести последение 10 строк. Все запихнуто в цикл, что бы выводилось пока ответ не будет правильный y/n.

#!/bin/bash
flag=0
while [ $flag = 0 ];
do
    echo Отркрыть файл? Или вывести 10 последних стр? {y/n}
    read n2
    if [ $n2 = "y" ]
    then
        sudo nano /var/log/apache2/error.log
        flag=1
    fi

    if [ $n2 = "n" ]
    then
        sudo tail /var/log/apache2/error.log
        flag=1
    fi
done

Вот вообшем и весь скрипт. Это я конечно образно. У меня уже почти 600 строк в своем. Но принцип один и тот же. В каждом елементе case еше case.

Вобшем пишем свои админки, ибо хороший Админ - ленивы Админ :-)

Categories: Programming, HowTo, Ubuntu Tags: ,