Answers:
这是Perl中一个非常基本的脚本模板,用于远程登录到设备列表(在名为devicelist.txt的文件中的每一行上)并配置一些命令。根据实际操作,应该提供一个良好的开端。
use Net::Telnet::Cisco;
# read in a list of devices
my @devicelist;
open(DATA, "<devicelist.txt") || die "Can't open file!";
while (<DATA>) {
chomp;
push( @devicelist, $_);
}
# loop through the devices
foreach $hostname (@devicelist)
{
# telnet to device
my $cs = Net::Telnet::Cisco->new(Host => $hostname);
# login, go enable, disable paging, go into config mode
$cs->login( "username", "password" );
$cs->enable( "enable_password" );
$cs->cmd( 'terminal length 0' );
$cs->cmd( 'config t' );
# configure the device
$cs->cmd( 'vlan 100, 200, 300' );
$cs->cmd( 'interface Ethernet0' );
$cs->cmd( ' switchport access vlan 100' );
# exit config mode and write the config
$cs->cmd( 'end' );
$cs->cmd( 'wr mem' );
# close the connection
$cs->close;
}
以下是有关Net :: Telnet :: Cisco的更多详细信息。
我会说您有两种选择:
配置管理软件可能值得研究-Puppet的网络设备管理可以轻松地将VLAN添加到众多Cisco设备中(如果您使用的是Cisco)。
VTP可能就是您的答案。像任何“自动化”工具一样,它具有风险,但是您可以通过适当的规划来减轻风险。您还应该阅读一些内容,以确保您了解其工作原理,或者无意中造成了自己的问题(同样,就像任何自动化工具一样)。
我建议使用VTP版本3,因为它可以帮助避免某些潜在的问题并提供其他好处。
通过在您选择的搜索引擎中搜索“ vtp版本3配置”,您可以轻松找到数百个文档。
我将ruby与net-scp和net-ssh gem一起使用,以通过我们的网络设备自动执行任务。这是一个很短的脚本来执行命令(摘录,而不是成品):
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之类的东西和一些简短的脚本,您可以组织所有设备配置以及不同的更改以及进行更改的人员(假设您的工程师提取配置并在工作完成后提交)。
同样,它应该不言而喻,但以防万一,在生产设备上运行之前,务必在实验室中测试脚本化的工作。特别是在执行命令和更改配置时。测试,测试,测试。
可以使用NOC,NOC Project,它是ISP的可扩展,高性能和开源OSS系统。您可以轻松地在整个网络中添加VLAN。