解析 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-upgrade在使用 Ubuntu 18.04.1 LTS后我遇到了完全相同的问题。之前所有快乐上涨的股票都以这个丑陋的结局结束

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

nslookup解析正确,syslog没有strace显示任何内容。

最后,问题出在域名以及女巫将 mDNS Avahi/Bonjour 守护进程置于dns 查找之前.local的更改(可能是在版本升级期间) 。/etc/nsswitch.confmdns4_minimal

所以在我更改订单后问题就解决了

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
    
  • 如果网络在您的控制之下,请为 cifs 服务器的 IP 进行 DHCP 保留。

答案3

您可以通过以下方式获取IPnmblookup NAME | head -n 1 | cut -d ' ' -f 1

将其放入变量NAME_IPNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"

相关内容