Разрешить netbios-name и передать его в mount.cifs в скрипте

Разрешить netbios-name и передать его в mount.cifs в скрипте

У меня есть скрипт, который монтирует все общие ресурсы с моего компьютера Windows. В основном это:

mount.cifs //192.168.0.7/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,vers=3.0

..примерно на 10 строк.

Проблема в том, что моя сеть — DHCP. Поэтому время от времени мне приходится менять IP в этом скрипте.

Раньше скрипт работал следующим образом:

mount.cifs //OTHERPC/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,ver=3.0

Но в какой-то момент начала выдавать ошибку:

mount error: could not resolve address for OTHERPC: Unknown error

Однако Nautilus без проблем распознает имя.

Есть ли способ разрешить IP-адрес, сохранить его в переменной, а затем использовать mount.cifs с //$variable вместо IP-адреса непосредственно в скрипте?

Спасибо

решение1

У меня была точно такая же проблема после do-release-upgradeUbuntu 18.04.1 LTS. Все шары, которые успешно монтировались до этого, заканчивались этим уродливым

mount error: could not resolve address for server.domain.local: Unknown error

nslookupрешалось правильно syslogи straceничего не показывало.

В конце концов, проблема была в .localдомене вместе с изменением (возможно, во время обновления релиза) в том, /etc/nsswitch.confчто демон mDNS Avahi/Bonjour был помещен mdns4_minimalперед DNS-поиском.

Итак, проблема была решена после того, как я изменил заказ с

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns 

к

hosts:          files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return]

Я не могу вспомнить все полезные ссылки, но эта определенно помогла:https://askubuntu.com/a/853284/810573

решение2

Я вижу два варианта, которые вам следует попробовать, прежде чем возиться с сохранением IP в переменной. (Кроме того, если у серверов еще нет имени хоста, как вы узнаете новый IP?)

  • Попробуйте выполнить монтирование с именем хоста вместо IP, если это динамический IP.

    mount.cifs //cifs.server.com/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,vers=3.0
    
  • Если сеть находится под вашим контролем, выполните резервирование DHCP для IP-адресов серверов CIFS.

решение3

Вы можете получить IP с помощьюnmblookup NAME | head -n 1 | cut -d ' ' -f 1

Поместите это в переменную NAME_IPс помощьюNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"

Связанный контент