Le schermate mostrano l’interfaccia in inglese; i diagrammi seguono la lingua della guida. I nomi dei controlli possono variare in base alla lingua scelta nell’app.
spcli — Riferimento dei comandi
Le descrizioni dei comandi e gli esempi da copiare corrispondono alla sezione Automazione dell’app per Mac. I riferimenti includono i comandi esistenti e le aggiunte della versione 2.0.17.

Spiegazioni e script completi sono sincronizzati dalla documentazione integrata nell’app Mac. Sostituisci nomi e ID di esempio prima di eseguire. Gli esempi possono cambiare connessioni e impostazioni reali: non eseguire l’intera pagina come script.
Desktop remoto
spcli list remote-desktops --json
Elenca le connessioni RDP/VNC salvate.
spcli list remote-desktops --json
spcli get-remote-desktop "<ID>"
Leggi una connessione per ID, senza credenziali.
spcli get-remote-desktop "DESKTOP-ID"
spcli create-remote-desktop <JSON>
Crea con name e values. Usa hostProfileUUID per un host predefinito.
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>
Aggiorna per id; name e values sono facoltativi.
spcli update-remote-desktop '{"id":"DESKTOP-ID","values":{"remoteDesktopOptions":{"screen mode id":1,"audiomode":2}}}'
spcli open-remote-desktop "<ID>"
Avvia il tunnel SSH se necessario, poi apri il client RDP/VNC salvato.
spcli open-remote-desktop "DESKTOP-ID"
spcli delete-remote-desktop "<ID>"
Elimina una connessione disconnessa tramite ID.
spcli delete-remote-desktop "DESKTOP-ID"
I nomi utente possono essere scritti, ma non vengono mai restituiti. Imposta password SSH e file di identità in Secure Pipes; inserisci la password del desktop nel client.
Informazioni su spcli
spcli è un piccolo strumento a riga di comando incluso in Secure Pipes. Controlla Secure Pipes direttamente dal Terminale, così puoi avviare, interrompere e consultare le connessioni salvate da script di shell, alias o attività pianificate.
spcli usa gli stessi comandi AppleScript e il permesso di automazione. Avviando la condivisione di rete potrebbe aprirsi la finestra di conferma.
Installare spcli
spcli è incluso con Secure Pipes, ma non è nel tuo PATH finché non lo installi. Usa la riga dello strumento a riga di comando sotto Backup in Impostazioni > Generale.
Fai clic su Installa spcli. Secure Pipes collega spcli a una cartella del tuo PATH, come /usr/local/bin o /opt/homebrew/bin.
Se la cartella richiede i permessi, approva una sola volta la richiesta dell’amministratore.
Apri una nuova finestra del Terminale e esegui spcli --help per confermare che è disponibile.
Per rimuoverlo in seguito, fai clic su Disinstalla spcli nella stessa riga.
Verificare l’installazione
spcli --version
spcli --help
Riferimento dei comandi
Digita spcli, poi un comando. Metti tra virgolette i nomi di connessione e di gruppo.
spcli start
Avvia Secure Pipes senza mostrare la finestra.
spcli start
spcli show
Mostra e attiva la finestra di Secure Pipes.
spcli show
spcli hide
Nasconde le finestre di Secure Pipes mentre le connessioni restano in esecuzione.
spcli hide
spcli shutdown
Chiude Secure Pipes e interrompe le connessioni attive.
spcli shutdown
spcli list connections
Elenca le connessioni configurate. Aggiungi --json per un output leggibile dalla macchina.
spcli list connections
spcli list groups
Elenca i tag usati come gruppi di connessioni. Aggiungi --json per un output leggibile dalla macchina.
spcli list groups
spcli connect "<connection>"
Avvia una connessione salvata.
spcli connect "Build Tunnel (Local Forward)"
spcli disconnect "<connection>"
Interrompe una connessione salvata.
spcli disconnect "Build Tunnel (Local Forward)"
spcli status "<connection>"
Mostra lo stato attuale di una connessione.
spcli status "Build Tunnel (Local Forward)"
spcli connect-group "<group>"
Avvia un gruppo con le impostazioni salvate.
spcli connect-group "engineering"
spcli disconnect-group "<group>"
Arresta il gruppo e le connessioni dei membri.
spcli disconnect-group "engineering"
spcli list task-plans
Elencare piani senza restituire credenziali.
spcli list task-plans --json
spcli create-task-plan '<JSON>'
Creare piano validato da JSON. Usa ID connessione/gruppo, senza credenziali.
spcli create-task-plan '{"id":"work-start","hour":9,"minute":0,"repeat":2,"actions":[{"type":"start_group","id":"work"}]}'
spcli update-task-plan '<JSON>'
Aggiornare con ID esistente e campi da salvare.
spcli update-task-plan '{"id":"work-start","hour":8,"minute":45,"repeat":2,"actions":[{"type":"start_group","id":"work"}]}'
spcli enable-task-plan "<ID>"
Attivare, disattivare o provare subito un piano salvato.
spcli enable-task-plan "work-start"
spcli disable-task-plan "work-start"
spcli run-task-plan "work-start"
Opzioni
--json
Output JSON leggibile automaticamente per i comandi supportati.
--help
Mostra il testo d’uso completo.
--version
Mostra la versione di spcli.
Codici d’uscita
0 riuscito, 1 Secure Pipes ha segnalato un errore, 2 uso non valido, 3 Secure Pipes non trovato o autorizzazione di automazione negata, 4 impossibile inviare l’Apple Event.
Regole e scenari d’uso
Usa un ID o un nome univoco per modificare una regola o cambiare scenario. Il cambio interrompe e ristabilisce le connessioni attive. Eliminare uno scenario conserva le sue regole; quelle senza altri scenari diventano comuni.
spcli list rules
Elenca le regole in ordine con ID, nome, stato di attivazione, azione e ID degli scenari.
spcli list rules --json
spcli list scenarios
Elenca gli scenari, incluso Universal, con ID, nome e stato attivo.
spcli list scenarios --json
spcli current-scenario
Mostra il nome dello scenario attualmente attivo.
spcli current-scenario
spcli switch-scenario "Office"
Cambia scenario tramite ID o nome univoco e riconnette le connessioni interessate con le regole selezionate.
spcli switch-scenario "Office"
spcli enable-rule "Work websites"
Attiva una regola tramite ID o nome univoco.
spcli enable-rule "Work websites"
spcli disable-rule "Work websites"
Disattiva una regola senza eliminarla.
spcli disable-rule "Work websites"
spcli set-rule-scenarios "Work websites" "Office" "Travel"
Sostituisce gli scenari assegnati a una regola. Universal la rende una regola universale.
spcli set-rule-scenarios "Work websites" "Office" "Travel"
spcli create-scenario "Travel"
Crea uno scenario con nome univoco e restituisce il suo ID.
spcli create-scenario "Travel"
spcli rename-scenario "Travel" "Mobile work"
Rinomina uno scenario mantenendo le assegnazioni delle regole.
spcli rename-scenario "Travel" "Mobile work"
spcli delete-scenario "Travel"
Elimina uno scenario senza eliminare le sue regole. Le regole senza altri scenari diventano universali.
spcli delete-scenario "Travel"
Esempio completo
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"
Proxy e condivisione di rete
La condivisione usa indirizzo, porta e autenticazione salvati. Se necessario, all’avvio si apre la finestra di conferma. La modalità gateway richiede ancora la conferma dei rischi e l’autorizzazione di macOS.
spcli list proxy-servers
Elenca i server proxy configurati con ID, nome, tipo e indirizzo, senza credenziali.
spcli list proxy-servers --json
spcli transparent-proxy-status
Mostra lo stato del proxy trasparente, dell'estensione di sistema e la corrispondenza delle versioni.
spcli transparent-proxy-status --json
spcli initialize-transparent-proxy
Installa o ripara l'estensione di sistema. macOS potrebbe richiedere l'autorizzazione; il proxy trasparente non viene avviato.
spcli initialize-transparent-proxy
spcli start-transparent-proxy
Avvia il proxy trasparente con le regole di instradamento correnti quando l'estensione è pronta.
spcli start-transparent-proxy
spcli stop-transparent-proxy
Arresta il proxy trasparente. La condivisione di rete dipende da questo servizio.
spcli stop-transparent-proxy
spcli sharing-status
Mostra lo stato della condivisione e del gateway. In esecuzione mostra le modalità attive; da fermo, quelle salvate.
spcli sharing-status --json
spcli set-sharing-modes both
Seleziona proxy, gateway, entrambi o disattivato per il prossimo avvio manuale. Arresta la condivisione prima di cambiare modalità.
spcli set-sharing-modes both
spcli start-sharing
Avvia le modalità selezionate con indirizzo, porta e autenticazione salvati. Potrebbe essere necessaria una conferma.
spcli start-sharing
spcli stop-sharing
Arresta il gateway e il listener del proxy condiviso. Il proxy trasparente resta in esecuzione.
spcli stop-sharing
Esempio completo
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
Connessioni, attività e registri
Usa gli ID degli elenchi per individuare esattamente le voci. I dettagli vengono restituiti come testo JSON.
spcli group-status "engineering"
Mostra il risultato del gruppo e lo stato di ogni membro.
spcli group-status "engineering" --json
spcli connect-and-wait "Build Tunnel" 30
Attende che la connessione sia pronta; errori e timeout vengono segnalati.
spcli connect-and-wait "Build Tunnel" 30
spcli preview-route
Prevede la regola locale nello scenario corrente; non verifica la connettività.
spcli preview-route example.com 443 com.apple.Safari TCP --json
spcli test-proxy
Verifica un proxy salvato e restituisce risultato, motivo e durata.
spcli test-proxy "proxy-id" --json
spcli list proxy-flows
Mostra l’attività del proxy; LAN mostra la condivisione e ALL entrambe.
spcli list proxy-flows --json
spcli list sharing-flows
Mostra le connessioni della condivisione di rete.
spcli list sharing-flows --json
spcli end-flow
Chiude un flusso connesso tramite il suo ID.
spcli end-flow "flow-id"
spcli list logs
Mostra fino a 200 registri recenti privi di dati sensibili, dal più recente.
spcli list logs --json
spcli log-detail
Mostra il record completo di un registro recente tramite ID.
spcli log-detail "log-id" --json
Esempi dal Terminale
Combina spcli con i normali strumenti di shell per automatizzare i tuoi flussi di lavoro.
Elenca le connessioni
spcli list connections
Risultato di esempio
Build Tunnel (Local Forward), Debug DB (Remote Forward), Dev Box SOCKS (SOCKS Proxy)
Avvia una connessione e attendila
spcli connect "Build Tunnel (Local Forward)"
until [ "$(spcli status "Build Tunnel (Local Forward)")" = "connected" ]; do sleep 1; done
echo "Tunnel is up"
Una connessione può restare su authentication failed, unknown host key, host key changed, invalid o error; controlla lo stato prima di fidartene.
Avviare o interrompere un gruppo
spcli connect-group "engineering"
spcli disconnect-group "engineering"
Leggere lo stato in JSON
spcli status "Build Tunnel (Local Forward)" --json
Risultato di esempio
{ "connection" : "Build Tunnel (Local Forward)", "status" : "connected" }
Autorizzazione di automazione
La prima volta che il Terminale esegue spcli, macOS chiede di consentire al Terminale di controllare Secure Pipes. Consenti in Impostazioni di Sistema > Privacy e sicurezza > Automazione.
Guida completa di spcli (originale inglese dell’app)
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
Basato su Secure Pipes 2.0.17 · Aggiornato il 9 novembre 2026