У меня есть скрипт, который монтирует все общие ресурсы с моего компьютера 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-upgrade
Ubuntu 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)"