All Projects → xxh → Xxh

xxh / Xxh

Licence: bsd-2-clause
🚀 Bring your favorite shell wherever you go through the ssh.

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Xxh

config
Fig's integrations with bash, zsh, fish, ssh, and tmux. Also contains Fig's installation and update scripts. Finally, this repo is the root of the .fig folder that is installed on your computer when you download Fig!
Stars: ✭ 44 (-98.28%)
Mutual labels:  zsh, fish, ssh
Zoxide
A smarter cd command. Supports all major shells.
Stars: ✭ 4,422 (+72.8%)
Mutual labels:  zsh, fish, xonsh
Awesome Ssh
💻 A curated list of SSH resources.
Stars: ✭ 1,742 (-31.93%)
Mutual labels:  devops, ssh, openssh
carapace-bin
multi-shell multi-command argument completer
Stars: ✭ 42 (-98.36%)
Mutual labels:  zsh, fish, xonsh
Colorechoforshell
Make 🐚(shell) 's 💬 (`echo`) to be 🌈 easily ✨ Support ✅ sh ➕ bash ➕ zsh ➕ ksh ➕ 🐟
Stars: ✭ 75 (-97.07%)
Mutual labels:  zsh, fish
Module Security Public
The public documentation for the gruntwork-io/module-security repo, which contains packages for setting up best practices for managing secrets, credentials, and servers
Stars: ✭ 67 (-97.38%)
Mutual labels:  devops, ssh
Jjg Ansible Windows
[DEPRECATED] Windows shell provisioning script to bootstrap Ansible from within a Vagrant VM.
Stars: ✭ 82 (-96.8%)
Mutual labels:  devops, ssh
Ssh Connect
🐙 simple ssh manager based on bash/zsh history
Stars: ✭ 86 (-96.64%)
Mutual labels:  zsh, ssh
Openssh Rs
Scriptable SSH through OpenSSH in Rust
Stars: ✭ 58 (-97.73%)
Mutual labels:  ssh, openssh
Monday
⚡️ A dev tool for microservice developers to run local applications and/or forward others from/to Kubernetes SSH or TCP
Stars: ✭ 1,246 (-51.31%)
Mutual labels:  devops, ssh
Castle Winbuntu
Homesick Castle for use on WSL.
Stars: ✭ 87 (-96.6%)
Mutual labels:  zsh, ssh
Webterminal
ssh rdp vnc telnet sftp bastion/jump web putty xshell terminal jumpserver audit realtime monitor rz/sz 堡垒机 云桌面 linux devops sftp websocket file management rz/sz otp 自动化运维 审计 录像 文件管理 sftp上传 实时监控 录像回放 网页版rz/sz上传下载/动态口令 django
Stars: ✭ 1,124 (-56.08%)
Mutual labels:  devops, ssh
Cgitc
Close Git Combat
Stars: ✭ 62 (-97.58%)
Mutual labels:  zsh, fish
Vg
Virtualgo: Easy and powerful workspace based development for go
Stars: ✭ 1,213 (-52.6%)
Mutual labels:  zsh, fish
Dotfiles
🏠
Stars: ✭ 60 (-97.66%)
Mutual labels:  zsh, fish
Tomahawk
A simple ssh wrapper to execute commands into many hosts.
Stars: ✭ 83 (-96.76%)
Mutual labels:  devops, ssh
Sidedoor
SSH connection daemon for Debian/Raspbian/Ubuntu/etc
Stars: ✭ 97 (-96.21%)
Mutual labels:  ssh, openssh
Mac Bootstrap
💻 Provision a new Mac for web development with dotfiles + Fish/Zsh, Neovim, and Tmux
Stars: ✭ 96 (-96.25%)
Mutual labels:  zsh, fish
Snowflake
Graphical SFTP client and terminal emulator with helpful utilities
Stars: ✭ 1,676 (-34.51%)
Mutual labels:  devops, ssh
Forgit
💤 A utility tool powered by fzf for using git interactively.
Stars: ✭ 1,823 (-28.76%)
Mutual labels:  zsh, fish

You stuffed command shell with aliases, tools and colors but you lose it all when using ssh. The mission of xxh is to bring your favorite shell wherever you go through ssh without root access and system installations.

If you like the idea of xxh click on the repo and tweet.

[xxh demo]

