运行客机发现

本文档介绍了运行 mcdc CLI 提供的不同 guest 发现方法的步骤。

借助客机发现功能,您可以扫描并收集有关机器上正在运行的应用的数据,包括虚拟机 (VM) 实例和物理服务器。它还会收集有关机器配置、硬件、网络以及打开的文件、服务和进程的数据。

对于在 Migration Center 资产识别客户端 CLI 不支持清单发现的平台(例如在本地运行的机器)上运行的机器,以及对于在 VMware、AWS 和 Azure 上运行的虚拟机的完整评估,您可以运行客机发现。客机发现功能使用客机收集脚本来收集有关机器的数据,并将该数据写入客机收集 tar 文件(适用于 Linux 机器)或 ZIP 文件(适用于 Windows 机器)。

托管 mcdc CLI 的机器会将脚本上传到目标机器,运行该脚本,然后下载结果。您可以在目标机器上本地运行脚本,也可以远程运行脚本。您可以根据自己的基础架构,选择通过以下方式使用 mcdc CLI:

  • 对于在 VMware 上部署的 Linux 和 Windows 虚拟机,mcdc CLI 支持使用 discover vsphere 命令远程执行。
  • 对于可通过 mcdc CLI 访问的 Linux 机器,您可以使用 SSH 通过 discover ssh 命令执行远程发现。
  • 对于可通过 mcdc CLI 访问的 Windows 机器,您可以使用 Windows Management Instrumentation (WMI) 通过 discover wmi 命令执行远程发现。
  • 对于未连接到 mcdc CLI 的 Linux 和 Windows 机器,您可以下载并运行本地访客收集脚本,然后手动将收集的数据导入到托管 mcdc CLI 的机器。

客户端收集脚本会运行一系列命令来收集有关源计算机的信息,还可能会收集潜在的敏感数据,例如命令行参数、网络信息或正在运行的进程中的环境变量和参数。

准备工作

  1. 查看下载和运行 mcdc CLI 的要求
  2. 查看下载和运行客机收集脚本的要求
  3. 完成下载 mcdc CLI 的步骤。

使用 VMware 工具远程收集数据

对于托管在 vSphere 上的虚拟机,mcdc CLI 可以使用 VMware 工具在 Linux 和 Windows 虚拟机上远程部署和运行收集脚本。使用 VMware 工具时,mcdc CLI 工具会执行以下操作:

  • 将收集脚本上传到虚拟机。
  • 在虚拟机上运行脚本。
  • 下载并导入结果。

需要使用两组凭据才能远程收集数据:

  • 传递给 mcdc CLI 以连接到 vSphere 的 vCenter 服务器用户名,必须在虚拟机中具有以下权限:
    • 客机操作修改
    • 客机操作程序执行
    • 客机操作查询
  • 虚拟机的用户凭据:
    • 在 Windows 中,您必须拥有管理员权限。
    • 在 Linux 上,您可以使用 root 凭据或非 root 凭据。如需了解详情,请参阅 Linux 上的客户机发现

如需使用 VMware 工具收集数据,请按照以下步骤操作:

  1. 登录托管 mcdc CLI 的 Linux 虚拟机。
  2. 切换到您下载 mcdc CLI 的目录。
  3. 确保虚拟机已开机。
  4. 运行客机发现:

    Linux

    ./mcdc discover vsphere guest --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER VM_ID

    Windows

    mcdc.exe discover vsphere guest --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER VM_ID

    替换以下内容:

    • VCENTER_USER:vCenter 服务器用户
    • VM_USER:虚拟机用户
    • VM_ID:虚拟机的名称或 MOREF
  5. 系统提示时,输入 VCENTER_USERVM_USER 的密码。

