【发布时间】:2018-01-19 14:34:48
【问题描述】:
我正在尝试从我的输出中获取 csv 文件。
use Net::Cisco::ISE;
use Data::Dumper;
use Text::CSV;
my $ise = Net::Cisco::ISE->new(hostname=>'hostname', username=>'user', password=>'user');
$ise->namespace3;
$ise->namespace5;
my $networkdevices = $ise->networkdevices;
for my $name (keys %{$networkdevices})
{
print Dumper $ise->networkdevices("id" => $networkdevices->{$name}->id);
}
输出:
$VAR1 = bless( {
'NetworkDeviceGroupList' => {
'NetworkDeviceGroup' => [
'Device Type#All Device Types',
'IPSEC#Is IPSEC Device#No',
'Location#All Locations'
]
},
'tacacsSettings' => {
'previousSharedSecretExpiry' => '0',
'connectModeOptions' => 'OFF',
'sharedSecret' => '******'
},
'NetworkDeviceIPList' => {
'NetworkDeviceIP' => {
'mask' => '24',
'ipaddress' => '10.66.0.0'
}
},
'name' => 'LAB-Distri',
'coaPort' => '1700',
'authenticationSettings' => {
'radiusSharedSecret' => '******',
'keyInputFormat' => 'ASCII',
'enableKeyWrap' => 'false',
'networkProtocol' => 'RADIUS'
},
'profileName' => 'Cisco',
'id' => '3d21e200-a534-11e3-82cc-00505694f123'
}, 'Net::Cisco::ISE::NetworkDevice' );
这个脚本应该在控制台中给我我的 wiched 元素(ipadress 和 name),但它不起作用
foreach $name (keys %{$networkdevices}){
print
my $ip = $networkdevices{$name}{'ipaddress'};
my $name = $networkdevices{$name}{'name'};
}
最后我需要一个包含设备名称和 IP 地址的 csv 文件。
现在我只使用两种方法:Name 和 NetworkDeviceIPList(只是为了清理我的输出信息)。不幸的是,在Net::Cisco::ISE 中,没有任何方法可以让IPs 只获得ips。我可以打电话给NetworkDeviceIPList 并得到:
for my $name (keys %{$networkdevices}){
my $device = $ise->networkdevices("id" => $networkdevices->{$name}->id);
print Dumper $device->name;
print Dumper $device->NetworkDeviceIPList;
}
我有这个输出:
$VAR1 = 'LAB-W';
$VAR1 = {
'NetworkDeviceIP' => {
'mask' => '32',
'ipaddress' => '10.66.1.12'
}
};
但我现在不知道如何从这个输出 csv 数据中获取名称和 ips 数组。
【问题讨论】:
-
您使用的密钥与转储输出中的任何内容都不匹配。
-
在阅读代码之前,我可以说您应该始终使用
use strict和use warnings。你会避免很多错误;) -
另外,您应该使用 2
print,使用您当前的代码,只会打印$ip -
我只是觉得这看起来与
XML::Simple的输出很相似。果然……是的! -
提醒,请参阅What should I do when someone answers my question? 您的后续问题似乎已解决,但如果仍有问题,您可以提供反馈吗?
标签: perl csv data-dumper