Поскольку вы уже используете awk, возможно, самый простой способ - это также провести сравнение с плавающей запятой в рамках этого языка:
MAX_LOAD=10.0
if ! </proc/loadavg awk -vmax_load=$MAX_LOAD '{ exit $1 > max_load }'
then
echo Alert
fi
Обратите внимание, что здесь происходит небольшая хитрость: !
оператор
отменяет проверку. Это необходимо, потому что логическое выражение в
awk и код состояния, который конструкция if
принимает значения, имеют
противоположные значения. <
используется для направления файла / proc / loadavg
на стандартный ввод awk. Вызов awk с -vmax_load = $ MAX_LOAD
устанавливает для переменной awk max_load
значение переменной оболочки
MAX_LOAD
.
В вашем конкретном случае, поскольку ваш MAX_LOAD является целым числом, и поскольку все вы читаете первое число с плавающей запятой из файла, специальным решением будет:
if [ $(</proc/loadavg cut -f1 -d.) -gt $MAX_LOAD ] ...
вызов cut
извлечет целую часть первого числа
в / proc / loadavg
. Однако идея потерпит неудачу, если какое-либо из предположений
, изложенных выше, станет ложным.
Вы используете неизвестную учетную запись:
check_ntlm_password: Authentication for user [pepe] -> [pepe] FAILED with error NT_STATUS_NO_SUCH_USER, authoritative=1
, так что вы имеете доступ к soft
как гость. Вы разрешили гостевой доступ в Samba, но разрешения в файловой системе, похоже, не настроены для этого.
По умолчанию гостевой пользователь — nobody
, поэтому вам необходимо установить права доступа к файловой системе, чтобы разрешить ему доступ. Или измените способ доступа к общему ресурсу.
Судя по информации, добавленной в комментариях, нам нужно более подробное решение. На данный момент вы монтируете файловую систему NTFS с явным владельцем -, по сути рассматривая ее владельцев как файловую систему vFAT. Но этот владелец не соответствует учетной записи, которую вы определили через Samba для доступа к файловой системе, поэтому учетные записи Samba не могут получить доступ к файловой системе. Либо они должны совпадать, либо вам нужно использовать разрешения файловой системы NTFS и удалить право собственности на принудительное монтирование.
Давайте пойдем по пути, который требует меньшего количества изменений в вашей системе. Это подход для домашних -пользователей, а не для многих -пользователей ("корпоративный" )подход.
Оставьте монтирование NTFS без изменений, чтобы вы продолжали принудительно устанавливать owner=1000, group=1000.
Сообщите Samba, что аутентифицированные пользователи должны рассматриваться как owner=1000, group=1000 при доступе к соответствующему общему ресурсу, включив директиву force user
:
[global]
...
security = user
map to guest = bad user # Use "guest" account for unknown users
; guest account = nobody # Implicit default unless you override it
[soft]
path = /media/SYSTEM/soft
read only = no
writable = yes
browsable = yes
guest ok = yes # Allow unknown users to access this share
force user = 1000 # Samba authenticates, but filesystem access is as uid=1000
Обратите внимание, что действительному пользователю с неверным паролем будет отказано в доступе, но недействительному пользователю (с любым паролем )доступ будет разрешен. Это то, что вы определили здесь с вашими map to guest = bad user
и guest ok = yes
. Я настоятельно рекомендую вам изменить один из них на map to guest = never
или guest ok = no
.
В вашем /etc/fstab
я бы посоветовал вам рассмотреть возможность удаления настроек uid
, gid
и umask
для файловой системы NTFS, так как вы можете удалить настройки force user
и force group
в Samba. Но у вас могут быть веские причины для этих значений, поэтому я не изменил их в своем ответе.