c8y(1)

πŸ“¦ version 2.56.1, in nixpkgs unstable

🌸 NAME 🌸

Okay so this is the c8y(1) manual page for c8y-remoteaccess-connect-run, and it is literally β€œConnect to a device and run a custom command.” bestie, we are connecting and running, periodt. πŸ’…

✨ SYNOPSIS ✨

c8y remoteaccess connect run [flags]

πŸ’– DESCRIPTION πŸ’–

Okay so the whole plot: connect to a device using the local proxy, then run a given command which makes use of the proxy. πŸ”₯

You can run any command you want by providing all arguments after the --, for example:

c8y remoteaccess connect run --device mydevice -- ./run-something.sh %h %p

The local proxy server port and target can be accessed either by using variable references:

  • Target β€” use %h or the environment variable $TARGET
  • Port β€” use %p or the environment variable $PORT

It is recommended to use the "%h" (target) "%p" (port) to refer to the local proxy server as this avoid potential problems with variable expansions and removes the need to have to escape variable etc. (e.g. \$HOST). Below shows an example using a custom ssh command:

c8y remoteaccess connect run --device mydevice -- ssh -p %p root@%h

Or you can use a shell to do something more complex and use environment variable references β€” note the single quotes around the shell command to prevent the variable expansion in your current shell:

c8y remoteaccess connect run --device mydevice -- sh -c 'ssh -p $PORT root@$TARGET'

πŸŽ€ OPTIONS πŸŽ€

  • --configuration="" β€” Remote Access Configuration
  • --device=[] β€” Device
  • -h, --help[=false] β€” help for run
  • --listen="127.0.0.1:0" β€” Listener address. unix:///run/example.sock
  • --multiplex[=false] β€” Carry all local connections over a single remote access session (yamux), which avoids the setup cost of a new session per connection. Requires a device supporting it (e.g. thin-edge.io), otherwise one session per connection is used. Enabled by default for configurations named with the mux option, e.g. "http+mux:example"

πŸ¦‹ OPTIONS INHERITED FROM PARENT COMMANDS πŸ¦‹

