humanmade / humanmade/altis-cli

Ability to pass command to `altis stack ssh` and pipe ouput

Open
#16 2 comments 1 reaction 0 assignees View on GitHub
Dominant language
JavaScript
Stars
0
Forks
1
Avg merge
7d 9h
Merged PRs (30d)
3

Description

**User Story**

As a CLI user I am able to pass a command to execute to `altis-cli stack ssh` such as `wp user list` and then pipe the output to my local machine. For example, something like `altis-cli stack ssh altis-demo -- wp user list | grep joe` (in this case `grep` is being run on my local machine.

I would also like to pipe data _in_ to a command, for example: `echo joe | altis-cli stack ssh altis-demo -- wp user get`.

---

I chatted to @rmccue about the feasibility to doing these, and there are a few low-level challenges that we need to overcome to be able to implement this. As I understand it:

1. We need to be able to change the "initial" command when `ssh` is run, as currently it will output MOTD and other boilerplate as part of setting up the SSH sessions. If developers want to just be able to just run a command and pipe output, we can't have any of the initial data.
2. Altis Dashbaord APIs need to be updated to allow passing the initial command, as we can't run the command client-side in the interactive sessions, as there's no easy to way understand when the command might be complete and exit the program.
3. Currently the session's SSH output is all a single stream of data, so there's no way to split stdout / stderr in pipes on the client machine. This means if something like `wp user list` output PHP errors or any other error, it would be in stdout and piped along with the list of users. This makes the data useless in many situations. There's an open issue on https://github.com/aws/amazon-ssm-agent/issues/358 (2.5 years old) to address this, but it doesn't look like there's any progress.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.