fixed terminate/kill; improved some things

This commit is contained in:
Michael Krayer 2021-04-19 20:11:20 +02:00
parent 06fb9227bf
commit 5ec382f839
1 changed files with 14 additions and 68 deletions

82
session
View File

@ -42,6 +42,8 @@ EXIT_ALREADY_IN_SESSION=5
EXIT_NOT_ATTACHED=6 EXIT_NOT_ATTACHED=6
EXIT_CONFIG_NOT_GENERATED=7 EXIT_CONFIG_NOT_GENERATED=7
EXIT_INVALID_CHOICE=8 EXIT_INVALID_CHOICE=8
EXIT_ALREADY_LOGGING=9
EXIT_NOT_LOGGING=10
## Functions ## Functions
print_help() { print_help() {
@ -90,24 +92,7 @@ print_help() {
} }
get_available_sessions() { get_available_sessions() {
local socket_paths=(${SOCKET_PREFIX}*${SOCKET_SUFFIX}) socket_names=($(abduco | tail +2 | awk '{ print $(NF) }'))
local socket_names=()
for spath in ${socket_paths[@]}; do
sname=${spath##${SOCKET_PREFIX}}
sname=${sname%%${SOCKET_SUFFIX}}
socket_names+=("${sname}")
done
echo ${socket_names[@]}
}
get_available_logs() {
local log_paths=(${SOCKET_PREFIX}*${LOG_SUFFIX})
local socket_names=()
for spath in ${log_paths[@]}; do
sname=${spath##${SOCKET_PREFIX}}
sname=${sname%%${LOG_SUFFIX}}
socket_names+=("${sname}")
done
echo ${socket_names[@]} echo ${socket_names[@]}
} }
@ -128,7 +113,7 @@ get_fifo_path() {
get_session_pid() { get_session_pid() {
local session_name=$1 local session_name=$1
fuser $(get_session_path $session_name) 2> /dev/null abduco | tail +2 | grep $session_name | awk '{ print $(NF-1) }'
} }
is_existing_session_path() { is_existing_session_path() {
@ -257,27 +242,24 @@ case $mode in
session_name=$1 session_name=$1
exit_if_existing_session $session_name exit_if_existing_session $session_name
fi fi
session_path=$(get_session_path $session_name) echo "[new session '$session_name']"
CMD="abduco -n $session_name /bin/bash" CMD="abduco -n $session_name /bin/bash"
#echo $CMD #echo $CMD
echo "[new session '$session_name']"
eval $CMD eval $CMD
# if [[ "${config[log_session]}" == "yes" ]]; then if [[ "${config[log_session]}" == "yes" ]]; then
# log_path=$(get_log_path $session_name) CMD="echo 'session log on' | abduco -p $session_name"
# touch $log_path && chmod 600 $log_path eval $CMD
# abduco -r -S -q -l -a $session_name > $log_path & fi
# #disown
# fi
CMD="abduco -a -S -e ${config[detach_char]} $session_name" CMD="abduco -a -S -e ${config[detach_char]} $session_name"
eval $CMD eval $CMD
exit $EXITSUCCESS exit $EXITSUCCESS
;; ;;
"log") "log")
case "$1" in case "$1" in
"start"|"stop");; "on"|"off");;
*) *)
echo >&2 "'$(basename $0) log' accepts:" echo >&2 "'$(basename $0) log' accepts:"
echo >&2 " start, stop" echo >&2 " on, off"
exit $EXIT_INVALID_SUBMODE exit $EXIT_INVALID_SUBMODE
;; ;;
esac esac
@ -291,7 +273,7 @@ case $mode in
log_path=$(get_log_path $session_name) log_path=$(get_log_path $session_name)
fifo_path=$(get_fifo_path $session_name) fifo_path=$(get_fifo_path $session_name)
case "$1" in case "$1" in
"start") "on")
if is_logging $session_name; then if is_logging $session_name; then
echo >&2 "Already logging session $session_name." echo >&2 "Already logging session $session_name."
exit $EXIT_ALREADY_LOGGING exit $EXIT_ALREADY_LOGGING
@ -300,7 +282,7 @@ case $mode in
mkfifo $fifo_path mkfifo $fifo_path
cat $fifo_path | abduco -r -S -a $session_name &> $log_path && rm $log_path $fifo_path & disown cat $fifo_path | abduco -r -S -a $session_name &> $log_path && rm $log_path $fifo_path & disown
;; ;;
"stop") "off")
if ! is_logging $session_name; then if ! is_logging $session_name; then
echo 2> "Currently not logging session $session_name." echo 2> "Currently not logging session $session_name."
exit $EXIT_NOT_LOGGING exit $EXIT_NOT_LOGGING
@ -359,16 +341,7 @@ case $mode in
exit $EXIT_SUCCESS exit $EXIT_SUCCESS
;; ;;
"info"|"i") "info"|"i")
# If no session name specified: info for all sessions abduco
if [ -z "$1" ]; then
session_name=($(get_available_sessions))
else
session_name=$1
exit_if_nonexisting_session $session_name
fi
for sname in ${session_name[@]}; do
print_session_info $sname
done
exit $EXIT_SUCCESS exit $EXIT_SUCCESS
;; ;;
"help"|"h") "help"|"h")
@ -390,33 +363,6 @@ case $mode in
done done
exit $EXIT_SUCCESS exit $EXIT_SUCCESS
;; ;;
"clean")
case "$1" in
"log")
logs_avail=($(get_available_logs))
for sname in ${logs_avail[@]}; do
if ! is_existing_session_name $sname; then
rm $(get_log_path $sname)
fi
done
exit $EXIT_SUCCESS
;;
"socket")
sessions_avail=($(get_available_sessions))
for sname in ${sessions_avail[@]}; do
PID=$(get_session_pid $sname)
if [ -z "$PID" ]; then
rm $(get_session_path $sname)
fi
done
exit $EXIT_SUCCESS
;;
*)
echo >&2 "'$(basename $0) clean' accepts:"
echo >&2 " log, socket"
exit $EXIT_INVALID_SUBMODE
esac
;;
*) *)
echo >&2 "Invalid mode: ${mode}" echo >&2 "Invalid mode: ${mode}"
print_help print_help