Для автоматизації завдань з нашим мережевим обладнанням я використовую рубін з мережами-scp та net-ssh. Це досить короткий сценарій для виконання команд (уривок, а не готовий продукт):
begin
Net::SSH.start(fqdn, username, :password => loginPassword) do |session|
output = ""
channel = session.open_channel do |ch|
ch.send_channel_request "shell"
ch.on_data do |ch, data|
output += data
end
ch.send_data "conf t\n\r"
#Some tasks here
ch.send_data "exit\n\r" #Exit config mode
ch.send_data "exit\n\r" #Exit device
end
# Wait for everything to complete
channel.wait
end
rescue Exception=>e
errorOutput = fqdn + ": " + e.to_s
puts errorOutput
puts output
return device
end
return output
Майте на увазі, що у вас повинна бути порожня змінна loginPassword. Якщо порожній, він використовуватиме ваш відкритий ключ RSA для входу (підтримується на платформах HP ProCurve та Cisco 15.X).
Використовуючи щось на зразок git та декілька коротких сценаріїв, ви можете впорядкувати всі конфігурації обладнання з різними змінами та тими, хто вніс зміни (за умови, що ваші інженери витягують конфігурації та здійснюють їх після завершення роботи).
Крім того, це повинно говорити, але про всяк випадок завжди перевіряйте сценарій роботи в лабораторії, перш ніж працювати на виробничому обладнанні. Особливо при виконанні команд та зміні конфігурацій. Тест, тест, тест.