Add pfSense XML integration and complete workflow automation
- Add pfsense_integrator.py for automatic XML parsing and integration - Add complete_workflow.sh for one-command network discovery - Enhance integrated_scanner.py to auto-integrate pfSense XML files - Update README with pfSense XML features and workflow - Generate comprehensive network summaries from XML configs - Support for WireGuard, OpenVPN, IPsec, routing, DHCP, firewall rules
This commit is contained in:
124
complete_workflow.sh
Executable file
124
complete_workflow.sh
Executable file
@@ -0,0 +1,124 @@
|
||||
#!/bin/bash
|
||||
# Complete Network Discovery Workflow
|
||||
# Automatically scans network, integrates pfSense XML, and generates diagrams
|
||||
|
||||
set -e
|
||||
|
||||
echo "=========================================="
|
||||
echo "Complete Network Discovery Workflow"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if we're in the right directory
|
||||
if [ ! -f "integrated_scanner.py" ]; then
|
||||
log_error "integrated_scanner.py not found. Please run this script from the network scanner directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for pfSense XML files
|
||||
XML_FILES=$(ls *.xml 2>/dev/null | wc -l)
|
||||
if [ "$XML_FILES" -gt 0 ]; then
|
||||
log_info "Found $XML_FILES pfSense XML configuration file(s)"
|
||||
else
|
||||
log_warning "No pfSense XML files found. Network scan will proceed without pfSense integration."
|
||||
fi
|
||||
|
||||
# Step 1: Run system verification
|
||||
log_info "Step 1: Verifying system requirements..."
|
||||
if ./test_system.py >/dev/null 2>&1; then
|
||||
log_success "System verification passed"
|
||||
else
|
||||
log_error "System verification failed. Please check the output above."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 2: Run integrated network scan
|
||||
log_info "Step 2: Running integrated network scan..."
|
||||
SCAN_OUTPUT="network_scan_$(date +%Y%m%d_%H%M%S).json"
|
||||
if ./integrated_scanner.py -o "$SCAN_OUTPUT" -v; then
|
||||
log_success "Network scan completed: $SCAN_OUTPUT"
|
||||
else
|
||||
log_error "Network scan failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 3: Generate SVG diagram
|
||||
log_info "Step 3: Generating network diagram..."
|
||||
SVG_OUTPUT="${SCAN_OUTPUT%.json}.svg"
|
||||
if ./svg_generator.py "$SCAN_OUTPUT" -o "$SVG_OUTPUT"; then
|
||||
log_success "SVG diagram generated: $SVG_OUTPUT"
|
||||
else
|
||||
log_error "SVG generation failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Step 4: Generate pfSense summary if XML files exist
|
||||
if [ "$XML_FILES" -gt 0 ]; then
|
||||
log_info "Step 4: Generating pfSense network summary..."
|
||||
SUMMARY_OUTPUT="network_summary_$(date +%Y%m%d_%H%M%S).md"
|
||||
if ./pfsense_integrator.py *.xml --summary "$SUMMARY_OUTPUT"; then
|
||||
log_success "Network summary generated: $SUMMARY_OUTPUT"
|
||||
else
|
||||
log_warning "Network summary generation failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Step 5: Show results summary
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
log_success "Network Discovery Complete!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Generated files:"
|
||||
echo " 📊 Network Scan: $SCAN_OUTPUT"
|
||||
echo " 🎨 Network Diagram: $SVG_OUTPUT"
|
||||
if [ "$XML_FILES" -gt 0 ]; then
|
||||
echo " 📋 Network Summary: $SUMMARY_OUTPUT"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Show network statistics
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
echo "Network Statistics:"
|
||||
TOTAL_SEGMENTS=$(jq '.segments | length' "$SCAN_OUTPUT")
|
||||
TOTAL_DEVICES=$(jq '[.segments[].devices[]] | length' "$SCAN_OUTPUT")
|
||||
PFSENSE_DEVICES=$(jq '[.segments[].devices[] | select(.device_type=="firewall")] | length' "$SCAN_OUTPUT")
|
||||
|
||||
echo " 📡 Network Segments: $TOTAL_SEGMENTS"
|
||||
echo " 🖥️ Total Devices: $TOTAL_DEVICES"
|
||||
echo " 🛡️ pfSense Firewalls: $PFSENSE_DEVICES"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "Next steps:"
|
||||
echo " 1. Open $SVG_OUTPUT in your web browser to view the network diagram"
|
||||
if [ "$XML_FILES" -gt 0 ]; then
|
||||
echo " 2. Review $SUMMARY_OUTPUT for detailed pfSense configuration"
|
||||
fi
|
||||
echo " 3. Examine $SCAN_OUTPUT for complete network data (use jq for querying)"
|
||||
echo ""
|
||||
|
||||
log_success "Workflow completed successfully! 🎉"
|
||||
Reference in New Issue
Block a user