/dhcp3/dhclient-enter-hooks.d/samba

http://github.com/brinkman83/bashrc · Shell · 75 lines · 50 code · 15 blank · 10 comment · 11 complexity · 5bae14f7119e76a44cd7f83374dc27fd MD5 · raw file

  1. #!/bin/sh
  2. SAMBA_DHCP_CONF=/etc/samba/dhcp.conf
  3. netbios_setup() {
  4. # No need to continue if we're called with an unsupported option
  5. case $reason in
  6. BOUND|RENEW|REBIND|REBOOT|EXPIRE|FAIL|RELEASE|STOP)
  7. ;;
  8. *)
  9. return
  10. ;;
  11. esac
  12. umask 022
  13. local other_servers=""
  14. local serverlist=""
  15. # the destination file won't exist yet on the first run after
  16. # installing samba
  17. if [ -e $SAMBA_DHCP_CONF ]
  18. then
  19. # don't continue if no settings have changed
  20. if [ "$new_netbios_name_servers" = "$old_netbios_name_servers" ] \
  21. && [ "$new_netbios_scope" = "$old_netbios_scope" ] \
  22. && [ -n "$new_netbios_name_servers" ]
  23. then
  24. return
  25. fi
  26. # reparse our own file
  27. other_servers=`sed -n -e"s/[[:space:]]$interface:[^[:space:]]*//g; \
  28. s/^[[:space:]]*wins server[[:space:]]*=[[:space:]]*//pi" \
  29. $SAMBA_DHCP_CONF`
  30. serverlist="$other_servers"
  31. fi
  32. for server in $new_netbios_name_servers
  33. do
  34. serverlist="$serverlist $interface:$server"
  35. done
  36. echo -n > ${SAMBA_DHCP_CONF}.new
  37. # If we're updating on failure/expire, AND there are no WINS
  38. # servers for other interfaces, leave the file empty.
  39. if [ -z "$other_servers" ]
  40. then
  41. if [ "$reason" = FAIL ] || [ "$reason" = EXPIRE ]
  42. then
  43. mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF
  44. return
  45. fi
  46. fi
  47. if [ -n "$serverlist" ]
  48. then
  49. echo " wins server = $serverlist" >> ${SAMBA_DHCP_CONF}.new
  50. fi
  51. if [ -n "$new_netbios_scope" ]
  52. then
  53. echo " netbios scope = $new_netbios_scope" >> ${SAMBA_DHCP_CONF}.new
  54. fi
  55. mv ${SAMBA_DHCP_CONF}.new $SAMBA_DHCP_CONF
  56. # reload the samba server
  57. # We don't necessarily have the samba package installed. #414841
  58. [ -x /etc/init.d/samba ] && /usr/sbin/invoke-rc.d samba reload
  59. }
  60. netbios_setup