Portable. Preparing portable shells and plugins occurs locally and then xxh uploads the result to the host. No installations or root access on the host required. Security and host environment a prime focus. Hermetic. Deleting ~/.xxh directory from the remote host will make the remote environment function as if xxh was never there. By default your home is the .xxh directory and you can choose the hermetic level of your xxh session. Careful. No blindfold copying config files from local to remote host. Following privacy and repeatability practices the best way is to fork the xxh plugin or shell example and pack your configs into it.
Be open and fork-ready. Every xxh repo could be forked, customized and reused without waiting for a package management system, xxh release or any third party packages. Five shells are currently supported and more could be added by the community. Do more. The xxh packages are not only about shells. Any type of tool or code could be behind an entrypoint. If you want to run browsh on the remote host, just put its portable version as an entrypoint in the xxh-shell. Chameleon. Switching the shells is as easy as possible and you don't have to be locked in to one shell. Choose your current shell based on the task you want to solve: xxh anyhost +s xonsh for a python environment, osquery for simple querying, fish for modern features or time-tested zsh and bash for speed.

Installation methods

PyPi 3

pip3 install xxh-xxh

pipx - good alternative to brew and pip, read comparison

pipx install xxh-xxh

Conda-forge feedstock

conda config --add channels conda-forge
conda install xxh-xxh

Homebrew

brew install xxh

Macports

sudo port install xxh

Linux portable binary

mkdir ~/xxh && cd ~/xxh
wget https://github.com/xxh/xxh/releases/download/0.8.7/xxh-portable-musl-alpine-Linux-x86_64.tar.gz
tar -xzf xxh-portable-musl-alpine-Linux-x86_64.tar.gz
./xxh

Linux AppImage

mkdir ~/xxh && cd ~/xxh
wget -O xxh https://github.com/xxh/xxh/releases/download/0.8.7/xxh-x86_64.AppImage
chmod +x xxh && ./xxh

To run AppImage on Alpine Linux install alpine-pkg-glibc with localedef.

Shells

Currently supported OS for target host is Linux on x86_64.

xxh-shell status xxh-plugins seamless demo
xonsh stable autojump, [+] xxh.xsh demo
zsh stable ohmyzsh, p10k, [+] xxh.zsh demo
fish stable ohmyfish, fisher, userconfig, [+] todo
bash stable ohmybash, [+] xxh.bash demo
osquery beta
fish-appimage alpha
elvish alpha

Search xxh shell on Github or Bitbucket or create your shell entrypoint to use another portable shell.

Prerun plugins

Prerun plugins allow you to bring any portable tools, dotfiles or aliases to xxh session before running shell.

Pinned plugins: core (xxh-sudo, xxh-screen), dotfiles, docker, python, xxh, vim, zoxide. There is cookiecutter template to create prerun plugin.

Usage

Use xxh instead of ssh when connecting to Linux hosts without changing ssh arguments:

xxh <host from ~/.ssh/config>
xxh [ssh arguments] [user@]host[:port] [xxh arguments]
xxh local [xxh arguments]

Common examples (use xxh --help to get info about arguments):

xxh anyhost                                       # Connect to the host
xxh -i id_rsa -p 2222 anyhost                     # Using ssh arguments: port and key
xxh anyhost +s zsh +i                             # Set the shell and install it without yes/no question
xxh anyhost +s xonsh +hhh "~"                     # Set /home/user as home directory (read Q&A)
xxh anyhost +s bash +I xxh-plugin-bash-vim        # Preinstall a plugin
xxh anyhost +if +q                                # Force reinstall xxh on the host in quiet mode
xxh anyhost +hh /tmp/xxh +hhr                     # Upload xxh to /tmp/xxh and remove when disconnecting
source xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh  # Connect in seamless mode with ohmyzsh plugin
xxh local +s xonsh                                # Experimental: build xxh environment inplace and without ssh

For reusing arguments and simplifying xxh usage (like shortening to xxh anyhost) there is a config file.

Why the plus sign for the xxh arguments? The xxh is using the plus sign for the xxh arguments to save the ability to use minus sign for the original ssh arguments. This allows just replace the first two letters in the ssh command to convert it to the xxh command.

Installing xxh packages

xxh [+I xxh-package +I ...] [+L] [+RI xxh-package +RI ...] [+R xxh-package +R ...]

Different ways to set the xxh package source:

