(ip: string)
| 49 | * the reconnecting tunnel and a health poll confirm recovery. |
| 50 | */ |
| 51 | export const sshRebootGuest = async (ip: string): Promise<void> => { |
| 52 | await execFileP(SSHPASS, [ |
| 53 | "-p", |
| 54 | GUEST_PASS, |
| 55 | "ssh", |
| 56 | ...SSH_OPTS, |
| 57 | `${GUEST_USER}@${ip}`, |
| 58 | "sudo reboot", |
| 59 | ]).catch(() => undefined); // the connection drops mid-call |
| 60 | }; |
| 61 | |
| 62 | const baseImage = (os: "macos" | "linux"): string => |
| 63 | os === "macos" |