diff --git a/blair-sync-rustdesk-via-ga.sh b/blair-sync-rustdesk-via-ga.sh index 7302efb..809395f 100644 --- a/blair-sync-rustdesk-via-ga.sh +++ b/blair-sync-rustdesk-via-ga.sh @@ -222,14 +222,25 @@ def guest_file_read(vmid: int, guest_path: str) -> tuple[str | None, str | None] def read_rustdesk_id_cli(vmid: int) -> tuple[str | None, str | None]: - rid, err = guest_exec_text( - vmid, - ['cmd.exe', '/c', f'"{RUSTDESK_EXE}" --get-id'], - timeout=45, - ) - if rid and re.fullmatch(r'\d{6,12}', rid): - return rid, None - return None, err or 'rustdesk --get-id returned no id' + attempts = [ + ([RUSTDESK_EXE, '--get-id'], 'direct'), + (['cmd.exe', '/c', f'"{RUSTDESK_EXE} --get-id"'], 'cmd'), + ( + [ + 'powershell.exe', '-NoProfile', '-NonInteractive', '-Command', + "$ProgressPreference='SilentlyContinue'; & 'C:\\Program Files\\RustDesk\\rustdesk.exe' --get-id", + ], + 'powershell', + ), + ] + errors: list[str] = [] + for command, label in attempts: + rid, err = guest_exec_text(vmid, command, timeout=45) + if rid and re.fullmatch(r'\d{6,12}', rid): + log(f'VM {vmid}: ID {rid} from rustdesk --get-id ({label})') + return rid, None + errors.append(f'{label}: {err or "no id"}') + return None, errors[-1] if errors else 'rustdesk --get-id failed' def read_rustdesk_id_report(vmid: int) -> tuple[str | None, str | None]: @@ -243,7 +254,6 @@ def read_rustdesk_id_report(vmid: int) -> tuple[str | None, str | None]: def read_rustdesk_id(vmid: int) -> tuple[str | None, str | None]: rid, err = read_rustdesk_id_cli(vmid) if rid: - log(f'VM {vmid}: ID {rid} from rustdesk --get-id') return rid, None log(f'VM {vmid}: cli miss: {err}')