hostclean.tcl 922 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. set seen_hostnames [list]
  2. proc load_hostnames { filename } {
  3. global seen_hostnames
  4. set filehandle [open $filename "r"]
  5. set line [gets $filehandle]
  6. set count 0
  7. while {![eof $filehandle]} {
  8. set line [string trim $line]
  9. lappend seen_hostnames $line
  10. incr count
  11. set line [gets $filehandle]
  12. }
  13. putlog "hostclean: loaded [llength $seen_hostnames] hostnames from cache"
  14. }
  15. proc hostclean { user } {
  16. global seen_hostnames
  17. set hostnames [getuser $user HOSTS]
  18. putlog "hostclean: found [llength $hostnames] hosts for $user"
  19. if {[llength $hostnames] > 0} {
  20. foreach $hostnames $host {
  21. set regexp_hostname [string map { . \\. * .+ ? . } $host]
  22. set seen 0
  23. foreach $seen_hostnames $seen_host {
  24. if [regexp $regexp_hostname $seen_host] {
  25. set seen 1
  26. break
  27. }
  28. }
  29. if {!$seen} {
  30. # XXX delete this host
  31. putlog "$host is a candidate for deletion from user $user"
  32. }
  33. }
  34. }
  35. }