2 changed files with 88 additions and 27 deletions
@ -0,0 +1,61 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
|
||||
|
# CONSTANTS |
||||
|
|
||||
|
BASEDIR=$(dirname "$0") |
||||
|
CONTAINER='' |
||||
|
USER='' |
||||
|
|
||||
|
# FUNCTIONS |
||||
|
|
||||
|
function usage { |
||||
|
echo "$(basename "$0") <CONTAINER_NAME> [--user|-u USER]" |
||||
|
} |
||||
|
|
||||
|
function parse_options { |
||||
|
while [[ $# -gt 0 ]]; do |
||||
|
case "$1" in |
||||
|
--help | -h) |
||||
|
usage && exit 0 |
||||
|
;; |
||||
|
--user | -u) |
||||
|
shift 1 |
||||
|
[[ -z ${1:-} ]] && >&2 echo 'ERROR: user expected!' && usage && exit 5 |
||||
|
USER="$1" |
||||
|
;; |
||||
|
*) |
||||
|
if [[ -z $CONTAINER ]]; then |
||||
|
CONTAINER=$1 |
||||
|
else |
||||
|
echo >&2 "Unknown option: $1" && usage && exit 2 |
||||
|
fi |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
shift 1 # Move to the next argument |
||||
|
done |
||||
|
[[ -n $CONTAINER ]] || (usage && exit 1) |
||||
|
} |
||||
|
|
||||
|
function incus_su { |
||||
|
incus exec "$CONTAINER" -- su - $1 |
||||
|
} |
||||
|
|
||||
|
function incus_user_exists { |
||||
|
incus exec "$CONTAINER" -- id $1 &> /dev/null |
||||
|
} |
||||
|
|
||||
|
function login { |
||||
|
if [[ -n $USER ]]; then |
||||
|
incus_su $USER |
||||
|
else |
||||
|
local current=$(whoami) |
||||
|
incus_user_exists $current && incus_su $current || incus_su root |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
# MAIN |
||||
|
|
||||
|
set -Eue |
||||
|
parse_options $* |
||||
|
login |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue