NetBIOS-Namen auflösen und im Skript an mount.cifs übergeben

NetBIOS-Namen auflösen und im Skript an mount.cifs übergeben

Ich habe ein Skript, das alle Freigaben von meinem Windows-Computer mountet. Im Wesentlichen ist es:

mount.cifs //192.168.0.7/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,vers=3.0

..für ungefähr 10 Zeilen.

Das Problem ist, dass mein Netzwerk DHCP ist. Daher muss ich ab und zu die IP in diesem Skript ändern.

Das Skript funktionierte früher folgendermaßen:

mount.cifs //OTHERPC/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,ver=3.0

Aber irgendwann begann der folgende Fehler:

mount error: could not resolve address for OTHERPC: Unknown error

Nautilus löst den Namen jedoch problemlos auf.

Gibt es eine Möglichkeit, die IP aufzulösen, in einer Variablen zu speichern und dann mount.cifs mit //$variable anstelle der IP direkt im Skript zu verwenden?

Danke

Antwort1

Ich hatte genau das gleiche Problem nach einem Wechsel do-release-upgradezu Ubuntu 18.04.1 LTS. Alle zuvor problemlos gemounteten Freigaben endeten mit diesem hässlichen

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

nslookupwurde korrekt aufgelöst syslogund stracehat nichts angezeigt.

Letztendlich lag das Problem an der .localDomäne sowie an einer Änderung (möglicherweise während des Release-Upgrades) in der /etc/nsswitch.confInstanz, die den mDNS Avahi/Bonjour-Daemon mdns4_minimalvor die DNS-Suche setzte.

Das Problem wurde also gelöst, nachdem ich die Reihenfolge geändert hatte von

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns 

Zu

hosts:          files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return]

Ich kann mich nicht an alle hilfreichen Links erinnern, aber dieser hat auf jeden Fall geholfen:https://askubuntu.com/a/853284/810573

Antwort2

Ich sehe zwei Optionen, die Sie ausprobieren sollten, bevor Sie mit dem Speichern der IP in einer Variablen herumspielen. (Außerdem: Wenn die Server nicht bereits einen Hostnamen haben, wie wollen Sie dann die neue IP herausfinden?)

  • Versuchen Sie, die Bereitstellung mit dem Hostnamen statt mit der IP durchzuführen, wenn es sich um eine dynamische IP handelt.

    mount.cifs //cifs.server.com/pictures ~/otherpc/pictures -o user=me,domain=mynetwork,password=12345,vers=3.0
    
  • Wenn das Netzwerk unter Ihrer Kontrolle ist, nehmen Sie DHCP-Reservierungen für die IP der CIFS-Server vor.

Antwort3

Die IP erhalten Sie mitnmblookup NAME | head -n 1 | cut -d ' ' -f 1

Setzen Sie es in die Variable NAME_IPmitNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"

verwandte Informationen