Skip to content

suggestion: add bpsh/bpshd for ssh-like interactive remote shell #83

@zebastian

Description

@zebastian

server side on target node:

  • bpshd daemon listens on a local ipn endpoint with bp_receive
  • command payload is forked into actual program invocation
  • program output / exit code is relayed back to requestor with bp_send
  • multiple commands may run in parallel

client side on user node:

  • bpsh: opens a local ipn service / permanently listen on inbound data with bp_receive
  • exposes REPL terminal to user (behaves serial: after each command initiated waits for the result and exit from server)
  • on key ENTER send current line with bp_send
  • inbound data handled analogue to ssh (print data received / re-show prompt on exit signal)
  • if no local ipn service is given a ephemeral service id is used
  • nice to have: implement shell detection and stdin forwarding for non-TTY invocation, eg:
    cat /stream-this-local-file | bpsh -h ipn:1,5 -c "tee /to-this-file-on-remote"

multiple local bpsh instances can be started and be run in parallel against the same server, if all bpsh have a differing service number.
server and client: mark bundles with an order id for bundle ordering on receiver side

config:

  • server:
    • mandatory: ipn listen endpoint
    • optional: whitelist requestor ipn, whitelist commands, bpsec requirement, command timeout, command max output
  • client:
    • options given as cli arguments
    • mandatory: remote ipn
    • optional: local ipn, show progress bar based on expected response time

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions