error occured check
This commit is contained in:
parent
802556e778
commit
2ef62d5c4a
45
script
45
script
@ -1,11 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Обработка аргументов через getopts
|
|
||||||
LOG_FILE=""
|
LOG_FILE=""
|
||||||
ERR_FILE=""
|
ERR_FILE=""
|
||||||
SHOW_USERS=0
|
SHOW_USERS=0
|
||||||
SHOW_PROCESSES=0
|
SHOW_PROCESSES=0
|
||||||
SHOW_HELP=0
|
SHOW_HELP=0
|
||||||
|
ERROR_OCCURRED=0
|
||||||
|
|
||||||
# Функция отображения справки
|
# Функция отображения справки
|
||||||
display_help() {
|
display_help() {
|
||||||
@ -16,7 +16,6 @@ display_help() {
|
|||||||
echo " -l, --log PATH Redirect output to a specified file"
|
echo " -l, --log PATH Redirect output to a specified file"
|
||||||
echo " -e, --errors PATH Redirect error output to a specified file"
|
echo " -e, --errors PATH Redirect error output to a specified file"
|
||||||
echo " -h, --help Show this message and terminate"
|
echo " -h, --help Show this message and terminate"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Проверка доступности пути
|
# Проверка доступности пути
|
||||||
@ -30,8 +29,6 @@ check_path() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Ручная обработка аргументов для раннего перенаправления
|
# Ручная обработка аргументов для раннего перенаправления
|
||||||
for ((i = 1; i <= $#; i++)); do
|
for ((i = 1; i <= $#; i++)); do
|
||||||
if [[ ${!i} == "-e" || ${!i} == "--errors" ]]; then
|
if [[ ${!i} == "-e" || ${!i} == "--errors" ]]; then
|
||||||
@ -46,16 +43,17 @@ if [[ -n "$ERR_FILE" ]]; then
|
|||||||
if ! check_path "$ERR_FILE"; then
|
if ! check_path "$ERR_FILE"; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
#echo "Redirecting errors to $ERR_FILE" >&2
|
|
||||||
exec 2>"$ERR_FILE"
|
exec 2>"$ERR_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Парсинг аргументов через getopt
|
# Парсинг аргументов через getopt с фиксацией ошибок
|
||||||
PARSED=$(getopt -o hupl:e: --long help,users,processes,log:,errors: -- "$@" 2>&1)
|
PARSED=$(getopt -o hupl:e: --long help,users,processes,log:,errors: -- "$@" 2>&1)
|
||||||
if [[ $? -ne 0 ]]; then
|
GETOPT_STATUS=$?
|
||||||
# Если getopt вернул ошибку, перенаправляем её в stderr
|
|
||||||
|
if [[ $GETOPT_STATUS -ne 0 ]]; then
|
||||||
|
ERROR_OCCURRED=1
|
||||||
echo "$PARSED" >&2
|
echo "$PARSED" >&2
|
||||||
display_help
|
display_help >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -90,20 +88,21 @@ while true; do
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
ERROR_OCCURRED=1
|
||||||
echo "Invalid option: $1" >&2
|
echo "Invalid option: $1" >&2
|
||||||
display_help
|
display_help >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# Настройка вывода в лог-файлы
|
# Настройка вывода в лог-файл
|
||||||
if [[ -n "$LOG_FILE" ]]; then
|
if [[ -n "$LOG_FILE" ]]; then
|
||||||
if ! check_path "$LOG_FILE"; then
|
if ! check_path "$LOG_FILE"; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
|
||||||
exec 1>"$LOG_FILE"
|
|
||||||
fi
|
fi
|
||||||
|
exec 1>"$LOG_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
# Основная логика
|
# Основная логика
|
||||||
main() {
|
main() {
|
||||||
@ -112,12 +111,11 @@ main() {
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Выполнение запрошенных действий
|
# Выполнение запрошенных действий
|
||||||
if [[ $SHOW_USERS -eq 1 && $SHOW_PROCESSES -eq 1 ]]; then
|
if [[ $SHOW_USERS -eq 1 && $SHOW_PROCESSES -eq 1 ]]; then
|
||||||
|
ERROR_OCCURRED=1
|
||||||
echo "Error: Cannot use both -u and -p options simultaneously." >&2
|
echo "Error: Cannot use both -u and -p options simultaneously." >&2
|
||||||
display_help
|
display_help >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -127,18 +125,21 @@ main() {
|
|||||||
elif [[ $SHOW_PROCESSES -eq 1 ]]; then
|
elif [[ $SHOW_PROCESSES -eq 1 ]]; then
|
||||||
list_processes
|
list_processes
|
||||||
else
|
else
|
||||||
|
ERROR_OCCURRED=1
|
||||||
echo "Error: No action specified." >&2
|
echo "Error: No action specified." >&2
|
||||||
display_help
|
display_help >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ $ERROR_OCCURRED -eq 0 ]]; then
|
||||||
|
echo "Execution completed successfully. No errors occurred." >&2
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Функция для вывода списка пользователей
|
|
||||||
list_users() {
|
list_users() {
|
||||||
awk -F: '{print $1, $6}' /etc/passwd | sort
|
awk -F: '{print $1, $6}' /etc/passwd | sort
|
||||||
}
|
}
|
||||||
|
|
||||||
# Функция для вывода списка процессов
|
|
||||||
list_processes() {
|
list_processes() {
|
||||||
ps -eo pid,comm --sort=pid
|
ps -eo pid,comm --sort=pid
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user