Dormestmass: Админ — это состояние души

Cisco: Автосохранение конфигурации по rcp

Маленький скриптик для сохранения конфигурации маршрутизаторов по rcp. До этого пользовался сохранением через snmp, однако с 800 серии снимать не получилось. Руки давно чесались исправить ситуацию, но все времени не хватало.

Скрип запускается еженощно по cron и сохраняет полученные конфигурационные файлы в RCS. Результатом работы является письмо с diff-ами конфигов.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh
# Copyright (c) Roman Shramko
# The script loads configuration from cisco routers and puts it in a cvs tree
 
# the list of routers
ROUTERS="routers.cfg"
# please specify a secure path for storing configs
STORAGE="/home/srn/copycfg"
LASTCONF="$STORAGE/last"
 
cd $STORAGE
 
# check config
if [ ! -f "$ROUTERS" ] ; then
    echo "Can't find $ROUTERS"
fi
 
# check the RCS dir
if [ ! -d "RCS" ] ; then
    mkdir "RCS"ip rcmd rcp-enable
ip rcmd rsh-enable
ip rcmd remote-host admin 10.100.0.66 srn enable
ip rcmd remote-host admin 10.100.102.106 srn enable
 
fi
 
while read router
do
    if [ -f "$router.conf" ] ; then
        rm -f "$router.conf"
    fi
 
    if [ -z "$router" ] ; then
        continue
    fi
 
    # check the availability of the $router
    # ping it and check the result code ping's returned
    ping -c 3 -o $router 2>&1 > /dev/null
    if [ ! $? -eq 0 ] ; then
        # ping's failed
        echo "No responce from $router"
        continue
    fi
 
    # create a tmp file
    TMPF=`mktemp conf.XXXXXX`
 
    # copy a config via the rcp protocol
    rcp "admin@$router:running-config" "$TMPF"
 
    if [ ! -s "$TMPF" ] ; then
        # $TMPF is empty
        continue
    fi
 
    # get the line with the hostname of the router
    host=`grep hostname $TMPF | head -1`
    # delete the word 'hostname'
    host=${host#hostname }
    # remove from the config the line with "ntp clock-period"
    grep -v 'ntp clock-period' $TMPF > "$host.conf"
    rm -f $TMPF
 
    # create and initialize a rcs file if it had not created
    if [ ! -f "RCS/$host.conf,v" ] ; then
        rcs -q -i -t-"base version" "$host.conf"
        ci -q -m'-' -l "$host.conf"
    fi
 
    # create a diff file
    DIFF=`rcsdiff -qu "$host.conf"`
 
    # if we have a difference
    if [ -n "$DIFF" ] ; then 
        echo "*********************************"
        echo 
        echo "The $host's ($router) config was changed:"
        echo 
        echo "$DIFF"
        echo 
        echo "*********************************"
        # commit changes
        ci -q -m'-' -l "$host.conf"
    fi
    mv "$host.conf" $LASTCONF
done < "$ROUTERS"
 
#EOF

Файл roters.conf — это простой текстовый файл с перечнем адресов маршрутизаторов в колонку:

10.10.23.130
10.10.30.130
10.10.33.130
10.10.34.130
10.10.37.130
10.10.38.130
10.10.39.130

RCP и RSH включаются на маршрутизаторе следующим образом:

ip rcmd rcp-enable
ip rcmd rsh-enable
ip rcmd remote-host local_username 10.10.10.106 remote_username enable

Остается только добавить запуск скрипта в cron.

Популярность: 6%

P.S.

Футболки Mitsubishi: запчасти для мицубиси. Запчасти Мицубиси. Автосервис.

Вы можете следить за обсуждением с помощью RSS 2.0 ленты.