검증된 0.1.0 명령 목록을 기준으로 합니다. 실제 기능은 플랫폼과 프로토콜 협상에 따라 달라지므로 설치된 버전도 확인하세요.
관찰·실행·검증
USER, SESSION, OBSERVATION, X, Y는 실제 값으로 바꿔야 합니다. stdin으로 암호를 전달한 뒤 스트림을 닫으세요. --password-stdin은 대화형 암호 창을 열지 않습니다. data.session을 저장하고 before.png를 읽어 좌표를 고른 다음 after.png를 확인하세요. 입력 전송은 작업 완료를 증명하지 않습니다.
rdp-cli connect --host desktop.example.net --user USER --password-stdin
rdp-cli screenshot --session SESSION --out before.png
rdp-cli click --session SESSION --desktop --x X --y Y --observation OBSERVATION
rdp-cli screenshot --session SESSION --out after.png
--version은 버전과 기능, --help-json은 기계가 읽을 수 있는 목록을 반환합니다. COMMAND --help는 세션을 시작하지 않고 전체 옵션을 설명합니다.
rdp-cli --version
rdp-cli --help-json
rdp-cli connect --help
JSON 및 공통 옵션
일반 명령은 stdout에 UTF-8 JSON 객체 하나를 반환합니다. 성공은 ok: true와 data, 실패는 ok: false와 error입니다. stderr는 진단용입니다. 종료 코드는 성공 0, 실행 실패 1, 잘못된 인수 2입니다.
도움말은 일반 텍스트입니다. events --follow는 NDJSON을 스트리밍하며 일반 events는 data.events와 data.ndjson을 담은 단일 JSON 결과를 반환합니다. PowerShell 5.1에서 비ASCII 텍스트를 처리하려면 [Console]::OutputEncoding과 $OutputEncoding을 UTF-8로 설정하세요.
data.session- connect가 반환한 세션 ID를 다음 명령에 사용합니다.
data.observation- 캡처의 관찰 토큰입니다. 재연결, 제어권 또는 화면 배치 변경 후 다시 캡처합니다.
data.capabilities- 파일, 오디오, 클립보드, 화면 작업 전에 협상된 기능을 확인합니다.
data.state / data.remote_outcome- queued, sent, partial, unknown, cancelled, failed는 입력 진행 상태입니다. remote_outcome: not_confirmed는 결과 확인이 필요합니다.
data.transfer_id- files status 또는 files cancel에 전달합니다. 최종 상태를 기다리고 완료 파일의 해시를 확인합니다.
error.code / error.message / error.retryable- 안정적인 오류 코드로 판단합니다. 메시지와 retryable은 참고 정보이며 무조건 재시도하라는 뜻이 아닙니다.
모든 명령은 --request-id와 --timeout-ms를 지원합니다. 보관 기간 안에서 동일한 명령과 인수를 다시 보낼 때만 ID를 재사용하세요. 로컬 시간 초과가 미전송을 뜻하지는 않습니다. 먼저 operations status를 조회하세요.
--request-id ID · --timeout-ms MILLISECONDS 세션
connect는 --host, RDP에서는 --user도 필요합니다. 기본 포트는 RDP 3389, VNC 5900입니다. 암호 인증이 필요한 연결은 --password, --password-stdin, --credential-ref 중 하나를 선택합니다. --vnc-security none을 쓰는 VNC 연결에는 암호 소스를 지정하지 않습니다. --domain은 RDP용이며 --size와 --layout은 함께 사용할 수 없습니다. --connect-timeout-ms는 연결 제한 시간입니다. reconnect는 일시 정지를 유지하며 disconnect는 원격 사용자를 로그오프하지 않습니다.
rdp-cli connect#
지속적인 RDP/VNC 세션 생성 및 연결
세션 인수가 필요 없습니다.
rdp-cli connect --help
rdp-cli list#
접근 가능한 세션 목록
세션 인수가 필요 없습니다.
rdp-cli list --help
rdp-cli status#
세션 상태 조회
--session SESSION이 필요합니다.
rdp-cli status --help
rdp-cli reconnect#
재연결 후 일시 정지 유지
--session SESSION이 필요합니다.
rdp-cli reconnect --help
rdp-cli disconnect#
로그오프 없이 연결 종료
--session SESSION이 필요합니다.
rdp-cli disconnect --help
뷰어와 데스크톱 상태
watch는 사람을 위한 읽기 전용 뷰어를 엽니다. --viewer는 window 또는 web입니다. Agent 명령에는 뷰어가 필요하지 않습니다. presence show/hide는 로컬 상태 표시, --floating은 떠 있는 제어, --panel은 macOS 또는 Linux 세션 패널용입니다. 관찰 뷰어를 닫아도 연결은 유지됩니다.
rdp-cli watch#
사람을 위한 뷰어 열기
--session SESSION이 필요합니다.
rdp-cli watch --help
rdp-cli presence show#
데스크톱 상태 표시
세션 인수가 필요 없습니다.
rdp-cli presence show --help
rdp-cli presence hide#
연결 유지하며 상태 숨기기
세션 인수가 필요 없습니다.
rdp-cli presence hide --help
제어와 인계
pause는 --session 또는 --all을 지정하고 사람의 제어권도 회수합니다. resume는 Agent에 돌려줍니다. control take는 연결된 viewer ID가 필요하며 release는 뷰어 또는 대상 Agent를 지정할 수 있습니다. 사람의 일시 정지를 존중하고 반환 후 다시 캡처하세요.
rdp-cli pause#
입력 일시 정지 및 사람 제어권 회수
--session SESSION 또는 --all 중 하나만 지정합니다.
rdp-cli pause --help
rdp-cli resume#
세션을 Agent에 반환
--session SESSION이 필요합니다.
rdp-cli resume --help
rdp-cli control take#
연결된 뷰어에 제어권 전달
--session SESSION이 필요합니다.
rdp-cli control take --help
rdp-cli control release#
제어권을 Agent에 반환
--session SESSION이 필요합니다.
rdp-cli control release --help
파일
--path는 세션 교환 드라이브 기준이며 임의의 원격 디스크 경로가 아닙니다. --local은 클라이언트 파일/폴더입니다. 덮어쓰기는 --overwrite가 필요합니다. upload/download는 전송 ID, status는 ID 생략 시 목록을 반환합니다. cancel 후 완료 파일이 남을 수 있습니다. cleanup은 선택 내용을 삭제하며 사용 중이면 FILE_BUSY를 반환합니다.
rdp-cli files list#
교환 드라이브 목록
--session SESSION이 필요합니다.
rdp-cli files list --help
rdp-cli files upload#
파일 또는 폴더 업로드
--session SESSION이 필요합니다.
rdp-cli files upload --help
rdp-cli files download#
파일 또는 폴더 다운로드
--session SESSION이 필요합니다.
rdp-cli files download --help
rdp-cli files status#
전송 상태 조회
--session SESSION이 필요합니다.
rdp-cli files status --help
rdp-cli files cancel#
전송 취소
--session SESSION이 필요합니다.
rdp-cli files cancel --help
rdp-cli files cleanup#
교환 내용 삭제
--session SESSION이 필요합니다.
rdp-cli files cleanup --help
소리와 마이크
audio status는 기능을 조회합니다. mute/volume은 --viewer-id에 적용하며 on/off 또는 양의 --percent를 사용합니다. audio microphone은 조회/중지만 가능합니다. 시작하려면 제어권을 가진 사람이 승인된 뷰어에서 명시적으로 켜야 합니다.
rdp-cli audio status#
오디오 기능과 소스 조회
--session SESSION이 필요합니다.
rdp-cli audio status --help
rdp-cli audio mute#
뷰어 음소거 또는 해제
--session SESSION이 필요합니다.
rdp-cli audio mute --help
rdp-cli audio volume#
뷰어 재생 음량 설정
--session SESSION이 필요합니다.
rdp-cli audio volume --help
rdp-cli audio microphone#
마이크 조회 또는 중지
--session SESSION이 필요합니다.
rdp-cli audio microphone --help
디스플레이
monitors는 화면 구성을 반환합니다. monitors set은 JSON 또는 @file을 받으며 --allow-reconnect는 동적 변경이 불가능할 때 재연결을 허용합니다. 변경 후 구성을 읽고 다시 캡처하세요. VNC는 프레임버퍼를 보고하지만 요청에 의한 배치 변경은 거부합니다.
rdp-cli monitors#
협상된 화면 구성 조회
--session SESSION이 필요합니다.
rdp-cli monitors --help
rdp-cli monitors set#
화면 배치 변경
--session SESSION이 필요합니다.
rdp-cli monitors set --help
웹 접근
web start는 수신 주소와 TLS 인증서/키 또는 신뢰할 프록시를 설정합니다. --ice-server는 반복할 수 있습니다. 루프백 외 접근에는 LAN/VPN, HTTPS, 권한이 필요합니다. access grant는 --permission과 초 단위 --expires-in을 지정합니다. 권한은 session.observe/control, clipboard.read/write, files.read/write, audio.listen/send입니다. 취소 시 해당 스트림도 종료됩니다.
rdp-cli web start#
인증된 웹 서비스 시작
세션 인수가 필요 없습니다.
rdp-cli web start --help
rdp-cli web status#
웹 서비스 상태 조회
세션 인수가 필요 없습니다.
rdp-cli web status --help
rdp-cli web stop#
세션 유지하며 웹 중지
세션 인수가 필요 없습니다.
rdp-cli web stop --help
rdp-cli access grant#
범위가 제한된 웹 권한 생성
--session SESSION이 필요합니다.
rdp-cli access grant --help
rdp-cli access list#
웹 권한 목록
--session SESSION이 필요합니다.
rdp-cli access list --help
rdp-cli access revoke#
권한과 스트림 취소
--session SESSION이 필요합니다.
rdp-cli access revoke --help
작업과 이벤트
operations status는 operation ID 또는 원래 request ID로 조회하며 입력을 다시 보내지 않습니다. events는 이벤트를 읽고 --follow는 계속 구독, --after는 커서부터 재개합니다. sent 이후에도 원격 앱의 결과를 확인하세요.
rdp-cli operations status#
보관된 작업 결과 조회
--session SESSION이 필요합니다.
rdp-cli operations status --help
rdp-cli events#
이벤트 읽기 또는 구독
--session SESSION이 필요합니다.
rdp-cli events --help
신뢰·자격 증명·설치
trust는 strict 모드에서 정확한 RDP 대상과 지문을 연결합니다. credentials remove는 지정한 제품 자격 증명만 삭제합니다. macOS와 Linux의 install-cli/uninstall-cli는 CLI 진입점을 관리하며 --prefix로 위치를 고릅니다. Windows는 내려받은 실행 파일을 사용합니다. presence show --panel은 macOS와 Linux에서 세션 패널을 엽니다. 명령 목록은 공개된 macOS 0.1.0 CLI로 검증했고 Linux 차이는 공개된 Linux 구현과 대조했습니다. licenses는 타사 버전과 라이선스를 표시합니다.
rdp-cli trust list#
RDP 인증서 신뢰 기록 목록
세션 인수가 필요 없습니다.
rdp-cli trust list --help
rdp-cli trust add#
특정 대상 지문 신뢰
세션 인수가 필요 없습니다.
rdp-cli trust add --help
rdp-cli trust remove#
신뢰 기록 삭제
세션 인수가 필요 없습니다.
rdp-cli trust remove --help
rdp-cli credentials remove#
제품 자격 증명 삭제
세션 인수가 필요 없습니다.
rdp-cli credentials remove --help
rdp-cli install-cli#
macOS 또는 Linux CLI 진입점 설치
세션 인수가 필요 없습니다.
rdp-cli install-cli --help
rdp-cli uninstall-cli#
생성된 CLI 진입점 제거
세션 인수가 필요 없습니다.
rdp-cli uninstall-cli --help
rdp-cli licenses#
타사 버전과 라이선스 표시
세션 인수가 필요 없습니다.
rdp-cli licenses --help
프로토콜과 플랫폼 조건
- RDP 기본값은 --cert-policy ignore와 --tls-profile modern입니다. strict는 신뢰와 이름을 확인하며 legacy는 오래된 TLS를 명시적으로 허용합니다. 웹 HTTPS 검증에는 영향을 주지 않습니다.
- VNC는 --user, --domain, --size, --layout, --cert-policy, --tls-profile을 거부합니다. 고전 인증은 암호의 첫 8 UTF-8 바이트를 사용합니다. 인증 없는 연결은 --vnc-security none과 암호 생략이 필요합니다. 지원되는 VNC 전송은 암호화되지 않습니다.
- VNC는 파일, 소리, 마이크, 능동적 화면 배치 변경을 제공하지 않습니다. UTF-8 클립보드는 협상이 필요하며 그렇지 않으면 Latin-1만 허용합니다.
- RDP 파일에는 드라이브 리디렉션이 필요합니다. 오디오, 클립보드, 마이크, 다중 화면도 서버 정책에 따라 달라집니다.
- Windows/macOS는 기본 뷰어와 상태 표시를 제공합니다. Linux는 화면/오디오 서비스, 자격 증명 저장에는 Secret Service가 필요합니다. 데스크톱 없는 호스트에서도 지원 CLI 작업은 가능합니다.
- Unicode 입력은 호환성을 위해 간격을 두고 전송합니다. 긴 텍스트는 제한 시간을 조정하고 결과를 확인하세요. 뷰어를 열어도 모든 서버의 모든 문자를 보장하지 않습니다.
오류 복구
OBSERVATION_REQUIRED / INVALID_COORDINATES- 다시 캡처하고 화면 구성과 좌표를 확인하세요.
SESSION_PAUSED / CONTROL_HELD_BY_HUMAN- 입력을 멈추고 사람이 Agent에 명시적으로 돌려줄 때까지 기다리세요.
AUTH_FAILED / VNC_AUTH_FAILED- 계정, 암호 전달 방식과 서버 인증 정책을 확인하세요.
RDP_TLS_HANDSHAKE_FAILED / CERTIFICATE_UNTRUSTED- TLS, 인증서 정책과 지문을 확인하세요. TLS 오류가 잘못된 암호를 뜻하지는 않습니다.
CAPABILITY_UNAVAILABLE / CLIPBOARD_ENCODING_UNSUPPORTED- 협상 기능 또는 인코딩을 확인하고 지원 작업을 선택하세요.
REQUEST_TIMEOUT / REQUEST_ID_CONFLICT / REQUEST_WINDOW_EXPIRED- 재시도 전에 작업과 화면을 조회하세요. 다른 인수나 보관 만료 후 같은 ID의 중복 방지를 기대하지 마세요.