xxh/README.md

109 lines
4.5 KiB
Markdown
Raw Normal View History

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-08 23:03:26 +00:00
xxh <hostname or servername from ~/.ssh/config>
2019-11-03 14:34:38 +00:00
```
## Usage
```
2020-02-08 23:41:53 +00:00
$ ./xxh --help
usage: xxh [-h] [-i] [-if] [-lxh LOCAL_XXH_HOME] [-rxh REMOTE_XXH_HOME]
[-m METHOD] [-V]
2020-02-08 22:01:50 +00:00
[destination]
The xxh is for using the xonsh shell wherever you go through the ssh.
2020-02-08 23:59:42 +00:00
____ _________ @ @
2020-02-08 23:41:53 +00:00
______ / \ \__/
____ / ____ \ / \ contribution
_____ / / \ \ / _/ https://github.com/xonssh/xxh
___ ( \ \_/ ) /
2020-02-08 22:01:50 +00:00
\ \_____/ / / plugins
2020-02-08 23:41:53 +00:00
___\___________/ / https://github.com/search?q=xxh-plugin
/__________________/
2019-11-03 14:34:38 +00:00
positional arguments:
2020-02-08 22:01:50 +00:00
destination Destination may be specified as hostname or server name from ~/.ssh/config
2019-11-03 14:34:38 +00:00
optional arguments:
-h, --help show this help message and exit
2020-02-08 22:01:50 +00:00
-i, --install Install xxh to distanation host
-if, --install-force Delete remote xxh home and install xonsh to distanation host
2020-02-08 23:41:53 +00:00
-lxh LOCAL_XXH_HOME, --local-xxh-home LOCAL_XXH_HOME
Local xxh home path. Default: ~/.xxh
2020-02-08 22:01:50 +00:00
-rxh REMOTE_XXH_HOME, --remote-xxh-home REMOTE_XXH_HOME
2020-02-08 23:41:53 +00:00
Remote xxh home path. Default: ~/.xxh
2019-11-03 14:34:38 +00:00
-m METHOD, --method METHOD
2020-02-08 22:01:50 +00:00
Installation method. Currently supported only 'appimage' method
-V, --version Show xxh version
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
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