A Python script for anonymizing, validating, and analyzing RVTools exports. Best for automation, batch processing, and CI/CD pipelines.
- Python 3.7+
- openpyxl library
pip install openpyxlIdentify sensitive data before anonymizing:
python validate_anonymization.py --analyze rvtools_export.xlsx# Basic anonymization
python validate_anonymization.py --anonymize rvtools_export.xlsx
# With custom output path
python validate_anonymization.py --anonymize rvtools_export.xlsx -o anonymized.xlsx
# With mapping export
python validate_anonymization.py --anonymize rvtools_export.xlsx --export-mappingsCheck that anonymization was performed correctly:
python validate_anonymization.py --validate original.xlsx anonymized.xlsxusage: validate_anonymization.py [-h] [--analyze FILE] [--anonymize FILE]
[--validate ORIGINAL ANONYMIZED]
[--output FILE] [--export-mappings]
Options:
--analyze FILE Analyze an RVTools file for sensitive data
--anonymize FILE Anonymize an RVTools file (creates _anonymized copy)
--validate ORIG ANON Validate anonymization was performed correctly
--output, -o FILE Custom output path for anonymized file
--export-mappings Export value mappings to separate file
| Column | Data Type | Anonymized As |
|---|---|---|
| VM | vm | VM-0001 |
| Host | host/dns | HOST-0001 or FQDN |
| Cluster | cluster | CLUSTER-0001 |
| Datacenter | datacenter | DC-0001 |
| DNS Name | dns | VM-0001.domain1.local |
| Path | path | [DS-0001] VM-0001/... |
| Network/Portgroup | network | NET-0001 |
| Folder/vApp | folder | FOLDER-0001 |
| Domain | domain | domain1.local |
| IP addresses | ip | 10.0.x.x |
| Annotation/Notes | annotation | (cleared) |
$ python validate_anonymization.py --anonymize data/rvtools.xlsx --export-mappings
Loading workbook: data/rvtools.xlsx
Processing sheet 1/27: vInfo
Processing sheet 2/27: vCPU
...
Processing sheet 27/27: vMetaData
Saving anonymized workbook: data/rvtools_anonymized.xlsx
✓ Anonymization complete: data/rvtools_anonymized.xlsx
Mappings exported to: data/anonymization_mappings.xlsx
from validate_anonymization import RVToolsAnonymizer
# Create anonymizer instance
anonymizer = RVToolsAnonymizer()
# Anonymize a workbook
output_path = anonymizer.anonymize_workbook('input.xlsx', 'output.xlsx')
# Export mappings
anonymizer.export_mappings('mappings.xlsx')
# Access mappings programmatically
vm_mappings = anonymizer.mappings['vm']
print(f"Anonymized {len(vm_mappings)} VMs")