fix -- issue
This commit is contained in:
parent
3a3b52fc69
commit
802556e778
79
script
79
script
@ -30,19 +30,11 @@ check_path() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Функция для вывода списка пользователей
|
||||
list_users() {
|
||||
awk -F: '{print $1, $6}' /etc/passwd | sort
|
||||
}
|
||||
|
||||
# Функция для вывода списка процессов
|
||||
list_processes() {
|
||||
ps -eo pid,comm --sort=pid
|
||||
}
|
||||
|
||||
# Ручная обработка аргументов для раннего перенаправления
|
||||
for ((i = 1; i <= $#; i++)); do
|
||||
if [[ ${!i} == "-e" ]]; then
|
||||
if [[ ${!i} == "-e" || ${!i} == "--errors" ]]; then
|
||||
next=$((i + 1))
|
||||
ERR_FILE=${!next}
|
||||
break
|
||||
@ -58,39 +50,53 @@ if [[ -n "$ERR_FILE" ]]; then
|
||||
exec 2>"$ERR_FILE"
|
||||
fi
|
||||
|
||||
# Парсинг аргументов через getopts
|
||||
while getopts ":hupl:e:" opt; do
|
||||
case "$opt" in
|
||||
h)
|
||||
# Парсинг аргументов через getopt
|
||||
PARSED=$(getopt -o hupl:e: --long help,users,processes,log:,errors: -- "$@" 2>&1)
|
||||
if [[ $? -ne 0 ]]; then
|
||||
# Если getopt вернул ошибку, перенаправляем её в stderr
|
||||
echo "$PARSED" >&2
|
||||
display_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Преобразование параметров после обработки getopt
|
||||
eval set -- "$PARSED"
|
||||
|
||||
# Обработка аргументов
|
||||
while true; do
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
SHOW_HELP=1
|
||||
shift
|
||||
;;
|
||||
u)
|
||||
-u|--users)
|
||||
SHOW_USERS=1
|
||||
shift
|
||||
;;
|
||||
p)
|
||||
-p|--processes)
|
||||
SHOW_PROCESSES=1
|
||||
shift
|
||||
;;
|
||||
l)
|
||||
LOG_FILE="$OPTARG"
|
||||
-l|--log)
|
||||
LOG_FILE="$2"
|
||||
shift 2
|
||||
;;
|
||||
e)
|
||||
ERR_FILE="$OPTARG"
|
||||
-e|--errors)
|
||||
ERR_FILE="$2"
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
echo "Invalid option: $1" >&2
|
||||
display_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Основная логика
|
||||
main() {
|
||||
if [[ $SHOW_HELP -eq 1 ]]; then
|
||||
display_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Настройка вывода в лог-файлы
|
||||
if [[ -n "$LOG_FILE" ]]; then
|
||||
if ! check_path "$LOG_FILE"; then
|
||||
@ -99,6 +105,15 @@ main() {
|
||||
exec 1>"$LOG_FILE"
|
||||
fi
|
||||
|
||||
# Основная логика
|
||||
main() {
|
||||
if [[ $SHOW_HELP -eq 1 ]]; then
|
||||
display_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Выполнение запрошенных действий
|
||||
if [[ $SHOW_USERS -eq 1 && $SHOW_PROCESSES -eq 1 ]]; then
|
||||
echo "Error: Cannot use both -u and -p options simultaneously." >&2
|
||||
@ -118,5 +133,15 @@ main() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Функция для вывода списка пользователей
|
||||
list_users() {
|
||||
awk -F: '{print $1, $6}' /etc/passwd | sort
|
||||
}
|
||||
|
||||
# Функция для вывода списка процессов
|
||||
list_processes() {
|
||||
ps -eo pid,comm --sort=pid
|
||||
}
|
||||
|
||||
# Вызов основной функции
|
||||
main
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user