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