SECURE PIPES 2 사용자 가이드

스크린샷은 영어 화면을 사용하며 다이어그램은 가이드 언어를 따릅니다. 앱에서 선택한 언어에 따라 컨트롤 이름이 다를 수 있습니다.

spcli — 명령어 참조

Mac 앱 자동화 화면과 같은 명령 설명 및 복사 가능한 예제입니다. 기존 명령과 2.0.17에서 추가된 명령을 포함합니다.

spcli 명령어 참조

Mac 앱 내장 자료에서 명령별 설명과 전체 스크립트를 동기화합니다. 실행 전에 예제 이름과 ID를 바꾸세요. 실제 연결과 설정을 변경할 수 있으므로 전체 페이지를 한 번에 실행하지 마세요.

원격 데스크톱

spcli list remote-desktops --json

저장된 RDP/VNC 연결을 나열합니다.

spcli list remote-desktops --json

spcli get-remote-desktop "<ID>"

ID로 연결을 읽습니다. 자격 증명은 반환하지 않습니다.

spcli get-remote-desktop "DESKTOP-ID"

spcli create-remote-desktop <JSON>

name과 values로 연결을 생성합니다. 사전 설정 호스트는 hostProfileUUID로 지정합니다.

spcli create-remote-desktop '{"name":"Office desktop","values":{"hostProfileUUID":"PRESET-HOST-ID","remoteDesktopType":"rdp","remoteDesktopUsername":"alice","remoteHost":"192.168.1.91"}}'
spcli create-remote-desktop '{"name":"Office VNC","values":{"hostProfileUUID":"PRESET-HOST-ID","remoteDesktopType":"vnc","remoteDesktopVNCOpenMode":"screenSharing"}}'

spcli update-remote-desktop <JSON>

id로 업데이트합니다. name과 values는 선택 사항입니다.

spcli update-remote-desktop '{"id":"DESKTOP-ID","values":{"remoteDesktopOptions":{"screen mode id":1,"audiomode":2}}}'

spcli open-remote-desktop "<ID>"

필요하면 SSH 터널을 시작한 후 설정된 RDP/VNC 클라이언트를 엽니다.

spcli open-remote-desktop "DESKTOP-ID"

spcli delete-remote-desktop "<ID>"

ID로 연결이 끊긴 프로필을 삭제합니다.

spcli delete-remote-desktop "DESKTOP-ID"

사용자 이름을 쓸 수 있지만 저장된 사용자 이름은 반환하지 않습니다. SSH 비밀번호와 인증 파일은 Secure Pipes에서 설정하고 데스크톱 비밀번호는 클라이언트에서 입력하세요.

spcli 정보

spcli는 Secure Pipes에 포함된 명령줄 도구입니다. 터미널에서 Secure Pipes를 직접 제어하므로 셸 스크립트, 별칭, 예약 작업에서 저장된 연결을 시작하거나 중지하거나 확인할 수 있습니다.

spcli는 동일한 AppleScript 명령과 자동화 권한을 사용합니다. 네트워크 공유를 시작하면 기존 확인 창이 열릴 수 있습니다.

spcli 설치

spcli는 Secure Pipes에 포함되어 있지만 설치할 때까지 PATH에 표시되지 않습니다. 설정의 일반 탭에서 백업 아래에 있는 명령줄 도구 행을 사용하세요.

  • 'spcli 설치'를 클릭합니다. Secure Pipes가 spcli를 PATH의 폴더(/usr/local/bin 또는 /opt/homebrew/bin 등)에 링크합니다.

  • 해당 폴더에 권한이 필요하면 한 번만 관리자 승인을 해 주세요.

  • 새 터미널 창을 열고 spcli --help를 실행해 사용 가능한지 확인합니다.

나중에 삭제하려면 같은 행에서 'spcli 제거'를 클릭하세요.

설치 확인

spcli --version
spcli --help

명령어 참조

spcli 다음에 명령을 입력하세요. 연결 이름과 그룹 태그는 따옴표로 묶습니다.

spcli start

창을 표시하지 않고 Secure Pipes를 시작합니다.

spcli start

spcli show

Secure Pipes 창을 표시하고 최전면으로 활성화합니다.

spcli show

spcli hide

연결은 실행한 채로 Secure Pipes 창을 숨깁니다.

spcli hide

spcli shutdown

Secure Pipes를 종료하고 활성 연결을 중지합니다.

spcli shutdown

spcli list connections

구성된 연결을 나열합니다. --json을 추가하면 기계가 읽을 수 있는 형태로 출력됩니다.

spcli list connections

spcli list groups

연결 그룹으로 사용되는 태그를 나열합니다. --json을 추가하면 기계가 읽을 수 있는 형태로 출력됩니다.

spcli list groups

spcli connect "<connection>"

저장된 연결을 시작합니다.

