|
|
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.