| 200 | print('Adding new computer with username: %s and password: %s result: OK' % (computer_name, password)) |
| 201 | |
| 202 | def do_rename_computer(self, line): |
| 203 | args = shlex.split(line) |
| 204 | |
| 205 | if len(args) != 2: |
| 206 | raise Exception("Current Computer sAMAccountName and New Computer sAMAccountName required (rename_computer comp1$ comp2$).") |
| 207 | |
| 208 | current_name = args[0] |
| 209 | |
| 210 | new_name = args[1] |
| 211 | |
| 212 | self.client.search(self.domain_dumper.root, '(sAMAccountName=%s)' % escape_filter_chars(current_name), attributes=['objectSid', 'sAMAccountName']) |
| 213 | computer_dn = self.client.entries[0].entry_dn |
| 214 | |
| 215 | if not computer_dn: |
| 216 | raise Exception("Computer not found in LDAP: %s" % current_name) |
| 217 | |
| 218 | entry = self.client.entries[0] |
| 219 | samAccountName = entry["samAccountName"].value |
| 220 | print("Original sAMAccountName: %s" % samAccountName) |
| 221 | |
| 222 | print("New sAMAccountName: %s" % new_name) |
| 223 | self.client.modify(computer_dn, {'sAMAccountName':(ldap3.MODIFY_REPLACE, [new_name])}) |
| 224 | |
| 225 | if self.client.result["result"] == 0: |
| 226 | print("Updated sAMAccountName successfully") |
| 227 | else: |
| 228 | if self.client.result['result'] == 50: |
| 229 | raise Exception('Could not modify object, the server reports insufficient rights: %s', self.client.result['message']) |
| 230 | elif self.client.result['result'] == 19: |
| 231 | raise Exception('Could not modify object, the server reports a constrained violation: %s', self.client.result['message']) |
| 232 | else: |
| 233 | raise Exception('The server returned an error: %s', self.client.result['message']) |
| 234 | |
| 235 | def do_add_user(self, line): |
| 236 | args = shlex.split(line) |