spcli connect "Build Tunnel (Local Forward)"

spcli disconnect "<connection>"

저장된 연결을 중지합니다.

spcli disconnect "Build Tunnel (Local Forward)"

spcli status "<connection>"

연결의 현재 상태를 표시합니다.

spcli status "Build Tunnel (Local Forward)"

spcli connect-group "<group>"

저장된 시작 설정에 따라 그룹을 시작합니다.

spcli connect-group "engineering"

spcli disconnect-group "<group>"

그룹과 구성원 연결을 중지합니다.

spcli disconnect-group "engineering"

spcli list task-plans

자격 증명 없이 계획 목록을 표시합니다.

spcli list task-plans --json

spcli create-task-plan '<JSON>'

JSON으로 검증된 계획을 생성합니다. 연결/그룹 ID를 사용하고 자격 증명을 포함하지 마세요.

spcli create-task-plan '{"id":"work-start","hour":9,"minute":0,"repeat":2,"actions":[{"type":"start_group","id":"work"}]}'

spcli update-task-plan '<JSON>'

기존 ID와 저장할 필드로 계획을 갱신합니다.

spcli update-task-plan '{"id":"work-start","hour":8,"minute":45,"repeat":2,"actions":[{"type":"start_group","id":"work"}]}'

spcli enable-task-plan "<ID>"

저장된 계획을 활성/비활성화하거나 즉시 시험 실행합니다.

spcli enable-task-plan "work-start"
spcli disable-task-plan "work-start"
spcli run-task-plan "work-start"

옵션

--json

지원하는 명령의 결과를 기계가 읽을 수 있는 JSON으로 출력합니다.

--help

전체 사용법을 표시합니다.

--version

spcli 버전을 표시합니다.

종료 코드

0은 성공, 1은 Secure Pipes가 오류를 보고함, 2는 잘못된 사용법, 3은 Secure Pipes를 찾지 못하거나 자동화 권한이 거부됨, 4는 Apple Event를 보내지 못함을 의미합니다.

규칙과 사용 시나리오

규칙을 변경하거나 시나리오를 전환할 때 ID 또는 고유한 이름을 사용하세요. 시나리오를 전환하면 활성 연결을 끊은 뒤 다시 연결합니다. 시나리오를 삭제해도 규칙은 유지되며, 다른 시나리오에 속하지 않은 규칙은 공통 규칙이 됩니다.

spcli list rules

규칙을 순서대로 ID, 이름, 활성화 상태, 동작, 시나리오 ID와 함께 나열합니다.

spcli list rules --json

spcli list scenarios

공통 시나리오를 포함하여 시나리오의 ID, 이름, 사용 상태를 나열합니다.

spcli list scenarios --json

spcli current-scenario

현재 사용 중인 시나리오 이름을 표시합니다.

spcli current-scenario

spcli switch-scenario "Office"

ID 또는 고유 이름으로 시나리오를 전환하고 영향을 받는 연결을 선택한 규칙으로 다시 연결합니다.

spcli switch-scenario "Office"

spcli enable-rule "Work websites"

ID 또는 고유 이름으로 규칙을 활성화합니다.

spcli enable-rule "Work websites"

spcli disable-rule "Work websites"

규칙을 삭제하지 않고 비활성화합니다.

spcli disable-rule "Work websites"

spcli set-rule-scenarios "Work websites" "Office" "Travel"

규칙의 시나리오 지정을 교체합니다. Universal을 지정하면 공통 규칙이 됩니다.

spcli set-rule-scenarios "Work websites" "Office" "Travel"

spcli create-scenario "Travel"

고유한 이름으로 시나리오를 만들고 ID를 반환합니다.

spcli create-scenario "Travel"

spcli rename-scenario "Travel" "Mobile work"

규칙 지정을 유지하면서 시나리오 이름을 변경합니다.

spcli rename-scenario "Travel" "Mobile work"

spcli delete-scenario "Travel"

규칙은 유지하고 시나리오를 삭제합니다. 다른 시나리오에 속하지 않는 규칙은 공통 규칙이 됩니다.

spcli delete-scenario "Travel"

종합 예제

spcli list rules --json
spcli list scenarios --json
spcli current-scenario
spcli switch-scenario "Office"
spcli enable-rule "Work websites"
spcli disable-rule "Work websites"
spcli set-rule-scenarios "Work websites" "Office" "Travel"
spcli set-rule-scenarios "Work websites" Universal
spcli create-scenario "Travel"
spcli rename-scenario "Travel" "Mobile work"
spcli delete-scenario "Mobile work"

프록시 및 네트워크 공유

공유는 저장된 주소, 포트 및 인증 설정을 사용합니다. 필요한 경우 기존 확인 창이 열립니다. 게이트웨이 모드에는 위험 확인과 macOS 승인이 필요합니다.

