#./bin/sh
# Name: Меню для DNS-323, часто используемых команд
# Version: 0.4
# Author: Kevin
# Description: Небольшое "Меню" которое позволит быстрее выполнять рутинные операции
# Часть функций выполняется сразу при выборе соответствующего пункта меню
# Команды для лучшей работы в Telnet
# Запуск, Остановка, Обновление, Transmission
# Часть команд которые требуют вмешательства пользователя выводятся на экран в качестве подсказки
# Команды копирования (cp & rsync)
# Создание ссылки на файл или папку
# Установка из fun-plug & IPKG
# Показать Трафик (nload)
# Диспетчер задач (htop)
#
# History: 0.1 пробная версия
# 0.2 построение меню и раскраска
# 0.3 улучшение меню и способа раскраски
# 0.4 небольшая оптимизация, и добавление справочного материала
# файл .sh должен быть в формате UNIX и с кодировкой UTF-8
# НАЗВАНИЕ
# echo - показывает текстовую строку
# СИНТАКСИС
# echo [ПАРАМЕТР]... [СТРОКА]...
# ОПИСАНИЕ
# Выдает СТРОКУ(И) на стандартное устройство вывода.
#
# --help выдает эту информацию и заканчивает работу (только с одним этим параметром)
# --version выдает информацию о версии и заканчивает работу (только с одним этим параметром)
#
# -n не выводить в конце символ новой строки
# -e включить интерпретацию управляющих символов, перечисленных ниже
# -E отключить интерпретацию таких управляющих символов в строках
# Если не указан параметр -E, то распознаются следующие последовательности:
# \NNN символ с ASCII кодом NNN (восьмеричное)
# \\ обратная косая черта
# \a тревога (BEL)
# \b забой
# \c подавлять символ новой строки в конце
# \f перевод страницы
# \n новая строка
# \r возврат каретки
# \t горизонтальная табуляция
# \v вертикальная табуляция
# echo -e # ключ -e в команде echo включает отображение "backslash escapes"; например \n - переход на следующую строку, \t -табуляция
# echo -n # ключ -n в команде echo сигнализирует, что после вывода информации не нужно переходить на следующую строку.
# Управление цветом
# Памятка, Таблица цветов и фонов
# Цвет код код фона
#black 30 40 \033[30m \033[40m
#red 31 41 \033[31m \033[41m
#green 32 42 \033[32m \033[42m
#yellow 33 43 \033[33m \033[43m
#blue 34 44 \033[34m \033[44m
#magenta 35 45 \033[35m \033[45m
#cyan 36 46 \033[36m \033[46m
#white 37 47 \033[37m \033[47m
#clear # Очистка экрана
# Дополнительные свойства для текста:
BOLD='\033[1m' # ${BOLD} # жирный шрифт (интенсивный цвет)
DBOLD='\033[2m' # ${DBOLD} # полу яркий цвет (тёмно-серый, независимо от цвета)
NBOLD='\033[22m' # ${NBOLD} # установить нормальную интенсивность
UNDERLINE='\033[4m' # ${UNDERLINE} # подчеркивание
NUNDERLINE='\033[4m' # ${NUNDERLINE} # отменить подчеркивание
BLINK='\033[5m' # ${BLINK} # мигающий
NBLINK='\033[5m' # ${NBLINK} # отменить мигание
INVERSE='\033[7m' # ${INVERSE} # реверсия (знаки приобретают цвет фона, а фон -- цвет знаков)
NINVERSE='\033[7m' # ${NINVERSE} # отменить реверсию
BREAK='\033[m' # ${BREAK} # все атрибуты по умолчанию
NORMAL='\033[0m' # ${NORMAL} # все атрибуты по умолчанию
# Цвет текста:
BLACK='\033[0;30m' # ${BLACK} # чёрный цвет знаков
RED='\033[0;31m' # ${RED} # красный цвет знаков
GREEN='\033[0;32m' # ${GREEN} # зелёный цвет знаков
YELLOW='\033[0;33m' # ${YELLOW} # желтый цвет знаков
BLUE='\033[0;34m' # ${BLUE} # синий цвет знаков
MAGENTA='\033[0;35m' # ${MAGENTA} # фиолетовый цвет знаков
CYAN='\033[0;36m' # ${CYAN} # цвет морской волны знаков
GRAY='\033[0;37m' # ${GRAY} # серый цвет знаков
# Цветом текста (жирным) (bold) :
DEF='\033[0;39m' # ${DEF}
DGRAY='\033[1;30m' # ${DGRAY}
LRED='\033[1;31m' # ${LRED}
LGREEN='\033[1;32m' # ${LGREEN}
LYELLOW='\033[1;33m' # ${LYELLOW}
LBLUE='\033[1;34m' # ${LBLUE}
LMAGENTA='\033[1;35m' # ${LMAGENTA}
LCYAN='\033[1;36m' # ${LCYAN}
WHITE='\033[1;37m' # ${WHITE}
# Цвет фона
BGBLACK='\033[40m' # ${BGBLACK}
BGRED='\033[41m' # ${BGRED}
BGGREEN='\033[42m' # ${BGGREEN}
BGBROWN='\033[43m' # ${BGBROWN}
BGBLUE='\033[44m' # ${BGBLUE}
BGMAGENTA='\033[45m' # ${BGMAGENTA}
BGCYAN='\033[46m' # ${BGCYAN}
BGGRAY='\033[47m' # ${BGGRAY}
BGDEF='\033[49m' # ${BGDEF}
tput sgr0 # Возврат цвета в "нормальное" состояние
# Управление положением курсора
# \033[#A передвинуть курсор вверх на # строк
# \033[#B передвинуть курсор вниз на # строк
# \033[#С передвинуть курсор вправо на # столбцов
# \033[#D передвинуть курсор влево на # столбцов
# \033[#E передвинуть курсор вниз на # строк и поставить в начало строки
# \033[#F передвинуть курсор вверх на # строк и поставить в начало строки
# \033[#G переместить курсор в указанный столбец текущей строки
# \033[#;#H задает абсолютные координаты курсора (строка, столбец)
UP1='\033[1A' # передвинуть курсор вверх на 1 строку
DOWN1='\033[1B' # передвинуть курсор вниз на 1 строку
RIGHT10='\033[10С' # передвинуть курсор вправо на 10 столбцов
LEFT10='\033[10D' # передвинуть курсор влево на 10 столбцов
FIRSTDOWN1='\033[1E' # передвинуть курсор вниз на 1 строку и поставить в начало строки
FIRSTUP1='\033[1F' # передвинуть курсор вверх на 1 строку и поставить в начало строки
SCOL10='\033[10G' # переместить курсор в указанный 10 столбец текущей строки
CURSOR10='\033[10;10H' # задает абсолютные координаты курсора 10, 10 (строка, столбец)
#Пример:
#!/bin/sh
#
# скрипт выводит на экран список устройств и на его фоне
# печатает строку " It is devices list "
#
#ls -l /dev
#echo -en "\033[12A\033[30G\033[1;5;31;41m It is devices list \033[0m\033[12E"
#Начало меню
echo ""
echo -n " "
echo -e "${BOLD}${BGMAGENTA}${LGREEN} Меню DNS-323 ${NORMAL}"
echo ""
echo -en "${LYELLOW} 1 ${LGREEN} Команды для удобной работы в telnet ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 2 ${LGREEN} Пути к папкам & Изменение прав доступа ${GRAY}(Команды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 3 ${LGREEN} Transmission (${GREEN}Start${NORMAL}, ${LRED}Stop${NORMAL}, ${CYAN}Upgrade${NORMAL}) ${GRAY}(Меню)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 4 ${LGREEN} Копирование (cp & rsync) ${GRAY}(Команды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 5 ${LGREEN} Создание ссылки на файл или папку ${GRAY}(Команды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 6 ${LGREEN} Установка из fun-plug & IPKG ${GRAY}(Команды)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 7 ${LGREEN} Показать Трафик (${LYELLOW} n${LGREEN}load) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 8 ${LGREEN} Диспетчер задач (${LYELLOW} h${LGREEN}top) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LYELLOW} 9 ${LGREEN} Midnight Commander (${LYELLOW} m${LGREEN}c) ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -en "${LMAGENTA} q ${LGREEN} Выход ${NORMAL}\n"
echo ""
echo "(Введите пожалуйста номер пункта, чтобы выполнить команды этого пункта, любой другой ввод, Выход)"
echo ""
tput sgr0
read choice
case "$choice" in
"1" )
echo -e "${GREEN} ${UNDERLINE}При работе в telnet:${NORMAL}"
echo ""
echo -e " ${RED} TERM=xterm ${NORMAL}"
echo -e " ${RED} COLORTERM= ;" "export COLORTERM ${NORMAL}"
echo -e " ${RED} mount --bind /mnt/HD_a2/ipkg/opt /opt ${NORMAL}"
echo -e " ${RED} export PATH=/opt/bin:/opt/sbin:$PATH ${NORMAL}"
TERM=xterm
COLORTERM= ; export COLORTERM
mount --bind /mnt/HD_a2/ipkg/opt /opt
export PATH=/opt/bin:/opt/sbin:/ffp/sbin:/ffp/bin:/usr/sbin:/sbin:/usr/bin:/bin
echo ""
echo -e "${GREEN} Выполнено (OK)"
echo ""
tput sgr0
;;
"2" )
echo -e "${GREEN} ${UNDERLINE}Пути к папкам${NORMAL}"
echo ""
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/HDD1_DNS323/Video/_Anime1 ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/HDD1_DNS323/Video/_Cartoons ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/HDD1_DNS323/Video/_Films ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/HDD1_DNS323/Video/_Serials ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/HDD1_DNS323/Soft ${NORMAL}"
echo ""
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_b2/HDD2_DNS323/Games/_Games_Install ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_b2/HDD2_DNS323/Music ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_b2/HDD2_DNS323/Soft ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_b2/HDD2_DNS323/Video/_Anime ${NORMAL}"
echo ""
echo -e "${GREEN} ${UNDERLINE}Изменение прав доступа:${NORMAL}"
echo ""
echo -e " ${RED} chown -R nobody ${MAGENTA}/mnt/HD_a2/.transmission-daemon ${NORMAL}"
echo -e " ${RED} chown -R nobody ${MAGENTA}/mnt/HD_a2/HDD1_DNS323 ${NORMAL}"
echo -e " ${RED} chown -R nobody ${MAGENTA}/mnt/HD_b2/HDD2_DNS323 ${NORMAL}"
echo -e " ${RED} chmod -R 777 ${MAGENTA}/mnt/HD_a2/HDD1_DNS323 ${NORMAL}"
echo -e " ${RED} chmod -R 777 ${MAGENTA}/mnt/HD_b2/HDD2_DNS323 ${NORMAL}"
echo ""
echo -e "${GREEN}${UNDERLINE} END ${NORMAL}"
echo ""
tput sgr0
;;
#Меню 3: Transmission
"3" )
echo -e "${GREEN} ${UNDERLINE}Transmission:${NORMAL}";
echo ""
echo -en "${GREEN}Текущая версия: ${CYAN}"; transmission-daemon -V "${NORMAL}"
echo -en "${GREEN}Состояние: ${CYAN}"; /ffp/start/transmission.sh status "${NORMAL}"
echo ""
echo -en "${LYELLOW} 1 ${LGREEN} Transmission Start ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -e " ${MAGENTA} /ffp/start/transmission.sh ${GREEN}start ${NORMAL}"
echo ""
echo -en "${LYELLOW} 2 ${LGREEN} Transmission Stop ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -e " ${MAGENTA} /ffp/start/transmission.sh ${RED}stop ${NORMAL}"
echo ""
echo -en "${LYELLOW} 3 ${LGREEN} Автозапуск Transmission ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -e " ${RED} chmod a+x ${MAGENTA}/ffp/start/transmission.sh ${NORMAL}"
echo ""
echo -en "${LYELLOW} 4 ${LGREEN} Отмена Автозапуска Transmission ${GRAY}(Выполнить?)${NORMAL}\n"
echo ""
echo -e " ${RED} chmod a-x ${MAGENTA}/ffp/start/transmission.sh ${NORMAL}"
echo ""
echo -en "${LYELLOW} 5 ${LGREEN} Transmission ${CYAN}Upgrade${NORMAL} ${GRAY}(Меню)${NORMAL}\n"
echo ""
echo -en "${LMAGENTA} q ${LGREEN} Выход ${NORMAL}\n"
echo ""
echo "(Введите пожалуйста номер пункта, чтобы выполнить команды этого пункта, любой другой ввод, Выход)"
echo ""
tput sgr0
#подМеню 3: Transmission
read choiceTransmission
case "$choiceTransmission" in
"1" )
transmission-daemon -V
/ffp/start/transmission.sh start
echo -en "${GREEN} Выполнено (OK)${NORMAL}\n"
;;
"2" )
transmission-daemon -V
/ffp/start/transmission.sh stop
echo -en "${GREEN} Выполнено (OK)${NORMAL}\n"
;;
"3" )
chmod a+x /ffp/start/transmission.sh
echo -en "${GREEN} Выполнено (OK)${NORMAL}\n"
;;
"4" )
chmod a-x /ffp/start/transmission.sh
echo -en "${GREEN} Выполнено (OK)${NORMAL}\n"
;;
"5" )
echo ""
echo -en " ${GREEN}${UNDERLINE}Transmission Upgrade${NORMAL}\n"
echo -en "${GREEN}Текущая версия: ${CYAN}"; transmission-daemon -V "${NORMAL}"
echo ""
echo -en "${LYELLOW} 1 ${LGREEN} Transmission ${CYAN}Upgrade${NORMAL} (Выполнить?)${NORMAL}\n"
echo ""
echo -e " ${MAGENTA} /ffp/start/transmission.sh ${RED}stop ${NORMAL}"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/ffp/pkg ${NORMAL}"
echo -e " ${RED} funpkg -u${LYELLOW} Transmission-2.*.tgz ${NORMAL}"
echo -e " ${MAGENTA} /ffp/start/transmission.sh ${RED}start ${NORMAL}"
echo -e " ${RED} chmod a+x ${MAGENTA}/ffp/start/transmission.sh ${NORMAL}"
echo ""
echo -e " ${RED}${BOLD}Напоминание!${NORMAL}"
echo -e " (Перед обновлением, нужно скачайть последнюю версию с ${BLUE}http://forum.dsmg600.info/viewtopic.php?id=2719&p=1 ${NORMAL})"
echo -e " для этого выполняем"
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/ffp/pkg ${NORMAL}"
echo -e " ${RED} wget ${BLUE}
http://kylek.is-a-geek.org:31337/files/ ... 2.11-1.tgz ${NORMAL}"
echo -en " (потом уже можно выполнить пункт ${LGREEN}${BOLD}'"Transmission "${CYAN}"Upgrade"'${NORMAL})"
echo ""
echo ""
echo ""
echo -en "${RED}${BOLD} 2 ${LGREEN} Отмена ${NORMAL}\n"
echo ""
echo -en "${LMAGENTA} q ${LGREEN} Выход ${NORMAL}\n"
echo ""
echo "(Введите пожалуйста номер пункта, чтобы выполнить команды этого пункта, любой другой ввод, Выход)"
echo ""
tput sgr0
echo ""
read choiceUpdate
case "$choiceUpdate" in
"1" )
/ffp/start/transmission.sh stop
cd /mnt/HD_a2/ffp/pkg
funpkg -u /mnt/HD_a2/ffp/pkg/Transmission-2.*.tgz
/ffp/start/transmission.sh start
chmod a+x /ffp/start/transmission.sh
echo -en "${LGREEN}${BOLD} Выполнено (OK)${NORMAL}\n"
;;
"2" | "q" | "Q" )
echo -n " "
echo -e "${BOLD} Выход${NORMAL}\n"
exit 0 # Выход
;;
* )
echo -n " "
echo -e "${BOLD} Неправильный ввод${NORMAL}\n"
;;
esac
;;
"q" | "Q" )
echo -n " "
echo -e "${BOLD} Выход${NORMAL}\n"
exit 0 # Выход
;;
* )
echo -n " "
echo -e "${BOLD} Неправильный ввод${NORMAL}\n"
;;
esac
;;
"4" )
echo -e "${GREEN}${UNDERLINE}cp - копирование файлов и каталогов:${NORMAL}"
echo ""
echo -e " ${RED} cp -dpR ${MAGENTA}dir1 ${CYAN}dir2 ${NORMAL}"
echo -e " ${RED} cp -dpR ${MAGENTA}/mnt/HD_a2/HDD1_DNS323/Video ${CYAN}/mnt/HD_a2/HDD1_DNS323/sdc1/Video ${NORMAL}"
echo -e " ${RED} cp -dpRv ${MAGENTA}dir1 ${CYAN}dir2 ${NORMAL}"
echo ""
echo -e "${LGREEN} screen+ cp – копирование в фоне: ${NORMAL}"
echo ""
echo -e " ${RED} screen -dmS copy cp -dpR ${MAGENTA}dir1 ${CYAN}dir2 ${NORMAL}"
echo ""
echo -e "${LGREEN} Просмотр сессии: ${NORMAL} ${NORMAL}"
echo ""
echo -e " ${RED} screen -x copy ${NORMAL}"
echo ""
echo -e "${LGREEN} Выход из сессии оставляя screen рабочим:${NORMAL}"
echo ""
echo -e " ${LYELLOW} ctrl+a && ctrl+d ${NORMAL}"
echo -e "\n"
echo -e "${GREEN} ${UNDERLINE}rsync – копирование с отображением прогресс бара:${NORMAL}"
echo ""
echo -e " ${RED} rsync --progress -r ${MAGENTA}dir1/* ${CYAN}dir2 ${NORMAL}"
echo -e " ${RED} rsync --progress -r ${MAGENTA}/mnt/HD_a2/temp/First/* ${CYAN}/mnt/HD_a2/temp/Second/ ${NORMAL}"
echo ""
echo -e "${LGREEN} screen+rsync – копирование в фоне с отображением прогресс бара в фоне: ${NORMAL}"
echo ""
echo -e " ${RED} screen -dmS rsync rsync --progress -r ${MAGENTA}dir1/* ${CYAN}dir2 ${NORMAL}"
echo -e " ${RED} screen -dmS rsync rsync --progress -r ${MAGENTA}/mnt/HD_b2/HDD2_DNS323/Video/_Cartoons/* ${CYAN}/mnt/HD_a2/HDD1_DNS323/Video/_Cartoons/ ${NORMAL}"
echo ""
echo -e "${LGREEN} Просмотр сессии: ${NORMAL}"
echo ""
echo -e " ${RED} screen -x rsync ${NORMAL}"
echo ""
echo -e "${LGREEN} Выход из сессии оставляя screen рабочим: ${NORMAL}"
echo ""
echo -e " ${LYELLOW} ctrl+a && ctrl+d ${NORMAL}"
echo ""
echo -e "${GREEN}${UNDERLINE} END ${NORMAL}"
echo ""
tput sgr0
;;
"5" )
echo -e "${GREEN}${UNDERLINE}Создание ссылки на файл или папку:${NORMAL}"
echo ""
echo -e " ${RED} ln -s${MAGENTA}" '"полный_путь_к_файл1"' "${CYAN}"'"полный_путь_к_файл2_куда_сделать_ссылку"' "${NORMAL}"
echo -e " ${RED} ln -s${MAGENTA}" '""' "${CYAN}"'""' "${NORMAL}"
echo ""
echo -e "${GREEN}${UNDERLINE} END ${NORMAL}"
echo ""
tput sgr0
;;
"6" )
echo -e "${GREEN} ${UNDERLINE}Установка из fun-plug:${NORMAL}"
echo ""
echo -e " ${RED} cd ${MAGENTA}/mnt/HD_a2/ffp/pkg ${NORMAL}"
echo -e " ${RED} funpkg -i${LYELLOW} имя.tgz ${NORMAL}"
echo ""
echo -e "${GREEN} ${UNDERLINE}Установка пакетов IPKG:${NORMAL}"
echo ""
echo -e " ${RED} ipkg list |grep${LYELLOW} имя ${NORMAL}"
echo -e " ${RED} ipkg install${LYELLOW} имя ${NORMAL}"
echo ""
echo -e "${GREEN}${UNDERLINE} END ${NORMAL}"
echo ""
tput sgr0
;;
"7" | "n" )
nload -u H # Трафик в байтах/килобайтах/мегабайтах (H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.)
;;
"8" | "h" )
htop # Htop - диспетчер задач
;;
"9" | "m" )
mc # MC - Midnight Commander
;;
"q" | "Q" )
echo -n " "
echo -e "${BOLD} Выход${NORMAL}\n"
exit 0 # Выход
;;
* )
echo -n " "
echo -e "${BOLD} Неправильный ввод${NORMAL}\n"
;;
esac
tput sgr0
echo ""