setfacl-R не работает над Cygwin

Мы создали сценарий для процесса полной проверки, который решает ошибку : системный вызов отправляет предупреждения на stderr: error: unsupported option (синтаксис BSD) .

Пожалуйста, найдите сценарий ниже.

 #!/bin/bash
#
# Script to check Process usage on Linux. Ignores Process used by disk cache.
#
# Requires the bc command
#                $1 $2 $3 $4
# ./check_Process -w 85 -c 95
print_help() {
    echo "Usage:"
    echo "[-w] Warning level as a percentage"
    echo "[-c] Critical level as a percentage"
    exit 0
}

while test -n "$1"; do
    case "$1" in
        --help|-h)
            print_help
            exit 0
            ;;
        -w)
            warn_level=$2
            shift
            ;;
        -c)
            critical_level=$2
            shift
            ;;
        *)
            echo "Unknown Argument: $1"
            print_help
            exit 3
            ;;
    esac
    shift
done

if [ "$warn_level" == "" ]; then
    echo "No Warning Level Specified"
    print_help
    exit 3;
fi

if [ "$critical_level" == "" ]; then
    echo "No Critical Level Specified"
    print_help
    exit 3;
fi

count=`ps -ef | wc -l`

###################

if [ "$count" -lt "$warn_level" ]; then
    echo "Process OK:$count | 'Process' =$count;$warn_level;$critical_level"
    exit 0;
elif [ "$count" -ge "$warn_level" ] && [ "$count" -le "$critical_level" ]; then
    echo "Process WARNING: $count | 'Process'=$count;$warn_level;$critical_level"
    exit 1;
elif [ "$count" -gt "$critical_level" ]; then
    echo "Process CRITICAL: $count | 'Process'=$count;$warn_level;$critical_level"
    exit 2;
fi
0
19.09.2018, 07:03
2 ответа

Чтобы повторить команду для любого файла и каталога, содержащегося в каталоге, вы можете использовать findи его -execпараметр

find my_dir -exec setfacl -m u::rwx {} \;
1
28.01.2020, 02:42

Это было проверено.

outfile="permissions.out"; echo | tee -a "${outfile}"; echo "For directory:" | tee -a "${outfile}"; echo "$(pwd)" | tee -a "${outfile}"; find. -print0 | xargs -I'{}' -0 bash -c 'echo; echo " Changes for {}"; echo "Trying to change the group"; chgrp '"'"'my_group'"'"' "{}"; if [ -f "{}" -o -d "{}" ]; then echo; echo "User to rwx"; setfacl -m u::rwx "{}"; setfacl -m u:bballdave025:rwx "{}"; echo "User-default to rwx"; if [ -d "{}" ]; then setfacl -m d:u::rwx "{}"; setfacl -m d:u:bballdave025:rwx "{}"; else echo "  Not a directory, no defaults."; fi; echo "Group to rwx"; setfacl -m g::rwx "{}"; echo "Group-default to rwx"; if [ -d "{}" ]; then setfacl -m d:g::rwx "{}"; setfacl -m d:g:my_group:rwx "{}"; else echo "  Not a directory, no defaults."; fi; echo "Other to r-x"; setfacl -m o:r-x "{}"; echo "Other-default to r-x"; if [ -d "{}" ]; then setfacl -m d:o::r-x "{}"; else echo "  Not a directory, no defaults"; fi; else echo "  Not a file nor a directory, probably a permissions error."; fi; echo "Changing executable bit"; chmod a+x "{}"; echo -e "\nDone with {}\n\n\n";' | tee -a "${outfile}"

Или как что-то более читабельное, что может быть сценарием, но, скорее всего, это просто начало лучшего сценария. (Это не проверялось.)

#!/bin/bash

find $1 -print0 | \
xargs -I'{}' -0 bash -c \
'echo; '\
'echo " Changes for {}"; '\
'echo "Trying to change the group"; '\
'chgrp '"'"'my_group'"'"' "{}"; '\
'if [ -f "{}" -o -d "{}" ]; then '\
'  echo; '\
'  echo "User to rwx"; '\
'  setfacl -m u::rwx "{}"; '\
'  setfacl -m u:bballdave025:rwx "{}"; '\
'  echo "User-default to rwx"; '\
'  if [ -d "{}" ]; then '\
'    setfacl -m d:u::rwx "{}"; '\
'    setfacl -m d:u:bballdave025:rwx "{}"; '\
'  else '\
'    echo "  Not a directory, no defaults."; '\
'  fi; '\
'  echo "Group to rwx"; '\
'  setfacl -m g::rwx "{}"; '\
'  echo "Group-default to rwx"; '\
'  if [ -d "{}" ]; then '\
'    setfacl -m d:g::rwx "{}"; '\
'    setfacl -m d:g:my_group:rwx "{}"; '\
'  else '\
'    echo "  Not a directory, no defaults."; '\
'  fi; '\
'  echo "Other to r-x"; '\
'  setfacl -m o:r-x "{}"; '\
'  echo "Other-default to r-x"; '\
'  if [ -d "{}" ]; then '\
'    setfacl -m d:o::r-x "{}"; '\
'  else '
'    echo "  Not a directory, no defaults"; '\
'  fi; '\
'else '\
'  echo "  Not a file nor a directory, probably a permissions error."; '\
'fi; '\
'echo "Changing executable bit"; '\
'chmod a+x "{}"; '\
'echo -e "\nDone with {}\n\n\n";'
0
28.01.2020, 02:42

Теги

Похожие вопросы