Во-первых, я предполагаю, что отсутствие места перед =
в [ $trapaddress= "10.10.10.1" ]
является опечаткой. Если бы это было не так, вы бы немедленно получили сообщение об ошибке [
.
Во-вторых, у вас проблема в связи между операторами &&
и ||
. В оболочке они обрабатываются слева направо, поэтому ваше условие не делает то, что вы хотите. На самом деле это:
if cond1 && cond2 || cond3 && cond4; then...
больше похоже на это:
if ((cond1 && cond2) || cond3) && cond4; then...
Примечательно, что для этого требуется cond4 . Вы хотите либо
if (... &&...) || (... &&... ); then...
или
if [[... &&... ||... &&... ]]; then...
(В пределах [[.. ]]
они действительно имеют обычный относительный приоритет.)
Если вы хотите, вы можете объединить переменные, чтобы упростить сравнение, предполагая, что они никогда не содержат, например. косая черта:
if [[ "$traphost/$trapaddress" = "trapserver1/10.10.10.1" ||
"$traphost/$trapaddress" = "trapserver2/10.10.10.2" ]]; then...
Обратите внимание, что вы хотите заключать переменные в кавычки, чтобы избежать разделения слов, см. Когда необходимо двойное -цитирование?
systemd
будет использовать содержимое традиционного файла /etc/fstab
для динамического создания «юнитов монтирования». Вам нужно будет проверить статус соответствующего модуля монтирования, чтобы понять, почему он не работает :, запустите systemctl status Share.mount
.
Наиболее вероятная причина заключается в том, что разрешение имен NetBIOS недоступно (, т.е. Samba nmbd
еще не запущена ), когда происходит попытка монтирования, как предложено в соответствующей странице Debian Wiki .
См. man systemd.mount
специальные параметры монтирования systemd -, которые вы можете использовать в /etc/fstab
. Например, вы можете использовать x-systemd.automount
в качестве обходного пути :, systemd должен автоматически монтировать файловую систему при первой попытке ее использования.
Также проверьте systemctl status network-online.target
:, если у вас статическая конфигурация сети,система может быть не в состоянии определить, когда сетевое соединение правильно подключено, и в результате пытаться смонтировать сетевые файловые системы слишком рано. Проверьте новые настройки WAIT_ONLINE_IFACE=
и WAIT_ONLINE_METHOD=
в файле конфигурации /etc/default/networking
, чтобы узнать о возможных способах повышения надежности онлайн-обнаружения в сети.
Кроме того, чтобы отключить диалоговое сообщение, вы должны добавить vers=N.N
в параметры монтирования. См. man mount.cifs
для получения списка доступных значений N.N
и соответствующих версий Windows. Если сервер не ниже Windows Server 2008R2, вы можете использовать vers=2.1
.
Старая версия протокола vers=1.0
была уязвима для атаки печально известной программы-вымогателя WannaCry в 2017 году, и ее нельзя было исправить, поэтому все ОС до -до -даты должны быть запрограммированы на ненависть эту версию и не использовать ее, если об этом специально не попросят. (Если ваш сервер по-прежнему не поддерживает ни одну из новых версий протокола, его необходимо обновить.)
У меня только что была эта проблема с монтированием NFS в fstab
. Оказалось, что при загрузке были попытки монтирования, когда сеть еще не была готова.
Простая установка network-manager
решила проблему.
Публикую это здесь, надеюсь, это кому-нибудь поможет. У меня ушло 4+ часа.
В Debian 10 мне нужно было запустить:
systemctl enable systemd-networkd-wait-online.service
Я использую параметры fstab:
NFS-Server-IP:/FolderName /mnt/FolderName nfs rw,bg,intr,hard,timeo=600,nfsvers=3 0 0