spcli list proxy-servers

설정된 프록시 서버의 ID, 이름, 유형, 주소를 나열합니다. 인증 정보는 포함하지 않습니다.

spcli list proxy-servers --json

spcli transparent-proxy-status

투명 프록시 실행 상태, 시스템 확장 상태 및 버전 일치 여부를 표시합니다.

spcli transparent-proxy-status --json

spcli initialize-transparent-proxy

시스템 확장을 설치하거나 복구합니다. macOS 승인이 필요할 수 있으며 투명 프록시는 시작하지 않습니다.

spcli initialize-transparent-proxy

spcli start-transparent-proxy

시스템 확장이 준비되면 현재 라우팅 규칙으로 투명 프록시를 시작합니다.

spcli start-transparent-proxy

spcli stop-transparent-proxy

투명 프록시를 중지합니다. 네트워크 공유는 이 서비스에 의존합니다.

spcli stop-transparent-proxy

spcli sharing-status

공유 및 게이트웨이 상태를 표시합니다. 실행 중에는 적용 중인 모드, 중지 중에는 저장된 모드를 표시합니다.

spcli sharing-status --json

spcli set-sharing-modes both

다음 수동 시작에 사용할 프록시, 게이트웨이, 둘 다 또는 끔 모드를 선택합니다. 변경하기 전에 공유를 중지하세요.

spcli set-sharing-modes both

spcli start-sharing

선택한 모드와 저장된 주소, 포트, 인증 설정으로 공유를 시작합니다. 확인이 필요할 수 있습니다.

spcli start-sharing

spcli stop-sharing

게이트웨이와 공유 프록시 리스너를 중지합니다. 투명 프록시는 계속 실행됩니다.

spcli stop-sharing

종합 예제

spcli list proxy-servers --json
spcli transparent-proxy-status --json
spcli initialize-transparent-proxy
spcli start-transparent-proxy
spcli set-sharing-modes both
spcli sharing-status --json
spcli start-sharing
spcli stop-sharing
spcli stop-transparent-proxy

연결, 활동 및 로그

목록에서 반환된 ID로 정확히 조회합니다. 상세 정보는 JSON 텍스트로 반환됩니다.

spcli group-status "engineering"

그룹 결과와 각 구성원의 연결 상태를 확인합니다.

spcli group-status "engineering" --json

spcli connect-and-wait "Build Tunnel" 30

연결이 준비될 때까지 기다립니다. 실패하거나 시간이 초과되면 오류를 반환합니다.

spcli connect-and-wait "Build Tunnel" 30

spcli preview-route

현재 시나리오의 로컬 규칙 일치를 예측합니다. 실제 연결 테스트는 아닙니다.

spcli preview-route example.com 443 com.apple.Safari TCP --json

spcli test-proxy

저장된 프록시를 테스트하고 결과, 이유 및 소요 시간을 반환합니다.

spcli test-proxy "proxy-id" --json

spcli list proxy-flows

프록시 활동을 확인합니다. 공유는 LAN, 둘 다는 ALL을 사용합니다.

spcli list proxy-flows --json

spcli list sharing-flows

네트워크 공유 연결을 확인합니다.

spcli list sharing-flows --json

spcli end-flow

ID로 연결된 흐름 하나를 종료합니다.

spcli end-flow "flow-id"

spcli list logs

민감 정보가 제거된 최근 로그를 최대 200개까지 최신순으로 확인합니다.

spcli list logs --json

spcli log-detail

ID로 최근 로그의 전체 기록을 확인합니다.

spcli log-detail "log-id" --json

터미널 예제

spcli를 일반 셸 도구와 조합해 작업 흐름을 스크립트화하세요.

연결 나열

spcli list connections

출력 예시

Build Tunnel (Local Forward), Debug DB (Remote Forward), Dev Box SOCKS (SOCKS Proxy)

연결을 시작하고 준비될 때까지 대기

spcli connect "Build Tunnel (Local Forward)"
until [ "$(spcli status "Build Tunnel (Local Forward)")" = "connected" ]; do sleep 1; done
echo "Tunnel is up"

연결이 authentication failed, unknown host key, host key changed, invalid 또는 error 상태가 될 수 있으므로 의존하기 전에 상태를 확인하세요.

그룹 시작 또는 중지

spcli connect-group "engineering"
spcli disconnect-group "engineering"

상태를 JSON으로 읽기

spcli status "Build Tunnel (Local Forward)" --json

출력 예시

{ "connection" : "Build Tunnel (Local Forward)", "status" : "connected" }

자동화 권한

터미널이 처음으로 spcli를 실행할 때 macOS가 터미널의 Secure Pipes 제어를 허용할지 묻습니다. 시스템 설정의 개인정보 보호 및 보안 > 자동화에서 허용하세요.