如需使用 VMware 工具同时从多个 vSphere 虚拟机收集数据,请按照以下步骤操作:

  1. 登录托管 mcdc CLI 的 Linux 虚拟机。
  2. 切换到您下载 mcdc CLI 的目录。
  3. 确保所有虚拟机都已开启。
  4. 运行客机发现:

    Linux

    ./mcdc discover vsphere guest all --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER --timeout TIMEOUT_IN_SECONDS

    Windows

    mcdc.exe discover vsphere guest all --url https://VSPHERE_URL -u VCENTER_USER --vm-user VM_USER --timeout TIMEOUT_IN_SECONDS

    TIMEOUT_IN_SECONDS 替换为超时时间(以秒为单位)。

    您可以选择使用 --os-family 标志将发现范围限制为仅 Windows 或 Linux 虚拟机,也可以使用 --max-parallelism 标志更改并行级别。

  5. 当系统提示时,输入 VCENTER_USERVM_USER 的密码。

  6. 您还可以使用 --path 标志将发现范围限定为特定虚拟机,如 运行资产清点发现中针对 VMware 所述。

您可以在 Migration Center 中在线导出和评估这些收集的数据,也可以运行离线评估。

Linux 上的访客发现

如果您以 root 访问权限(例如,通过使用 sudo)运行客户机发现,mcdc CLI 会从您的机器收集比使用非根用户凭据运行客户机发现时更多的数据。

下表比较了访客发现脚本根据权限级别收集的数据。

点击可查看收集的数据

类别 数据 非 root 访问权限 根访问权限
硬件 产品序列号 已跳过:
需要 root 访问权限。
收集时间:
,收集自/sys/class/dmi/id/product_serial
网络 进程到端口的映射 部分:
系统会收集连接信息,但不会收集其他用户进程的 PID/程序名称。
完整:
所有监听端口和连接都映射到各自的 PID 和程序名称。
中间件 JBoss / Tomcat 内部结构 有限:
仅可访问当前用户进程的环境、描述符和限制。
完整:从 /proc/[PID] 读取所有中间件实例的进程数据(environfdlimits)。
存储 屏蔽设备和装载点 完整:用户可访问的
标准工具,例如 lsblkdf
完整:
块设备详细信息和系统装载。
配置 受限的系统文件 部分:
不从文件(例如 /etc/exports)和某些可能无法读取的 Apache 配置中收集信息(具体取决于权限)。
完整:
root 会绕过所有文件权限限制,以收集所需的配置文件。
安全 SELinux 状态 受限:
不收集详细的配置详情。
完整:从 sestatus 工具收集完整的输出。
库存 已安装的软件包 完整:所有用户都可以访问
标准软件包管理系统(dpkgrpm)。
完整:
收集所有已安装的系统软件包的完整列表。

通过 SSH 远程收集数据

如果托管 mcdc CLI 的机器对目标 Linux 机器具有 SSH 访问权限(不支持 Windows 机器),则 mcdc CLI 可以通过 SSH 连接到目标机器来收集数据。

使用 SSH 时,mcdc CLI 会执行以下操作:

  1. 将收集脚本上传到机器。
  2. 使用传递给 mcdc CLI 的机器用户凭据在机器上运行脚本。

  3. 下载并导入结果。

支持的 SSH 模式

如果您在 Linux 机器上使用 mcdc CLI,则可以使用两种模式运行 SSH:

  • 默认:使用 mcdc CLI 机器上的 ssh 二进制文件和配置。默认模式默认使用本地 SSH 配置文件,例如托管它的工作站的 ~/.ssh/config~/.ssh/known_hosts

    在提示时输入密码,或使用 sshpass 在命令行中传递密码或私钥文件口令。例如:

    sshpass -p password mcdc discover ssh IP_ADDRESS
    

    IP_ADDRESS 替换为机器的 IP 地址。

  • 嵌入式:使用内置的 SSH 库。如果您的环境中的默认模式出现故障,此模式允许您使用嵌入式 SSH 客户端。不过,默认情况下,它不会使用本地 SSH 配置文件。您可以使用 -i 标志指定 SSH 私钥文件。

如果您在 Windows 机器上使用 mcdc CLI,则仅支持嵌入式模式。

运行集合

