내 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를 직접 사용하는 대신 mount.cifs 및 //$variable을 사용하는 방법이 있습니까?
감사해요
답변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.conf
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를 변수에 저장하기 전에 시도해야 할 두 가지 옵션이 있다는 것을 발견했습니다. (또한 서버에 이미 호스트 이름이 없으면 새 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_IP
변수 에 넣어라NAME_IP="$(nmblookup NAME | head -n 1 | cut -d ' ' -f 1)"