전체 spcli 도움말(앱과 동일한 영어 원문)

spcli — control Secure Pipes from the command line

Usage: spcli <command> [arguments]

Application:
  spcli start                       Start Secure Pipes without showing its window
  spcli show                        Show and activate the Secure Pipes window
  spcli hide                        Hide Secure Pipes windows
  spcli shutdown                    Quit Secure Pipes immediately

Connections and groups:
  Connection arguments accept a UUID, unique name or full display name.
  spcli list connections [--json]   List configured connections
  spcli connect "<connection>"      Start a connection
  spcli disconnect "<connection>"   Stop a connection
  spcli status "<connection>" [--json]
                                    Show the status of a connection
  spcli wait "<connection>" [seconds]
                                    Wait until connected (1-45 seconds)
  spcli connect-and-wait "<connection>" [seconds]
                                    Start and wait for a ready connection
  spcli list remote-desktops [--json]  List RDP/VNC profiles (redacted)
  spcli get-remote-desktop "<ID>" [--json]
  spcli create-remote-desktop '<JSON>'  Create name/values; preset host supported
  spcli update-remote-desktop '<JSON>'  Update id/name/values
  spcli open-remote-desktop "<ID>"    Start tunnel and open client
  spcli delete-remote-desktop "<ID>"  Delete disconnected profile
  spcli list groups [--json]        List connection groups
  spcli group-status "<group>" [--json]
                                    Show the status of a group
  spcli connect-group "<group>"     Start all connections in a group
  spcli disconnect-group "<group>"  Stop all connections in a group

Rules and scenarios:
  spcli list rules [--json]         List proxy rules and scenario assignments
  spcli preview-route <host> <port> <bundle-id> [TCP|UDP] [--json]
                                    Predict the current local rule decision
  spcli enable-rule "<name|ID>"    Enable a proxy rule
  spcli disable-rule "<name|ID>"   Disable a proxy rule
  spcli set-rule-scenarios "<rule>" "<scenario>" ["<scenario>" ...]
                                    Replace assignments; Universal clears them
  spcli list scenarios [--json]     List usage scenarios (ID, name, active state)
  spcli current-scenario            Show the active usage scenario
  spcli switch-scenario "<name|ID>"
                                    Switch scenario; active connections reconnect
  spcli create-scenario "<name>"   Create a usage scenario
  spcli rename-scenario "<old>" "<new>"
                                    Rename a scenario
  spcli delete-scenario "<name|ID>"
                                    Delete a scenario; orphaned rules become universal

Task plans:
  spcli list task-plans [--json]    List scheduled plans (redacted)
  spcli get-task-plan "<ID>" [--json]
                                    Read one scheduled plan
  spcli create-task-plan '<JSON>'   Create a validated task plan
  spcli update-task-plan '<JSON>'   Update a plan; JSON must include id
  spcli delete-task-plan "<ID>"   Delete a scheduled plan
  spcli enable-task-plan "<ID>"   Enable a plan
  spcli disable-task-plan "<ID>"  Disable a plan
  spcli run-task-plan "<ID>"      Run a plan immediately
                                    JSON repeat: 0 once, 1 daily, 2 weekdays,
                                    3 custom weekdays, 4 app launch, 5 app quit,
                                    6 custom dates; dates are ISO 8601 or YYYY-MM-DD

Proxies and sharing:
  spcli list proxy-servers [--json] List proxy servers without credentials
  spcli test-proxy <name|ID> [--json]
                                    Test a proxy server
  spcli transparent-proxy-status [--json]
                                    Show transparent proxy and extension state
  spcli initialize-transparent-proxy
                                    Install or repair the system extension
  spcli start-transparent-proxy     Start the transparent proxy
  spcli stop-transparent-proxy      Stop the transparent proxy
  spcli sharing-status [--json]     Show sharing, gateway and mode states
  spcli set-sharing-modes <proxy|gateway|both|off>
                                    Select network sharing modes
  spcli start-sharing               Start the selected sharing modes
  spcli stop-sharing                Stop gateway and network sharing

Activity and logs:
  spcli list flows [--json]         List proxy and sharing connections
  spcli list proxy-flows [--json]   List transparent proxy connections
  spcli list sharing-flows [--json] List network sharing connections
  spcli end-flow <flow-id>          End a connected flow
  spcli list logs [--json]          Show the 200 newest redacted logs
  spcli log-detail <log-id> [--json]
                                    Show the complete recent log record

Options:
  --json    Machine-readable JSON output for supported commands
  --help    Show this help
  --version Show the spcli version

Exit codes:
  0 success   1 Secure Pipes reported an error   2 invalid usage
  3 application not found / not launchable / Automation permission denied
  4 Apple Event send, timeout, or reply failure

Secure Pipes 2.0.17 기반 · 2026년 11월 9일 업데이트