如需通过 SSH 收集数据,请按以下步骤操作:

  1. 登录托管 mcdc CLI 的 Linux 机器。
  2. 切换到您下载 mcdc CLI 的目录。
  3. 收集数据。

    Linux

    ./mcdc discover ssh IP_HOSTNAME

    Windows

    mcdc.exe discover ssh IP_HOSTNAME

    如需发现和收集数据库资产,请使用 --db-engine 标志:

    Linux

    ./mcdc discover ssh IP_HOSTNAME --db-engine=DB_ENGINE

    Windows

    mcdc.exe discover ssh IP_HOSTNAME --db-engine=DB_ENGINE

    替换以下内容:

    • IP_HOSTNAME:机器的 IP 主机名。
    • DB_ENGINE:要收集的数据库引擎。支持的值为 sqlservermysqlpostgresql
  4. 调用 mcdc CLI 的用户的 SSH 私钥文件将用于 SSH 身份验证。

    出现提示时,输入 Linux 机器上账号的用户名。收集脚本会使用这些凭据运行。如果调用 mcdc CLI 的用户的 SSH 私钥未能通过用户名向机器进行身份验证,系统还会提示您输入密码。

使用 SSH 时的其他场景

在以下情况下,您可能需要修改命令:

  • 如需使用默认模式指定机器用户,请使用 -u 标志:

    Linux

    ./mcdc discover ssh -u USER IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -u USER IP_HOSTNAME

    USER 替换为机器用户。

    出现提示时,输入用户的密码。

  • 如需指定详细模式,请使用 -v 标志:

    Linux

    ./mcdc discover ssh -u USER -v IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -u USER -v IP_HOSTNAME

  • 如需指定 SSH 私钥文件,请使用 -i 标志。例如,如需指定 .ssh/my_private_key,请运行以下命令:

    Linux

    ./mcdc discover ssh -i ~/.ssh/my_private_key -u USER IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -i ~/.ssh/my_private_key -u USER IP_HOSTNAME

  • 如需在命令行中指定密码,请使用嵌入式模式:

    Linux

    ./mcdc discover ssh --ssh-client embedded -u USER --passphrase PASSWORD IP_HOSTNAME

    Windows

    mcdc.exe discover ssh --ssh-client embedded -u USER --passphrase PASSWORD IP_HOSTNAME

    由于命令的嵌入式模式默认情况下不使用本地 SSH 配置文件,因此请确保您在命令中指定的用户能够通过 SSH 访问相应机器,并且有权在该机器上执行收集脚本。

  • 如需在嵌入模式下指定 SSH 私钥文件,请使用 -i 标志:

    Linux

    ./mcdc discover ssh --ssh-client embedded -i ~/.ssh/id_rsa -u USER --password PASSWORD IP_HOSTNAME

    Windows

    mcdc.exe discover ssh --ssh-client embedded -i ~/.ssh/id_rsa -u USER --password PASSWORD IP_HOSTNAME

  • 借助 mcdc CLI 命令,您可以指定大多数 SSH 标志。然后,使用 -a--ssh-args 标志将这些标志传递给 ssh 命令。例如,要使用 socks 代理,请运行以下命令:

    Linux

    ./mcdc discover ssh -u USER -a '-o' -a 'ProxyCommand=nc -X 5 -x 127.0.0.1:proxy port %h %p' IP_HOSTNAME

    Windows

    mcdc.exe discover ssh -u USER -a '-o' -a 'ProxyCommand=nc -X 5 -x 127.0.0.1:proxy port %h %p' IP_HOSTNAME

您可以在 Migration Center 中在线导出和评估这些收集的数据,也可以运行离线评估。

收集单个 Linux 机器的数据

如需在 Linux 机器上本地执行访客收集,您可以运行 mcdc-linux-collect.sh 脚本。然后,您可以将脚本生成的 tar 文件复制到托管 mcdc CLI 的机器中,并使用 discover import 命令导入该文件。

