вторник, октября 20, 2009

Допиливаю сборку конфигов с оборудования

По непонятным причинам, rancid, не мог собрать конфиги с двух железок и в логе постоянно писал - "End of run not found".
Оказалось, что забыл внести одну из команд в список разрешенных... странно, что всплыло только сейчас, спустя пять месяцев, после запуска системы (старт rancid).

Выявление проблемы:
Выясняем, что оборудование, для пользователя (и с сервера) доступно:
/usr/local/libexec/rancid/clogin hostName
hostName
spawn ssh -c 3des -x -l rancid_user hostName
rancid_user@thostName's password:
hostName#

А тут выясняем, почему отваливается:
/usr/local/libexec/rancid/rancid -d hostName
<skip>
HIT COMMAND:hostName#show env all
In ShowEnv: hostName#show env all
<skip>
hostName: End of run not found

Видно, что застревает на команде show env all.
Ага... сначала, подумал, что забыл добавить в разрешенные, однако, оказалось, что на разных версиях софта, команда пишется по разному...
На версиях 12.2.*, она так и есть - "show env all", а на 12.4.*, она выглядит "show environment all", а так как до tacacs команды доводятся полностью, одна и таже команда в консоли (show env all), на tacacs выглядит, для разных версий IOS по разному.
Ниже конфигурация пользователя, для tac_plus

user = rancid_user {
default service = deny
member = root_group
login = des "****"
service = exec {
priv-lvl=15
}
cmd = show {
permit boot
permit bootvar
permit c7200
permit "controllers*"
permit diag
permit diagbus
permit "env all"
permit "environment all"
permit "idprom backplane"
permit "install active"
permit flash
permit "gsr chassis"
permit module
permit running-config
permit "redundancy secondary"
permit "rsp chassis-info"
permit "spe version"
permit "variables boot"
permit version
permit vlan
permit "vtp status"
deny .*
}
cmd = write {
permit "terminal"
deny .*
}
cmd = dir {
permit .*
}