当您的数据中心内有多个网络设备时,发现这些网络设备并将其作为数据源手动添加到 vRealize Network Insight 可能会非常耗时且效率低下。

在这种情况下,可以在 vRealize Network Insight 收集器 CLI 中生成并运行脚本,以自动发现网络中的设备,并将所发现设备的详细信息导出为 .csv 文件。

只能发现以下设备:

  • Cisco 交换机
  • Arista 交换机
  • Juniper 交换机
  • Dell 交换机
  • F5 Big-IP
  • Brocade 交换机
  • Palo Alto 网络
  • Check Point 防火墙
  • Cisco ASA

过程

  1. 支持用户身份登录到 vRealize Network Insight 收集器 CLI。
    使用安全套接字 Shell (SSH) 客户端提供您的 CLI 登录凭据。
  2. 切换到 Ubuntu 用户。
    ub
  3. 在当前的工作目录中生成 Python 脚本。您可以使用此脚本执行网络发现。
    java -cp "/home/ubuntu/build-target/common-utils/tools-0.001-SNAPSHOT.jar" com.vnera.tools.DiscoveredDevicesTool -w script.py
  4. 在当前的工作目录中生成示例凭据文件。可以使用此文件访问网络中的设备。
    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"
    
  5. 使用 SSH、SNMP v2c、SNMPv3 或 API 凭据更新示例凭据文件。可以在该文件中输入多个凭据,只需为每个条目提供唯一的 credential_name 即可。
    1. (可选) 输入您的 API 凭据以发现 F5 Big-IP 负载均衡器。无法使用 API 凭据发现其他设备。
    2. 保存文件。
  6. 执行网络发现之前,请对 Python 脚本运行 help 命令,以查看该脚本支持的选项。
    python3 script.py --help
    可以使用这些选项对凭据进行身份验证并执行网络发现。
    选项 描述
    --host vRealize Network Insight 平台节点 1 的 IP 地址。
    --deployment type 要对其执行此操作的部署类型。接受的值为 onpremsaas

    默认值为 onprem

    --username 平台用户的用户名。
    注: 必须始终将用户名用单引号引起来。
    --password 平台用户的密码。
    注: 必须始终将密码用单引号引起来。
    --domain_type 用于对用户凭据进行身份验证的域类型。接受的值为 LOCALLDAP
    --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 用于下载以前发现的设备的选项。输入 TrueFalse
    --out 成功网络发现的 CSV 输出文件的名称。输出文件的默认名称为 auto_gen_discovered_devices.csv
    --clear_all 用于清除发现的详细信息(例如发现作业、凭据配置文件、作业结果和已发现的设备)的选项。输入 TrueFalse
    --wait_time_in_secs 发现设备的最长等待时间(以秒为单位)。
  7. 使用您在步骤 5 中更新的最新凭据文件运行 Python 脚本。
    在运行 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
    注:

    python 脚本仅发现在收集器网络可访问性范围内的设备。不会发现网络上可用但无法从收集器网络访问的设备。

  8. 查看有关 CLI 的信息以确定操作的状态。
  9. 如果操作完成,请打开 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"
    
  10. (可选) 如果操作失败或超时,您可以清除所发现设备的详细信息并启动新的网络发现操作。使用 --clear_all 命令运行 Python 脚本。例如:
    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 批量添加数据源