Eu tenho um script que monta todos os compartilhamentos do meu computador Windows. É basicamente:
mount.cifs //192.168.0.7/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,vers=3.0
..por cerca de 10 linhas.
O problema é que minha rede é DHCP. Então, de vez em quando, tenho que alterar o IP neste script.
O script costumava funcionar desta forma:
mount.cifs //OTHERPC/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,ver=3.0
Mas em algum momento começou a produzir o erro:
mount error: could not resolve address for OTHERPC: Unknown error
No entanto, o Nautilus resolve o nome sem problemas.
Existe uma maneira de resolver o IP, armazená-lo em uma variável e depois usar mount.cifs com //$variable em vez do IP diretamente no script?
Obrigado
Responder1
Eu tive exatamente o mesmo problema depois do do-release-upgrade
Ubuntu 18.04.1 LTS. Todos os compartilhamentos que subiram alegremente antes terminaram com esse feio
mount error: could not resolve address for server.domain.local: Unknown error
nslookup
estava resolvendo corretamente syslog
e strace
não mostrou nada.
No final, o problema era o .local
domínio junto com uma mudança (possivelmente durante a atualização do lançamento) na /etc/nsswitch.conf
qual colocou o daemon mDNS Avahi/Bonjour mdns4_minimal
antes da pesquisa de DNS.
Então o problema foi resolvido depois que mudei o pedido de
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
para
hosts: files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return]
Não me lembro de todos os links úteis, mas este certamente funcionou:https://askubuntu.com/a/853284/810573
Responder2
Vejo duas opções que você deve tentar antes de começar a armazenar o IP em uma variável. (Além disso, a menos que os servidores já tenham um nome de host, como você descobrirá o novo IP?)
Tente montar com hostname em vez de IP, se for um IP dinâmico.
mount.cifs //cifs.server.com/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,vers=3.0
- Se a rede estiver sob seu controle, faça reservas de DHCP para o IP dos servidores cifs.
Responder3
Você pode obter o IP comnmblookup NAME | head -n 1 | cut -d ' ' -f 1
Coloque-o na variável NAME_IP
comNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"