如果您想从 Linux 机器中收集所有可能的数据,请使用 sudo 以 root 访问权限运行脚本。如果您以用户权限运行 mcdc CLI,则该工具会收集更有限的数据集。如需了解详情,请参阅 Linux 上的来宾发现

  1. 登录您的设备。
  2. 切换到下载客机收集脚本的目录。
  3. 在机器上运行收集脚本:

    • 如需使用 root 访问权限运行,请执行以下操作:

      sudo ./mcdc-linux-collect.sh
      
    • 在没有 root 访问权限的情况下运行:

      ./mcdc-linux-collect.sh
      

    该脚本会将名为 mcdc-collect-MACHINE_NAME-TIMESTAMP.tar 的 tar 文件输出到当前目录。时间戳的格式为 YYYY-MM-DD-hh-mm

    点击即可查看访客收集 tar 文件格式

    tar 文件采用以下格式:

    collect.log # Log output of the script
     files # Directory containing files with their full path from root. For example:
       |- etc/fstab
       |- etc/hostname
       |- etc/network/interfaces
       |- ...
     commands # Output of commands run by the script:
       |- dpkg
       |- netstat
       |- ps
       |- ...
     found_paths # Text file with the list of installation directories
     machinename # Text file with machine name
     ostype # Text file with operating system type (Linux)
     timestamp # Text file with collection timestamp
     version # Text file with the version of the script
     

    您可以选择传递实参 --output,并指定要将 tar 文件保存到的路径。

  4. 将收集的数据从目标机器复制到宿主机。

  5. 在宿主机上导入收集的数据:

    Linux

    ./mcdc discover import PATH_TO_TAR

    Windows

    mcdc.exe discover import PATH_TO_TAR

    PATH_TO_TAR 替换为 tar 文件的路径。

您可以在 Migration Center 中在线导出和评估这些收集的数据,也可以运行离线评估。

通过 WMI 远程收集数据

如果您想在支持 WMI 的目标 Windows 机器上执行 guest 发现,可以在托管 mcdc CLI 的 Windows 机器上使用 mcdc discover wmi 命令。WMI 收集仅在 Windows 版本的 mcdc CLI 上受支持。

默认情况下,mcdc CLI 通过远程 WMI 调用来收集数据,这比基于脚本的收集更快。不过,Windows Server 2008 及更早版本不支持远程 WMI 调用。如果您需要从较早的 Windows 版本收集数据,或者在使用 WMI 远程调用时遇到问题,可以添加 --script 标志,改为使用基于脚本的收集。

使用 WMI 时,mcdc CLI 会执行以下操作:

  1. 将收集脚本上传到机器。
  2. 使用传递给 mcdc CLI 的机器用户凭据在机器上运行脚本。

  3. 下载结果并将其导入到 Migration Center。

如需通过 WMI 收集数据,请按以下步骤操作:

  1. 登录托管 mcdc CLI 的 Windows 机器。
  2. 切换到您下载 mcdc CLI 的目录。
  3. 使用以下方法之一收集数据:

    • 如需通过远程 WMI 调用收集数据,请运行以下命令:

      mcdc.exe discover wmi IP_HOSTNAME
      

      IP_HOSTNAME 替换为机器的 IP 主机名。

    • 如需使用基于脚本的收集方式来收集数据,请使用 --script 标志:

      mcdc.exe discover wmi --script IP_HOSTNAME
      
  4. 出现提示时,输入您的凭据。

您可以在 Migration Center 中在线导出和评估这些收集的数据,也可以运行离线评估。

收集单个 Windows 机器的数据

如需在 Windows 机器上本地执行客机收集,您可以运行 mcdc-windows-collect.ps1 脚本。然后,您可以将脚本生成的 ZIP 文件复制到托管 mcdc CLI 的机器中,并使用 discover import 命令导入该文件。

  1. 登录您的设备。
  2. 使用以管理员身份运行选项打开 PowerShell。
  3. 切换到您下载 mcdc CLI 的目录。
  4. 在机器上运行收集脚本:

    powershell -ExecutionPolicy ByPass -File .\mcdc-windows-collect.ps1
    
  5. 该脚本会将名为 mcdc-collect-MACHINE_NAME-TIMESTAMP.zip 的 zip 文件输出到当前目录。

    (可选)您可以添加输出路径来指定其他位置:

    .\mcdc-windows-collect.ps1 PATH_FOR_OUTPUT.zip
    
  6. 在宿主机上导入收集的数据:

    Linux

    ./mcdc discover import PATH_TO_TAR

    Windows

    mcdc.exe discover import PATH_TO_TAR

    PATH_TO_TAR 替换为 tar 文件的路径。

您可以导出收集的数据,然后在 Migration Center 中在线评估这些数据,也可以运行离线评估。

后续步骤