Автоматическое резервное копирование конфигураций Cisco

Для удобства управления списком коммутаторов, конфигурации которых требуется резервировать, я создал список cisco_list следующего вида:

IP     cisco_name     type

где: IP — IP-адрес коммутатора, cisco_name — имя коммутатора без пробелов, type — тип подключения s/t (SSH/Telnet).

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

10.10.10.20     cisco1     s
10.10.10.21     cisco2     t
10.10.10.22     cisco3     s

Скрипт резервного копирования:

#!/bin/bash

# Скрипт для резервирования через ssh
backup_ssh="/home/backup/cisco_inc1"
# Скрипт для резервирования через Telnet
backup_telnet="/home/backup/cisco_inc2"
# Список устройств
config="/home/backup/cisco_list"
# Директория, в которую сохранять резервные копии
target="/home/backup/cisco"
# Текущая дата
data=$( date +%d%m%Y-%H%M )

# Количество одновременно хранимых резервных копий
# (отдельно для каждого устройства)
archs="14"

declare -a cisco_ip
declare -a cisco_name
declare -a cisco_type

# Массив адресов
cisco_ip=( $( cat $config | awk '{print $1}' ) )
# Массив имен
cisco_name=( $( cat $config | awk '{print $2}' ) )
# Массив типов
cisco_type=( $( cat $config | awk '{print $3}' ) )

for (( i=0;i<${#cisco_ip[@]};i++ )) ; do
  flag=0
  # Сохранение резервной копии в директорию atftp
  tmp=$( echo ${cisco_ip[$i]} | sed -r "s/.*\.//" )
  name="${cisco_name[$i]}-$data.conf"
  if [ "${cisco_type[$i]}" == "t" ] ; then
    $backup_telnet ${cisco_ip[$i]} $name
    flag=1
  elif [ "${cisco_type[$i]}" == "s" ] ; then
    $backup_ssh ${cisco_ip[$i]} $name
    flag=1
  fi

  if [ "$flag" -eq "1" ] ; then
    # Сравнение и перенос резервной копии
    old=$( ls -t $target/${cisco_name[$i]}-* 2> /dev/null | head -n1 )
    if [ "$old" != "" ] ; then
      tmp=$( diff -aur "$old" "/tmp/$name" )
      if [ "$tmp" != "" ] ; then
        mv /tmp/$name $target
      else
        rm -f /tmp/$name
      fi
    else
      mv /tmp/$name $target
    fi

    # Удаление старых файлов
    lines=$( ls $target/${cisco_name[$i]}-* | wc -l )
    if [ "$lines" -gt "$archs" ] ; then
      fordel=$( echo "$lines-14" | bc -l )
      for i in $( ls -t $target/${cisco_name[$i]}-* 2> /dev/null | tail -n$fordel ) ; do
        rm -f "$i"
      done
    fi
  fi
done

Скрипт не идеальный, но работает хорошо, создавая архивы вида:

cisco1-19122011-1613.conf
cisco2-19122011-1614.conf
css.php