четверг, 18 марта 2010 г.

Пример скрипта

источник: http://linux-admin.net.ru/content/516
ПРИМЕР

#!/bin/bash
#################################################
#Keyfiles - tar/gzip configuration files        #
#Version:   Версия  1.0 (черновик)              #
#Ackn:      основан на идее Dave Turnbull       #
#Authour:   Thomas Adam                         #
#Date:      Понедельник 28 мая 2001, 16:05 BST  #
#Website:   www.squidproxyapps.org.uk           #
#Contact:   thomas@squidproxyapps.org.uk        #
########################################Комментарии

#Комментарии для Dave Turnbull. Чтобы он не заблудился :-).

#объявление переменных
configfile="/etc/keyfiles.conf"
tmpdir="/tmp"
wrkdir="/var/log/keyfiles"
tarfile=keyfiles-$(date +%d%m%Y).tgz
method=$1           #опции выбора операции
submethod=$2        #дополнительные опции для "$1"
quiet=0             #вывод отладочной информации (по умолчанию)

cmd=basename $0   #удаляем путь из имени файла
optfiles="Usage: $cmd [--default (--quiet)] [--listconffiles] [--restore (--quiet)] [--editconf] [--delold] [--version]"
version="keyfiles: Автор Thomas Adam, Версия 1.0 (Вторник 5 июня 2001, 23:42)"

#проверка конфигурационного файла...
if [ ! -e $configfile ]; then
  for beepthatbell in 1 2 3 4 5; do
    echo -en "\x07"
  done
  echo " " | mail -s "[Keyfiles]: отсутствует файл $configfile" $USER
  echo " [Ошибка!]: отсутствует файл $configfile" $USER
  exit -1
fi

#проверяем существование рабочей директории, если её нет, то создаём
[ ! -d $wrkdir ] && mkdir $wrkdir

#проверка того, запущен ли скрипт без опций
if [ -z $method ]; then
  echo $optfiles
  exit 0
fi

#синтаксический разбор командной строки
check_syntax ()
{
  case $method in
    --default)
    cmd_default
    ;;
    --listconffiles)
    cmd_listconffiles
    ;;
    --restore)
    shift 1
    cmd_restore
    ;;
    --editconf)
    exec $EDITOR $configfile
    exit 0
    ;;
    --delold)
    cd $wrkdir && rm -f ./*.old > /dev/null
    exit 0
    ;;
    --version)
    echo $version
    exit 0
    ;;
    --*|-*|*)
    echo $optfiles
    exit 0
    ;;
  esac
}

#Вот теперь и начинается самое интересное.....
#объявление функции используемой опцией "--default"
cmd_default ()
{

  #пакуем все файлы, указанные в $configfile

  if [ $submethod ]; then
    tar -cZPpsf $tmp/$tarfile $(cat $configfile) &>/dev/null 2>&1
  else
    tar -vcZPpsf $tmp/$tarfile $(cat $configfile)
  fi

  #если содержимое каталогов пусто......
  if test $(ls -1 $wrkdir | grep -c -) = "0"; then
    mv $tmp/$tarfile $wrkdir
    exit 0
  fi

  for i in $(ls $wrkdir/*.tgz); do
    mv $i $i.old
  done

  mv $tmp/$tarfile $wrkdir
}

#вывести список, содержащийся в $configfile
cmd_listconffiles ()
{
  sort -o $configfile $configfile
  cat $configfile
  exit 0
}

#восстановить файлы......
cmd_restore ()
{
  cp $wrkdir/keyfiles*.tgz /
  cd /

  #проверка флага тишины :-)
  if [ $submethod ]; then
    tar vzxfmp keyfiles*.tgz &>/dev/null 2>&1
    rm -f /keyfiles*.tgz
    exit 0
  else
    tar vzxfmp keyfiles*.tgz
    rm -f /keyfiles*.tgz
    exit 0
  fi
}

#вызов головной функции
check_syntax
-------------------
Следует заметить, что основные изменения, которые вы можете делать в скрипте -- это изменять три переменные:
configfile="/etc/keyfiles.conf"
tmpdir="/tmp"
wrkdir="/var/log/keyfiles"

Комментариев нет:

Отправить комментарий

Ярлыки

Архив блога