執行訪客探索

本文說明執行 mcdc CLI 提供的不同訪客探索方法的步驟。

總覽

您可以使用訪客探索功能掃描及收集機器上執行應用程式的資料,包括虛擬機器 (VM) 執行個體和實體伺服器。也會收集機器設定、硬體、網路、已開啟的檔案、服務和程序的相關資料。

如果機器執行的平台不支援 Migration Center 用戶資產評估器 CLI 的資產探索功能 (例如在 Azure 上執行的 VM 或在內部部署的機器),以及針對在 VMware 和 AWS 上執行的 VM 進行完整評估,您可以執行訪客探索。訪客探索功能會使用訪客收集指令碼收集機器相關資料,並將資料寫入 Linux 機器的訪客收集 tar 檔案,或 Windows 機器的 zip 檔案。

主機代管 mcdc CLI 會將指令碼上傳至目標機器,然後執行並下載結果。您可以在目標機器上本機執行指令碼,或遠端執行指令碼。視基礎架構而定,您可以選擇以下列方式使用 mcdc CLI:

  • 針對在 VMware 上部署的 Linux 和 Windows VM,mcdc CLI 支援使用 discover vsphere 指令進行遠端執行。
  • 對於 mcdc CLI 可存取的 Linux 機器,您可以使用 discover ssh 指令,透過 SSH 執行遠端探索作業。
  • 如果 mcdc CLI 可存取 Windows 機器,您可以使用 discover wmi 指令,透過 Windows Management Instrumentation (WMI) 執行遠端探索作業。
  • 如果 Linux 和 Windows 機器未連線至 mcdc CLI,您可以在本機下載及執行客體收集指令碼,然後手動將所收集的資料匯入代管 mcdc CLI 的機器。

客體收集指令碼會執行一系列指令,收集來源機器的相關資訊,並從機器上的多個檔案收集資訊。

事前準備

  1. 詳閱下載及執行 mcdc CLI 的需求條件
  2. 請詳閱下載及執行訪客收集指令碼的相關規定
  3. 完成下載 mcdc CLI 的步驟。

使用 VMware 工具遠端收集資料

對於在 vSphere 上代管的 VM,mcdc CLI 可使用 VMware 工具,在 Linux 和 Windows VM 上遠端部署及執行收集指令碼。使用 VMware 工具時,mcdc CLI 工具會執行以下操作:

  • 將收集指令碼上傳至 VM。
  • 在 VM 上執行指令碼。
  • 下載並匯入結果。

如要遠端收集資料,您需要兩組憑證:

  • 傳遞至 mcdc CLI 的 vCenter 伺服器使用者名稱,用於連線至 vSphere,該使用者必須在 VM 上具備下列權限:
    • 訪客作業修改
    • 訪客作業程式執行
    • 訪客作業查詢
  • VM 的使用者憑證:
    • 在 Windows 上,您必須具備管理員權限。
    • 在 Linux 上,您不需要取得 root 存取權,但取得 root 存取權可讓 mcdc CLI 收集完整評估所需的資料。

如要使用 VMware 工具收集資料,請按照下列步驟操作:

  1. 登入代管 mcdc CLI 的 Linux VM。
  2. 切換至下載 mcdc CLI 的目錄。
  3. 確認 VM 已開機。
  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 使用者
    • VM_ID:VM 或 MOREF 的名稱
  5. 在系統提示時,輸入 VCENTER_USERVM_USER 的密碼。

如要使用 VMware 工具同時從多個 vSphere VM 收集資料,請按照下列步驟操作:

  1. 登入代管 mcdc CLI 的 Linux VM。
  2. 切換至下載 mcdc CLI 的目錄。
  3. 確認所有 VM 都已開機。
  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 VM,也可以使用 --max-parallelism 旗標變更平行處理的層級。

  5. 按照系統提示輸入 VCENTER_USERVM_USER 的密碼。

  6. 您也可以使用 --path 標記,將探索範圍限定為特定 VM,如「執行清單探索」一文中針對 VMware 所述。

您可以在遷移中心中匯出並評估這些收集到的資料,也可以執行離線評估。

透過 SSH 從遠端收集資料

如果託管 mcdc CLI 的機器具有 SSH 存取權,可連線至目標 Linux 機器 (不支援 Windows 機器),mcdc CLI 就能透過 SSH 連線至目標機器,收集資料。

使用 SSH 時,mcdc CLI 會執行以下操作:

  1. 將收集指令碼上傳至機器。
  2. 在機器上執行指令碼,並將機器使用者憑證傳遞至 mcdc CLI。

  3. 下載並匯入結果。

支援的 SSH 模式

如果您在 Linux 機器上使用 mcdc CLI,可以使用兩種模式執行 SSH:

  • 預設:使用 ssh CLI 機器上的 ssh 二進位檔和設定。mcdc預設模式可使用本機 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 Proxy:

    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

您可以在遷移中心中匯出並評估這些收集到的資料,也可以執行離線評估。

透過 WMI 從遠端收集資料

如果您想在支援 WMI 的目標 Windows 機器上執行來賓探索,可以在代管 mcdc CLI 的 Windows 機器上使用 mcdc discover wmi 指令。只有 mcdc CLI 的 Windows 版本支援 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 檔案的路徑。

您可以在遷移中心中匯出並評估這些收集到的資料,也可以執行離線評估。

收集個別 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 檔案的路徑。

您可以匯出收集到的資料,並在遷移中心線上評估,或執行離線評估。

後續步驟