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 を解決し、それを変数に保存し、スクリプト内で直接 IP を使用する代わりに、//$variable で mount.cifs を使用する方法はありますか?

ありがとう

答え1

Ubuntu 18.04.1 LTSにアップグレードした後、まったく同じ問題が発生しましたdo-release-upgrade。以前は問題なくマウントされていた共有がすべてこの醜い

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

nslookup正しく解決され、syslogstraceも表示されませんでした。

結局、問題は.localドメインと、 DNS ルックアップの前に/etc/nsswitch.confmDNS Avahi/Bonjour デーモンを配置する変更 (おそらくリリース アップグレード中) でしたmdns4_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 を変数に保存する前に試すべきオプションが 2 つあります。(さらに、サーバーにすでにホスト名がない限り、新しい 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

IPを取得するにはnmblookup NAME | head -n 1 | cut -d ' ' -f 1

それを変数に入れNAME_IPNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"

関連情報