可以在 vRealize Network Insight 收集器 CLI 中生成并运行脚本,以自动发现网络中的设备,并将所发现设备的详细信息导出为 .csv
文件。
在未来版本的 vRealize Network Insight 中,将弃用通过运行 CLI 命令发现网络设备。
您可以通过运行 CLI 命令发现以下设备:
- Cisco 交换机
- Arista 交换机
- Juniper 交换机
- Dell 交换机
- F5 Big-IP
- Brocade 交换机
- Palo Alto 网络
- Check Point 防火墙
- Cisco ASA
过程
- 以支持用户身份登录到 vRealize Network Insight 收集器 CLI。
使用安全套接字 Shell (SSH) 客户端提供您的 CLI 登录凭据。
- 切换到 Ubuntu 用户。
ub
- 运行以下命令,以在当前的工作目录中生成 Python 脚本。
java -cp "/home/ubuntu/build-target/common-utils/tools-0.001-SNAPSHOT.jar" com.vnera.tools.DiscoveredDevicesTool -w script.py
您可以使用此脚本执行网络发现。
- 运行以下命令,以在当前的工作目录中生成示例凭据文件。
java -cp "/home/ubuntu/build-target/common-utils/tools-0.001-SNAPSHOT.jar" com.vnera.tools.DiscoveredDevicesTool -s sample_creds.csv
您可以使用示例凭据文件访问网络中的设备。
以下是示例凭据文件的一个示例:
"credential_name","connection_type", "username", "password", "snmp_version", "community_string", "snmp_user", "snmp_context", "snmp_auth_type", "snmp_auth_password", "snmp_privacy_type", "snmp_privacy_password" "SSH1","SSH","admin","admin","","","","","","","","" "API1","API","admin","admin","","","","","","","","" "SNMP1","SNMP","","","v2c","community","","","","","","" "SNMP2","SNMP","","","v3","","user","context","authtype","authpass","privacytype","privacypass"
- 使用 SSH、SNMP v2c、SNMPv3 或 API 凭据更新示例凭据文件。
可以在该文件中输入多个凭据,只需为每个条目提供唯一的
credential_name
即可。要发现 F5 Big-IP 负载均衡器,必须输入 API 凭据。注: 无法使用 API 凭据发现其他网络设备。 - 对 Python 脚本运行
help
命令,以查看该脚本支持的选项。python3 script.py --help
可以使用这些选项对凭据进行身份验证并执行网络发现。
选项 描述 --host vRealize Network Insight 平台节点 1 的 IP 地址。 --deployment type 要对其执行此操作的部署类型。接受的值为 onprem
和saas
。默认值为
onprem
。--username 平台用户的用户名。 注: 必须始终将用户名用单引号引起来。--password 平台用户的密码。 注: 必须始终将密码用单引号引起来。--domain_type 用于对用户凭据进行身份验证的域类型。接受的值为 LOCAL
和LDAP
。--domain_value 如果域类型为 LDAP,请提供 LDAP 域名。 --proxy_ips vRealize Network Insight 收集器的 IP 地址。 --credentials_file_path 包含 SSH、SNMP 或 API 凭据的凭据文件的位置。 --network_ranges 要对其执行网络发现的 IP 地址范围。您可以采用网络范围格式或 CIDR 范围格式指定 IP 地址。 --seeds 要开始网络发现进程的网络设备的种子 IP 地址或种子 FQDN。
注:运行网络发现脚本时,将以给定的种子 IP 地址作为起点开始网络发现进程。
根据 CDP 和 LLDP 等行业协议发现每个种子的邻居设备。然后,将每个发现的设备用作种子,以递归方式发现网络中的其他设备,直到发现网络中的所有设备或达到种子深度。
--seed_depth 发现网络设备的深度。
注:种子深度指示必须从种子 IP 地址探索的邻居的层级数。默认情况下,种子的深度为 0;种子的邻居的深度为 1:种子的邻居的邻居的深度为 2,依此类推。
如果输入的种子深度为 2,则可以发现种子的设备、种子的邻居和种子的邻居的邻居。
--ignored_list 要从网络发现中排除的 IP 地址列表。您可以采用以下格式指定 IP 地址:
- 单个 IP 地址
- FQDN
- 网络范围
- CIDR 范围
--download_discovered_devices 用于下载以前发现的设备的选项。输入 True
或False
。--out 成功网络发现的 CSV 输出文件的名称。输出文件的默认名称为 auto_gen_discovered_devices.csv。 --clear_all 用于清除发现的详细信息(例如发现作业、凭据配置文件、作业结果和已发现的设备)的选项。输入 True
或False
。--wait_time_in_secs 发现设备的最长等待时间(以秒为单位)。 - 使用以下选项之一运行 Python 脚本:
选项 示例 使用 --network_ranges 选项提供发现的网络范围。 python3 script.py --deployment_type onprem --username 'user' --password 'pwd' --domain_type LOCAL --proxy_ips 10.xx.196.xxx --out discovered_devices.csv --credentials_file_path sample_creds.csv --network_ranges 10.xxx.xx.158/24
使用 --seeds 和 --seed_depth 选项提供网络发现的种子地址和种子深度。 python3 script.py --deployment_type onprem --username 'user' --password 'pwd' --domain_type LDAP --domain_value vmware.com --proxy_ips 10.xx.196.xxx --out discovered_devices.csv --credentials_file_path sample_creds.csv --seeds 10.xxx.xx.xxx --seed_depth 2
注:您必须使用更新的凭据文件(包括 SSH、SNMP v2c、SNMPv3 或 API 凭据)运行 Python 脚本。
python 脚本仅发现在收集器网络可访问性范围内的设备。不会发现网络上可用但无法从收集器网络访问的设备。
- 根据操作的状态,执行以下操作之一:
状态 操作 操作成功。 打开 CSV 文件。示例 CSV 文件如下所示:
"DataSourceType","IP","fqdn","Username","Password","CSPRefreshToken","NickName", "CentralCliEnabled","IPFixEnabled","SwitchType","ParentvCenter","IsVMC", "snmp_version","snmp_community_string","snmp_username","snmp_password", "snmp_auth_type","snmp_privacy_type","ProxyIP" "DataSource1","","Domain_name","username","<pwd>","", "nick_name_discovered_devices_1","","","","","","","","","","","","10.xx.xxx.xx" "DataSource2","10.1xx.xx.1x","","username","pwd","", " nick_name_discovered_devices_2","","","","","","","","","","","","10.xx.xx.xxx"
操作失败或超时。 运行 Python 脚本并包含 --clear_all 选项,清除已发现设备的详细信息并启动新的网络发现操作。
例如:
python3 script.py --deployment_type onprem --username 'user' --password 'pwd' --proxy_ips 10.xxx.xxx.xx --clear_all true
下一步做什么
可以使用 network-insight-sdk-python SDK 在 vRealize Network Insight 中将发现的网络设备批量添加为数据源。有关详细信息,请参见使用 Python SDK 批量添加数据源。