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-upgrade
zu 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
nslookup
wurde korrekt aufgelöst syslog
und strace
hat nichts angezeigt.
Letztendlich lag das Problem an der .local
Domäne sowie an einer Änderung (möglicherweise während des Release-Upgrades) in der /etc/nsswitch.conf
Instanz, die den mDNS Avahi/Bonjour-Daemon mdns4_minimal
vor 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_IP
mitNAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"