2019-11-03 14:58:29 +00:00
< p align = "center" >
< img src = "https://avatars2.githubusercontent.com/u/57318034?s=60&v=4&" > < br >
< p align = "center" >
2020-02-08 23:42:29 +00:00
< b > xxh< / b > is for using < a href = "https://xon.sh/" > xonsh shell< / a > wherever you go through the ssh.
2019-11-03 14:58:29 +00:00
< / p >
< / p >
< p align = "center" >
2020-02-08 23:49:20 +00:00
< a href = "https://asciinema.org/a/osSEzqnmH9pMYEZibNe2K7ZL7" target = "_blank" > < img src = "https://asciinema.org/a/osSEzqnmH9pMYEZibNe2K7ZL7.svg" > < / a > < br >
< sup > (in the demo is used < a href = "https://github.com/xonssh/xxh-plugin-theme-bar" > xxh-plugin-theme-bar< / a > )< / sup >
2019-11-03 14:58:29 +00:00
< / p >
2020-02-08 23:49:20 +00:00
< br >
2020-02-08 23:03:26 +00:00
< p align = "center" >
< a href = "https://pypi.org/project/xonssh-xxh/" target = "_blank" alt = "PyPI Latest Release" > < img src = "https://img.shields.io/pypi/v/xonssh-xxh.svg" > < / a >
2020-02-08 23:37:32 +00:00
< img alt = "PyPI - License" src = "https://img.shields.io/pypi/l/xonssh-xxh" >
2020-02-08 23:03:26 +00:00
< / p >
2019-11-03 15:13:42 +00:00
2019-11-03 14:34:38 +00:00
## Installation
```
2020-02-08 21:57:47 +00:00
pip install xonssh-xxh
2019-11-04 08:58:11 +00:00
```
Then try:
```
2020-02-11 19:27:54 +00:00
xxh < [user@]host[:port] or servername from ~/.ssh/config>
2019-11-03 14:34:38 +00:00
```
## Usage
```
2020-02-13 20:19:48 +00:00
$ xxh --help
2020-02-11 19:27:54 +00:00
usage: xxh [user@]host[:port]
usage: xxh [ssh arguments] destination [xxh arguments]
2020-02-13 21:05:13 +00:00
usage: xxh [-h] [-V] [-p SSH_PORT] [-l SSH_LOGIN] [-i SSH_IDENTITY_FILE] [-o SSH_OPTIONS]
2020-02-08 22:01:50 +00:00
[destination]
2020-02-13 21:05:13 +00:00
[+i] [+if] [+lxh LOCAL_XXH_HOME] [+hxh HOST_XXH_HOME] [+m METHOD] [+v] [+vv]
2020-02-08 22:01:50 +00:00
The xxh is for using the xonsh shell wherever you go through the ssh.
2020-02-11 19:30:38 +00:00
___ __________ @ @
2020-02-11 19:27:54 +00:00
_____ / \ \__/
___ / ______ \ / \ contribution
____ / / __ \ \ / _/ https://github.com/xonssh/xxh
__ ( / / / \ \ /
\ \___/ / / / plugins
2020-02-13 20:19:48 +00:00
___\ /__ / / https://github.com/search?q=xxh-plugin
/ \________/ /
/___________________/
2019-11-03 14:34:38 +00:00
2020-02-11 19:27:54 +00:00
required arguments:
destination Destination may be specified as [user@]hostname[:port] or server name from ~/.ssh/config
2019-11-03 14:34:38 +00:00
2020-02-11 19:27:54 +00:00
common arguments:
2019-11-03 14:34:38 +00:00
-h, --help show this help message and exit
2020-02-11 19:27:54 +00:00
-V, --version Show xxh version
ssh arguments:
-p SSH_PORT Port to connect to on the remote host.
-l SSH_LOGIN_NAME Specifies the user to log in as on the remote machine.
-i SSH_IDENTITY_FILE Selects a file from which the identity (private key) for public key authentication is read.
-o SSH_OPTIONS Options in the ssh configuration format. See ssh man page. Example: xxh -o Port=22 -o User=snail host
xxh arguments:
2020-02-11 20:34:48 +00:00
+i, ++install Install xxh to destination host.
+if, ++install-force Delete remote xxh home and install xonsh to destination host.
2020-02-11 19:27:54 +00:00
+lxh LOCAL_XXH_HOME, ++local-xxh-home LOCAL_XXH_HOME
2020-02-08 23:41:53 +00:00
Local xxh home path. Default: ~/.xxh
2020-02-13 20:19:48 +00:00
+hxh HOST_XXH_HOME, ++host-xxh-home HOST_XXH_HOME
Host xxh home path. Default: ~/.xxh
2020-02-11 19:27:54 +00:00
+m METHOD, ++method METHOD
2020-02-13 20:19:48 +00:00
Portable method: appimage
2020-02-11 19:27:54 +00:00
+v, ++verbose Verbose mode.
2020-02-13 20:19:48 +00:00
+vv, ++vverbose Super verbose mode.
2019-11-03 14:34:38 +00:00
```
## Plugins
2020-02-08 23:11:23 +00:00
[Search xxh plugins on Github ](https://github.com/search?q=xxh-plugin&type=Repositories ) or [create plugin with your own lovely functions ](README.plugins.md ).
2019-11-03 14:34:38 +00:00
2020-02-08 23:32:13 +00:00
Pinned plugins:
* [Pipe Liner ](https://github.com/xonssh/xxh-plugin-pipe-liner ) — processing the lines easy with python and classic shell pipes
* [Bar Theme ](https://github.com/xonssh/xxh-plugin-theme-bar ) — theme to stay focused
* [Autojump ](https://github.com/xonssh/xxh-plugin-autojump ) — save time on moving thru directories
2019-11-03 14:34:38 +00:00
## Notes
### Using pip and python
2019-11-04 09:06:52 +00:00
The xxh xonsh will use pip and python from `xonsh.AppImage` by default. You can install pip packages ordinally with `pip install` . They will appear in `$XXH_HOME/pip` .
2019-11-03 14:34:38 +00:00
## How it works?
2019-11-04 08:56:35 +00:00
When you run `xxh <server>` command:
2019-11-03 14:34:38 +00:00
1. If it needed xxh script will download `xonsh.AppImage` . This is portable version of xonsh. URL you can find in `xxh.xsh`
2. If it needed xxh script copies the portable xonsh on the host (`~/.xxh` by default) along with init scripts and plugins.
2019-11-04 09:13:21 +00:00
3. Finally xxh makes ssh connection to server and running remote portable xonsh shell without any affection on the target system.
2019-11-03 15:22:54 +00:00
2020-02-12 14:08:21 +00:00
## Development
2020-02-13 10:22:57 +00:00
Use [xxh-tests ](https://github.com/xonssh/xxh-tests ) environment for development and contribution.
What will make xxh more universal and stable in the future:
* [AppImages run on Alpine ](https://github.com/AppImage/AppImageKit/issues/1015 )
* [Fix xonsh for WSL1 ](https://github.com/xonsh/xonsh/issues/3367 )
2020-02-12 14:08:21 +00:00
2019-11-04 09:05:04 +00:00
## Known Issues
### GLIBs versions
Current method to make xonsh portable is using an [AppImage ](https://appimage.org/ ) which was built on [manylinux2010 (PEP 571) ](https://github.com/niess/linuxdeploy-plugin-python/issues/12 ). In case you see the error like ``/xonsh-x86_64.AppImage: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.25 not found (required by /ppp/xonsh-x86_64.AppImage)`` this means you should rebuild the AppImage for older version of linux distributive. Try [linuxdeploy-plugin-python ](https://github.com/niess/linuxdeploy-plugin-python/ ).
### WSL1: ^Z
```
# xxh YT-1300
^Z
Unknown answer from server when checking direcotry /home/hansolo/.xxh:
```
This issue was addressed to Xonsh team in [3367 ](https://github.com/xonsh/xonsh/issues/3367 ). Just try to run command again.
2020-02-08 22:01:50 +00:00
WSL2 is not tested yet.
2020-02-09 09:10:08 +00:00
## Thanks
* @scopatz for https://github.com/xonsh/xonsh
* @probonopd for https://github.com/AppImage
* @niess for https://github.com/niess/linuxdeploy-plugin-python/
* @gforsyth for https://github.com/xonsh/xonsh/issues/3374