Add the "hopon" script.
This commit is contained in:
parent
3f5043784b
commit
cee33dacef
4 changed files with 78 additions and 0 deletions
22
hopon/010_hopon_completion.bash
Normal file
22
hopon/010_hopon_completion.bash
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#/usr/bin/env bash
|
||||||
|
|
||||||
|
_hopon_completions () {
|
||||||
|
# Check to see if a container/VM manager is installed.
|
||||||
|
local vm_manager=""
|
||||||
|
if [ -x "$(command -v lxc)" ]; then
|
||||||
|
vm_manager="lxc"
|
||||||
|
elif [ -x "$(command -v incus)" ]; then
|
||||||
|
vm_manager="incus"
|
||||||
|
else
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We only want one copy of the found parameter.
|
||||||
|
if [ "${#COMP_WORDS[@]}" != "2" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMPREPLY=($(compgen -W "$($vm_manager list -c n -f csv)" -- "${COMP_WORDS[1]}"))
|
||||||
|
}
|
||||||
|
|
||||||
|
complete -F _hopon_completions hopon
|
18
hopon/README.md
Normal file
18
hopon/README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# hopon
|
||||||
|
|
||||||
|
A simple bash script for quickly accessing a linux container/VM. Has tab-completion enabled for Bash shells and can detect different container/VM managers.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
* Bash
|
||||||
|
* LXD/LXC or Incus
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
# hopon <container_or_vm_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Run `sudo ./install.sh`
|
34
hopon/hopon
Normal file
34
hopon/hopon
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#/usr/bin/env bash
|
||||||
|
|
||||||
|
# Check for the first parameter.
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "No container/VM name specified."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check to see if a container/VM manager is installed.
|
||||||
|
if [ -x "$(command -v lxc)"] ]; then
|
||||||
|
vm_manager="lxc"
|
||||||
|
elif [ -x "$(command -v incus)"] ]; then
|
||||||
|
vm_manager="incus"
|
||||||
|
else
|
||||||
|
echo "No suitable container/VM manager detected."
|
||||||
|
echo "Make sure you have \"lxc\" or \"incus\" installed."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Look for the specified container/VM.
|
||||||
|
exists=$("$vm_manager" list -c n -f csv | grep ^$1 -- 2>/dev/null)
|
||||||
|
|
||||||
|
if [ -n "$exists" ]; then
|
||||||
|
# The shell will be different depending on the Linux distro used.
|
||||||
|
IMAGEOS=$("$vm_manager" config get "$1" image.os)
|
||||||
|
if [ $IMAGEOS = "Alpine" ]; then
|
||||||
|
"$vm_manager" exec "$1" -- /bin/ash
|
||||||
|
else
|
||||||
|
"$vm_manager" exec "$1" -- /bin/bash
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Container/VM with name \"$1\" does not exist."
|
||||||
|
exit 2
|
||||||
|
fi
|
4
hopon/install.sh
Normal file
4
hopon/install.sh
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#/bin/sh
|
||||||
|
|
||||||
|
install -m 755 hopon /usr/bin
|
||||||
|
install -m 755 010_hopon_completion.bash /etc/bash_completion.d
|
Loading…
Reference in a new issue