运行访客发现

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

概览

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

对于 Migration Center 资产识别客户端 CLI 不支持目录发现的平台上运行的机器(例如在 Azure 上运行的虚拟机或在本地运行的机器),以及对在 VMware 和 AWS 上运行的虚拟机进行全面评估,您可以运行客机发现。客机发现功能使用客机收集脚本收集有关机器的数据,并将这些数据写入客机收集 tar 文件(对于 Linux 机器)或 zip 文件(对于 Windows 机器)。

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

  • 对于在 VMware 上部署的 Linux 和 Windows 虚拟机,mcdc CLI 支持使用 discover vsphere 命令进行远程执行。
  • 对于 mcdc CLI 可访问的 Linux 机器,您可以使用 SSH 和 discover ssh 命令执行远程发现。
  • 对于 mcdc CLI 可访问的 Windows 计算机,您可以使用 discover wmi 命令通过 Windows Management Instrumentation (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 中,根权限不是必需的,但根权限允许 mcdc CLI 收集完成完整评估所需的数据。

如需使用 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 中在线导出和评估这些收集的数据,也可以运行离线评估。

通过 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

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

  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 中在线导出和评估这些收集的数据,也可以运行离线评估。

通过 WMI 远程收集数据

如果您想在支持 WMI 的目标 Windows 计算机上执行客机发现,可以在托管 mcdc CLI 的 Windows 计算机上使用 mcdc discover wmi 命令。只有 Windows 版 mcdc CLI 支持 WMI 收集。

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

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

  3. 下载并导入结果。

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

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

    mcdc.exe discover wmi IP_HOSTNAME
    

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

  4. 出现提示时输入您的凭据。

收集单个 Linux 机器的数据

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

通常,您可以通过指定 sudo 选项来运行该脚本。您可以选择使用运行 mcdc CLI 的用户的权限来运行脚本。但是,该脚本可能无法收集所有必需数据。

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

    sudo ./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 中在线导出和评估这些收集的数据,也可以运行离线评估。

收集单个 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 中在线评估这些数据,也可以运行离线评估。

后续步骤