|
|
1.1 ! root 1: #!/bin/sh ! 2: ! 3: #Syntax: alias_chk <DN> ! 4: # ! 5: # Think of better name. Tool designed to check recursively through tree for ! 6: # bad aliases, and what is wrong. ! 7: ! 8: # A file name for the bad aliases and diagnostics to be echoed into... ! 9: Error_file=ALIAS_ERR_DETCTD ! 10: ! 11: if test -z "$DISHPROC" ! 12: then ! 13: DISHPROC="127.0.0.1 `expr $$ + 10000`" ! 14: export DISHPROC ! 15: fi ! 16: ! 17: if test $# = 0 ! 18: then ! 19: echo "We need an object. Aborting..." ! 20: exit ! 21: fi ! 22: ! 23: echo Binding... ! 24: if test $# -gt 1 ! 25: then ! 26: bind -c $2 ! 27: else ! 28: bind ! 29: fi ! 30: ! 31: if ( moveto "$1" ) ! 32: then ! 33: echo -n ! 34: else ! 35: echo "Does '$1' exist?" ! 36: exit ! 37: fi ! 38: ! 39: if test `compare -attribute "objectClass=alias" -print -dontdereferencealias 2>&1` = "TRUE" ! 40: then ! 41: Entry=`squid | awk -F: '{if (NR == 2) print $2}' | sed -e "s/ @//"` ! 42: echo "Checking alias $Entry" ! 43: moveto .. ! 44: ! 45: # Check that all the 4 correct attributes are present, and no more. ! 46: showentry "$1" -dontderef -novalue -all -nosequence > tmp_entry_$$ ! 47: if [ `grep -c "commonName" tmp_entry_$$` = 0 -o `grep -c "organizationName" tmp_entry_$$` = 0 -o `grep -c "organizationalUnitName" tmp_entry_$$` = 0 ] ! 48: then ! 49: cat tmp_entry_$$ | sed -e "s/commonName//" > tmp_entry_$$2 ! 50: mv tmp_entry_$$2 tmp_entry_$$ ! 51: cat tmp_entry_$$ | sed -e "s/organizationName//" > tmp_entry_$$2 ! 52: mv tmp_entry_$$2 tmp_entry_$$ ! 53: cat tmp_entry_$$ | sed -e "s/organizationalUnitName//" > tmp_entry_$$2 ! 54: mv tmp_entry_$$2 tmp_entry_$$ ! 55: else ! 56: echo "Common Name attribute missing. Please add." | tee -a Error_file ! 57: fi ! 58: if test `grep -c "objectClass" tmp_entry_$$` = 0 ! 59: then ! 60: echo "objectClass attribute missing. Please add." | tee -a Error_file ! 61: else ! 62: cat tmp_entry_$$ | sed -e "s/objectClass//" > tmp_entry_$$2 ! 63: mv tmp_entry_$$2 tmp_entry_$$ ! 64: fi ! 65: if test `grep -c "accessControlList" tmp_entry_$$` = 0 ! 66: then ! 67: echo "ACL attribute missing. Please add." | tee -a Error_file ! 68: else ! 69: cat tmp_entry_$$ | sed -e "s/accessControlList//" > tmp_entry_$$2 ! 70: mv tmp_entry_$$2 tmp_entry_$$ ! 71: fi ! 72: if test `grep -c "aliasedObjectName" tmp_entry_$$` = 0 ! 73: then ! 74: echo "aliasedObjectName attribute missing. Please add." | tee -a Error_file ! 75: mv tmp_entry_$$2 tmp_entry_$$ ! 76: else ! 77: cat tmp_entry_$$ | sed -e "s/aliasedObjectName//" > tmp_entry_$$2 ! 78: mv tmp_entry_$$2 tmp_entry_$$ ! 79: fi ! 80: cat tmp_entry_$$ | sed -e "s/lastModifiedBy//" | sed -e "s/lastModifiedTime//" > tmp_entry_$$2 ! 81: mv tmp_entry_$$2 tmp_entry_$$ ! 82: ! 83: # Number of words remaining = number of extra attributes. ! 84: if test `cat tmp_entry_$$ | wc -w` != 0 ! 85: then ! 86: echo "Un-necessary attributes present: Please remove" | tee -a Error_file ! 87: cat tmp_entry_$$ | awk '{if $0 != "" print $0}' ! 88: fi ! 89: ! 90: # Now to check that the entry "aliasObject" points to, ! 91: # actually exists, and that it points back to this entry. ! 92: ! 93: Object=`showentry "$1" -dontderef -type "aliasedObjectName" -edb -nokey -nocache` ! 94: showentry "@$Object" -type "seeAlso" -nokey -edb > tmp_entry_$$ ! 95: if test -s tmp_entry_$$ ! 96: then ! 97: if test `grep -c "$Entry" tmp_entry_$$` = 0 ! 98: then ! 99: echo "Object does not point back to alias. (Nice but not essential.)" | tee -a Error_file ! 100: fi ! 101: else ! 102: echo "Object $Object does not exist, or has no seeAlso attribute." | tee -a Error_file ! 103: fi ! 104: ! 105: rm tmp_entry_$$ ! 106: exit ! 107: fi ! 108: ! 109: ! 110: echo -n "We are at: " ! 111: Location=`squid | awk -F: '{if (NR == 2) print $2}' | sed -e "s/ @//"` ! 112: echo $Location ! 113: ! 114: #Check the aliases in the current entry ! 115: search -filter "objectClass=alias" -nosequence -dontderef -edb -nosizelimit > tmp_ali_chk_$$ ! 116: ! 117: if test -s tmp_ali_chk_$$ ! 118: then ! 119: cat tmp_ali_chk_$$ | while read i ! 120: do ! 121: showentry "$i" -dontderef -novalue -all > tmp_entry_$$ ! 122: moveto "$i" ! 123: Entry=`squid | awk -F: '{if (NR == 2) print $2}' | sed -e "s/ @//"` ! 124: echo "Checking alias $Entry" ! 125: moveto .. ! 126: ! 127: # Check that all the 4 correct attributes are present, and no more. ! 128: if [ `grep -c "commonName" tmp_entry_$$` = 0 -o `grep -c "organizationName" tmp_entry_$$` = 0 -o `grep -c "organizationalUnitName" tmp_entry_$$` = 0 ] ! 129: then ! 130: cat tmp_entry_$$ | sed -e "s/commonName//" > tmp_entry_$$2 ! 131: mv tmp_entry_$$2 tmp_entry_$$ ! 132: cat tmp_entry_$$ | sed -e "s/organizationName//" > tmp_entry_$$2 ! 133: mv tmp_entry_$$2 tmp_entry_$$ ! 134: cat tmp_entry_$$ | sed -e "s/organizationalUnitName//" > tmp_entry_$$2 ! 135: mv tmp_entry_$$2 tmp_entry_$$ ! 136: else ! 137: echo "Common Name attribute missing. Please add." | tee -a Error_file ! 138: fi ! 139: if test `grep -c "objectClass" tmp_entry_$$` = 0 ! 140: then ! 141: echo "objectClass attribute missing. Please add." | tee -a Error_file ! 142: else ! 143: cat tmp_entry_$$ | sed -e "s/objectClass//" > tmp_entry_$$2 ! 144: mv tmp_entry_$$2 tmp_entry_$$ ! 145: fi ! 146: if test `grep -c "accessControlList" tmp_entry_$$` = 0 ! 147: then ! 148: echo "ACL attribute missing. Please add." | tee -a Error_file ! 149: else ! 150: cat tmp_entry_$$ | sed -e "s/accessControlList//" > tmp_entry_$$2 ! 151: mv tmp_entry_$$2 tmp_entry_$$ ! 152: fi ! 153: if test `grep -c "aliasedObjectName" tmp_entry_$$` = 0 ! 154: then ! 155: echo "aliasedObjectName attribute missing. Please add." | tee -a Error_file ! 156: mv tmp_entry_$$2 tmp_entry_$$ ! 157: else ! 158: cat tmp_entry_$$ | sed -e "s/aliasedObjectName//" > tmp_entry_$$2 ! 159: mv tmp_entry_$$2 tmp_entry_$$ ! 160: fi ! 161: cat tmp_entry_$$ | sed -e "s/lastModifiedBy//" | sed -e "s/lastModifiedTime//" > tmp_entry_$$2 ! 162: mv tmp_entry_$$2 tmp_entry_$$ ! 163: ! 164: # Number of words remaining = number of extra attributes. ! 165: if test `cat tmp_entry_$$ | wc -w` != 0 ! 166: then ! 167: echo "Un-necessary attributes present: Please remove" | tee -a Error_file ! 168: cat tmp_entry_$$ | awk '{if $0 != "" print $0}' ! 169: fi ! 170: ! 171: ! 172: ! 173: # Now to check that the entry "aliasObject" points to, ! 174: # actually exists, and that it points back to this entry. ! 175: ! 176: Object=`showentry "$i" -dontderef -type "aliasedObjectName" -nokey -edb` ! 177: showentry "@$Object" -type "seeAlso" -nokey -edb > tmp_entry_$$ ! 178: if test -s tmp_entry_$$ ! 179: then ! 180: if test `grep -c "$Entry" tmp_entry_$$` = 0 ! 181: then ! 182: echo "Object does not point back to alias. (Nice but not essential.)" | tee -a Error_file ! 183: fi ! 184: else ! 185: echo "Object $Object does not exist, or has no seeAlso attribute." | tee -a Error_file ! 186: fi ! 187: rm tmp_entry_$$ ! 188: echo ! 189: done ! 190: else ! 191: echo "No aliases here. Moving down a level." ! 192: fi ! 193: ! 194: # Now recurse to the next level. ! 195: search -filter "objectClass=quipuNonLeafObject" -nosequence -edb -sizelimit 10 > tmp_ali_chk2_$$ ! 196: ! 197: if test -s tmp_ali_chk2_$$ ! 198: then ! 199: cat tmp_ali_chk2_$$ | while read i ! 200: do ! 201: alias_chk "$i" ! 202: moveto .. ! 203: done ! 204: else ! 205: echo "No more levels down here." ! 206: fi ! 207: ! 208: rm tmp_ali_chk_$$ tmp_ali_chk2_$$
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.