Resolva o nome netbios e passe-o para mount.cifs no script

Resolva o nome netbios e passe-o para mount.cifs no script

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-upgradeUbuntu 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

nslookupestava resolvendo corretamente sysloge stracenão mostrou nada.

No final, o problema era o .localdomínio junto com uma mudança (possivelmente durante a atualização do lançamento) na /etc/nsswitch.confqual colocou o daemon mDNS Avahi/Bonjour mdns4_minimalantes 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_IPcomNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"

informação relacionada