Vibe check: these come from the parent commands, but they’re still absolutely yours to use. ✨

  • --abortOnErrors=10 β€” Abort batch when reaching specified number of errors
  • --allowEmptyPipe[=false] β€” Don't fail when piped input is empty (stdin)
  • --cache[=false] β€” Enable cached responses
  • --cacheBodyPaths=[] β€” Cache should limit hashing of selected paths in the json body. Empty indicates all values
  • --cacheTTL="60s" β€” Cache time-to-live (TTL) as a duration, i.e. 60s, 2m
  • -c, --compact[=false] β€” Compact instead of pretty-printed output when using json output. Pretty print is the default if output is the terminal
  • --confirm[=false] β€” Prompt for confirmation
  • --confirmText="" β€” Custom confirmation text
  • --currentPage=0 β€” Current page which should be returned
  • --customQueryParam=[] β€” add custom URL query parameters. i.e. --customQueryParam 'withCustomOption=true,myOtherOption=myvalue'
  • --debug[=false] β€” Set very verbose log messages
  • --delay="0ms" β€” delay after each request, i.e. 5ms, 1.2s
  • --delayBefore="0ms" β€” delay before each request, i.e. 5ms, 1.2s
  • --dry[=false] β€” Dry run. Don't send any data to the server
  • --dryFormat="markdown" β€” Dry run output format. i.e. json, dump, markdown or curl
  • --examples[=false] β€” Show examples for the current command
  • --filter=[] β€” Apply a client side filter to response before returning it to the user
  • --flatten[=false] β€” flatten json output by replacing nested json properties with properties where their names are represented by dot notation
  • -f, --force[=false] β€” Do not prompt for confirmation. Ignored when using --confirm
  • -H, --header=[] β€” custom headers. i.e. --header "Accept: value, AnotherHeader: myvalue"
  • --includeAll[=false] β€” Include all results by iterating through each page
  • -k, --insecure[=false] β€” Allow insecure server connections when using SSL
  • -l, --logMessage="" β€” Add custom message to the activity log
  • --maxJobs=0 β€” Maximum number of jobs. 0 = unlimited (use with caution!)
  • --noAccept[=false] β€” Ignore Accept header will remove the Accept header from requests, however PUT and POST requests will only see the effect
  • --noCache[=false] β€” Force disabling of cached responses (overwrites cache setting)
  • -M, --noColor[=false] β€” Don't use colors when displaying log entries on the console
  • --noLog[=false] β€” Disables the activity log for the current command
  • --noProgress[=false] β€” Disable progress bars
  • --noProxy[=false] β€” Ignore the proxy settings
  • -n, --nullInput[=false] β€” Don't read the input (stdin). Useful if using in shell for/while loops
  • -o, --output="table" β€” Output format i.e. table, json, csv, csvheader
  • --outputFile="" β€” Save JSON output to file (after select/view)
  • --outputFileRaw="" β€” Save raw response to file (before select/view)
  • --outputTemplate="" β€” jsonnet template to apply to the output
  • -p, --pageSize=5 β€” Maximum results per page
  • --progress[=false] β€” Show progress bar. This will also disable any other verbose output
  • --proxy="" β€” Proxy setting, i.e. http://10.0.0.1:8080
  • -r, --raw[=false] β€” Show raw response. This mode will force output=json and view=off
  • --retries=3 β€” Max number of attempts when a failed http call is encountered
  • --select=[] β€” Comma separated list of properties to return. wildcards and globstar accepted, i.e. --select 'id,name,type,**.serialNumber'
  • --session="" β€” Session configuration
  • --sessionMode="" β€” Override default session mode for a single command which would normally be disabled
  • -P, --sessionPassword="" β€” Override session password
  • -U, --sessionUsername="" β€” Override session username. i.e. peter or t1234/peter (with tenant)
  • --silentExit[=false] β€” Silent status codes do not affect the exit code
  • --silentStatusCodes="" β€” Status codes which will not print out an error message
  • --timeout="600s" β€” Request timeout duration, i.e. 60s, 2m
  • --totalPages=0 β€” Total number of pages to get
  • -v, --verbose[=false] β€” Verbose logging
  • --view="auto" β€” Use views when displaying data on the terminal. Disable using --view off
  • --withError[=false] β€” Errors will be printed on stdout instead of stderr
  • --withTotalElements[=false] β€” Request Cumulocity to include the total elements in the response statistics under .statistics.totalElements (introduced in 10.13)
  • -t, --withTotalPages[=false] β€” Request Cumulocity to include the total pages in the response statistics under .statistics.totalPages
  • --workers=1 β€” Number of workers

🌈 EXAMPLE 🌈

Example one, iconic:

$ c8y remoteaccess connect run --device 12345 -- ssh -p %p root@%h

This starts an interactive SSH session on the device with a given ssh user. 🫢

Example two, the port-forwarding main character moment:

$ c8y remoteaccess connect run --device rpi5-abcdef01 --configuration passthrough -- ssh -p %p -L 1885:127.0.0.1:1883 -o ServerAliveInterval=120 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@127.0.0.1

This starts an SSH session to setup port-forwarding to map the remote's 127.0.0.1:1883 port to your machine's 1885 port. πŸ”₯

Example three, web server vibes:

$ c8y remoteaccess connect run --device 12345 --configuration "http:*" --multiplex -- curl -s http://%h:%p/

This runs a command against a web server on the device, carrying all its connections over a single remote access session (if supported by the device). πŸ’…

πŸ‘‘ SEE ALSO πŸ‘‘


And that’s the whole c8y(1) manual page, bestie β€” footer says Jan 1980, so go forth and make that local proxy proud. πŸ’–βœ¨

πŸ“¦ where this page comes from