xxh +I xxh-shell-example                                         # install from https://github.com/xxh
xxh +I https://github.com/xxh/xxh-shell-example                  # short url for github only, for other sources use examples below or add support
xxh +I https://github.com/xxh/xxh-shell-example/tree/mybranch    # short url for github only, for other sources use examples below or add support
xxh +I xxh-shell-example+git+https://github.com/xxh/xxh-shell-example                 # long url for any git repo
xxh +I xxh-shell-example+git+https://github.com/xxh/xxh-shell-example/tree/mybranch   # github only branch support
xxh +I [email protected]:githubuser/xxh-shell-example.git          # install from private repository using ssh
xxh +I xxh-shell-example+path+/home/user/my-xxh-dev/xxh-shell-example                 # install from local path

Using xxh inplace without ssh connection

This is experimental magic. Please read the text below twice.

If you have shell access on the host or you're in a docker container and you can't ssh to it then you can download and build hermetic xxh environment inplace. The xxh local command works exactly like xxh remote_host and creates a hermetic environment in ~/.xxh by default.

At this time we don't have portable build tools like git, wget, curl, tar and others which could be required by some xxh package build scripts. When running xxh local it is expected that the tools are present on the host.

To run xxh inplace on Linux x86_64 just copy and paste these bash commands:

XH=~/.xxh \
 && XD=https://github.com/xxh/xxh-portable/raw/master/result/xxh-portable-musl-alpine-Linux-x86_64.tar.gz \
 && mkdir -p $XH && cd $XH \
 && ( [[ -x $(command -v curl) ]] && curl -L $XD || wget -O- $XD ) | tar zxf - xxh \
 && echo 'Usage: ./xxh local [+s xonsh/zsh/fish/osquery/bash]'

Next time you're on host just run ~/.xxh/xxh local and you will enter your xxh environment.

Examples of use cases

Python with pip everywhere without installation

Way 1. Using xonsh

xxh anyhost +s xonsh

anyhost> python --version
Python 3.8.2

You'll get python-powered xonsh shell with portable python and pip on the host without any system installations on the host. You can install PyPi packages manually or bring them with you automatically by using xxh-plugin-prerun-dotfiles. Also don't forget about xxh-plugins like zoxide.

Way 2. Using portable python on any xxh shell

xxh +RI xxh-plugin-prerun-python
xxh anyhost +s zsh

anyhost> python --version
Python 3.8.2
anyhost> pip install pandas

Using xxh-plugin-prerun-python you'll get a portable Python AppImage which can be used on a host without python and with any xxh shell.

Using docker on host without root access

Try xxh-plugin-prerun-docker:

xxh +RI xxh-plugin-prerun-docker
xxh anyhost +if

anyhost> xxh-docker-run
anyhost> docker ps                                                                                                                                                                                                                            
CONTAINER ID        IMAGE               COMMAND
anyhost> docker run --rm hello-world | grep Hello
Hello from Docker!
anyhost> xxh-docker-stop

Bring dotfiles to xxh session

There is the xxh-plugin-prerun-dotfiles plugin which creates config files when you go to the host using xxh. You can fork it and create your cozy settings once and forever.

Seamless Oh My Zsh (demo)

source xxh.zsh anyhost +I xxh-plugin-zsh-ohmyzsh +if +q 

This command brings your current Oh My Zsh session theme to the xxh session. If you need more complex settings just fork the xxh-plugin-zsh-ohmyzsh and hack it.

Read host as a table with osquery

$ xxh anyhost +s osquery
osquery> SELECT * FROM users WHERE username='news';
+-----+-----+----------+-------------+-----------------+-------------------+
| uid | gid | username | description | directory       | shell             |
+-----+-----+----------+-------------+-----------------+-------------------+
| 9   | 9   | news     | news        | /var/spool/news | /usr/sbin/nologin |
+-----+-----+----------+-------------+-----------------+-------------------+

All in one portable home

xxh is very agile. You can create your own xxh-shell (the shell part means it has an entrypoint) which can have any portable tools that could help you on the host. Bash xxh-shell is one of these platforms that could be forked and stuffed.

Questions and answers

Development

In the xxh development environment there is full dockerised environment for development, testing and contribution. The process of testing and development is orchestrated by xde tool and is as easy as possible.

We have teams. If you're in a team it does not mean you have an obligation to do something. The main goal of teams is to create groups of passionate people who could help or support solving complex problems. Some people could be an expert in one shell and a newbie in another shell and mutual assistance is the key to xxh evolution. Ask join.

Thanks

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].