# USB-SSD Management System - API Reference ## Übersicht Diese Referenz dokumentiert alle verfügbaren Scripts, Parameter und Optionen des USB-SSD Management Systems. Alle Scripts unterstützen die `--help` Option für detaillierte Informationen. ## Script-Übersicht | Script | Zweck | Hauptfunktionen | |--------|-------|-----------------| | `ssd-detect.sh` | Hardware-Erkennung | USB-C SSD Identifikation, NTFS-Erkennung | | `ssd-mount-manager.sh` | Mount-Management | Mounting, Unmounting, Status-Überwachung | | `ssd-test-suite.sh` | Qualitätssicherung | 11 Test-Kategorien, Performance-Benchmarks | | `ssd-safe-eject.sh` | Sichere Entfernung | Buffer-Flush, Prozess-Detection, Hardware-Eject | ## ssd-detect.sh ### Syntax ```bash ssd-detect.sh [OPTIONS] [COMMAND] ``` ### Befehle | Befehl | Beschreibung | |--------|--------------| | `detect` | Standard-Erkennung (Default) | | `list` | Alle erkannten SSDs auflisten | | `monitor` | Kontinuierliche Überwachung | | `info` | Detaillierte Device-Informationen | ### Optionen | Option | Kurz | Typ | Beschreibung | Default | |--------|------|-----|--------------|---------| | `--device` | `-d` | String | Spezifisches Device prüfen | Auto-detect | | `--ntfs-only` | `-n` | Flag | Nur NTFS-Partitionen anzeigen | false | | `--output` | `-o` | String | Output-Format (text/json/xml) | text | | `--verbose` | `-v` | Flag | Detaillierte Ausgabe | false | | `--debug` | | Flag | Debug-Modus aktivieren | false | | `--monitor` | `-m` | Flag | Kontinuierliche Überwachung | false | | `--interval` | `-i` | Integer | Monitor-Intervall (Sekunden) | 5 | | `--timeout` | `-t` | Integer | Detection-Timeout (Sekunden) | 30 | | `--hardware-info` | | Flag | Hardware-Details anzeigen | false | | `--performance-info` | | Flag | Performance-Informationen | false | ### Beispiele ```bash # Standard-Erkennung ssd-detect.sh # Spezifisches Device prüfen ssd-detect.sh --device /dev/sdb1 # JSON-Output für Automation ssd-detect.sh --output json # Kontinuierliche Überwachung ssd-detect.sh --monitor --interval 10 # Debug-Modus ssd-detect.sh --debug --verbose ``` ### Exit-Codes | Code | Bedeutung | |------|-----------| | 0 | Erfolg - SSD erkannt | | 1 | Allgemeiner Fehler | | 2 | Keine SSD gefunden | | 3 | NTFS nicht unterstützt | | 4 | Timeout erreicht | | 5 | Permission denied | ### Environment Variables ```bash export SSD_DETECT_TIMEOUT=30 # Detection-Timeout export SSD_LOG_LEVEL=INFO # Log-Level export SSD_SUPPORTED_FS="ntfs,exfat" # Unterstützte Dateisysteme export SSD_DEBUG=false # Debug-Modus ``` ## ssd-mount-manager.sh ### Syntax ```bash ssd-mount-manager.sh [OPTIONS] COMMAND ``` ### Befehle | Befehl | Beschreibung | |--------|--------------| | `mount` | SSD mounten | | `unmount` | SSD unmounten | | `remount` | SSD neu mounten | | `status` | Mount-Status anzeigen | | `diagnose` | Mount-Probleme diagnostizieren | | `cleanup` | Mount-Point bereinigen | | `recover` | Recovery-Modus | | `metrics` | Performance-Metriken | ### Optionen | Option | Kurz | Typ | Beschreibung | Default | |--------|------|-----|--------------|---------| | `--device` | `-d` | String | Spezifisches Device | Auto-detect | | `--mountpoint` | `-m` | String | Mount-Point Pfad | /mnt/ssd-storage | | `--options` | `-o` | String | Mount-Optionen | uid=1000,gid=1000 | | `--readonly` | `-r` | Flag | Read-Only Mount | false | | `--readwrite` | `-w` | Flag | Read-Write Mount | true | | `--smb-ready` | | Flag | SMB-optimierte Optionen | false | | `--fsck` | | Flag | Filesystem-Check vor Mount | false | | `--timeout` | `-t` | Integer | Mount-Timeout (Sekunden) | 30 | | `--force` | `-f` | Flag | Force-Mount | false | | `--verbose` | `-v` | Flag | Detaillierte Ausgabe | false | | `--json` | | Flag | JSON-Output | false | ### Beispiele ```bash # Standard-Mount ssd-mount-manager.sh mount # Custom Mount-Point ssd-mount-manager.sh mount --mountpoint /custom/path # Read-Only Mount ssd-mount-manager.sh mount --readonly # SMB-optimiertes Mounting ssd-mount-manager.sh mount --smb-ready # Status prüfen ssd-mount-manager.sh status --json # Diagnose ssd-mount-manager.sh diagnose ``` ### Exit-Codes | Code | Bedeutung | |------|-----------| | 0 | Erfolg | | 1 | Allgemeiner Fehler | | 2 | Device nicht gefunden | | 3 | Mount fehlgeschlagen | | 4 | Unmount fehlgeschlagen | | 5 | Permission denied | | 6 | Timeout erreicht | ### Environment Variables ```bash export SSD_MOUNT_POINT="/mnt/ssd-storage" # Standard Mount-Point export SSD_MOUNT_OPTIONS="uid=1000,gid=1000" # Standard Mount-Optionen export SSD_MOUNT_TIMEOUT=30 # Mount-Timeout export SSD_AUTO_MOUNT=true # Auto-Mount aktivieren export SSD_SMB_READY=false # SMB-Optimierungen ``` ## ssd-test-suite.sh ### Syntax ```bash ssd-test-suite.sh [OPTIONS] [TESTS] ``` ### Test-IDs | Test-ID | Name | Kategorie | Dauer | |---------|------|-----------|-------| | `T01` | Hardware Detection | Hardware | 5s | | `T02` | NTFS Filesystem | Hardware | 10s | | `T03` | Mount Stability | Hardware | 30s | | `T04` | Read Performance | Performance | 60s | | `T05` | Write Performance | Performance | 60s | | `T06` | File Operations | Performance | 45s | | `T07` | Permission System | Integration | 15s | | `T08` | SMB Readiness | Integration | 30s | | `T09` | Capacity Verification | Integration | 20s | | `T10` | Error Handling | Security | 25s | | `T11` | Security Scan | Security | 40s | ### Befehle | Befehl | Beschreibung | |--------|--------------| | `all` | Alle Tests ausführen | | `quick` | Nur kritische Tests (T01,T02,T03,T08) | | `T01-T11` | Spezifische Tests | | `hardware` | Hardware-Tests (T01-T03) | | `performance` | Performance-Tests (T04-T06) | | `integration` | Integration-Tests (T07-T09) | | `security` | Security-Tests (T10-T11) | ### Optionen | Option | Kurz | Typ | Beschreibung | Default | |--------|------|-----|--------------|---------| | `--category` | `-c` | String | Test-Kategorie | all | | `--output` | `-o` | String | Output-Format (text/json/xml/csv) | text | | `--benchmark` | `-b` | Flag | Benchmark-Modus | false | | `--detailed` | | Flag | Detaillierte Ergebnisse | false | | `--continuous` | | Flag | Kontinuierliche Tests | false | | `--interval` | `-i` | Integer | Test-Intervall (Sekunden) | 3600 | | `--timeout` | `-t` | Integer | Test-Timeout (Sekunden) | 300 | | `--size` | `-s` | String | Test-Daten Größe | 100MB | | `--iterations` | | Integer | Test-Wiederholungen | 3 | | `--compare` | | String | Baseline-Datei für Vergleich | - | | `--trend` | | Flag | Trend-Analyse | false | | `--prometheus-metrics` | | Flag | Prometheus-Metriken | false | ### Beispiele ```bash # Alle Tests ssd-test-suite.sh all # Schnelle Tests ssd-test-suite.sh --quick # Performance-Tests mit Benchmark ssd-test-suite.sh performance --benchmark # Kontinuierliche Tests ssd-test-suite.sh --continuous --interval 1800 # JSON-Output ssd-test-suite.sh all --output json # Spezifische Tests ssd-test-suite.sh T01 T04 T08 ``` ### Exit-Codes | Code | Bedeutung | |------|-----------| | 0 | Alle Tests erfolgreich | | 1 | Ein oder mehrere Tests fehlgeschlagen | | 2 | Kritischer Test fehlgeschlagen | | 3 | Performance unter Threshold | | 4 | Timeout erreicht | | 5 | Permission denied | ### Environment Variables ```bash export SSD_TEST_TIMEOUT=300 # Test-Timeout export SSD_TEST_SIZE=100 # Test-Daten Größe (MB) export SSD_TEST_ITERATIONS=3 # Test-Wiederholungen export SSD_BENCHMARK_MODE=false # Benchmark-Modus export SSD_PERFORMANCE_THRESHOLD_READ="50MB/s" # Read-Performance Threshold export SSD_PERFORMANCE_THRESHOLD_WRITE="30MB/s" # Write-Performance Threshold ``` ## ssd-safe-eject.sh ### Syntax ```bash ssd-safe-eject.sh [OPTIONS] ``` ### Optionen | Option | Kurz | Typ | Beschreibung | Default | |--------|------|-----|--------------|---------| | `--device` | `-d` | String | Spezifisches Device | Auto-detect | | `--force` | `-f` | Flag | Force-Eject | false | | `--show-processes` | | Flag | Blockierende Prozesse anzeigen | false | | `--kill-processes` | | Flag | Prozesse automatisch beenden | false | | `--unmount-only` | | Flag | Nur Unmount (kein Hardware-Eject) | false | | `--timeout` | `-t` | Integer | Buffer-Flush Timeout (Sekunden) | 60 | | `--process-timeout` | | Integer | Prozess-Kill Timeout (Sekunden) | 10 | | `--verbose` | `-v` | Flag | Detaillierte Ausgabe | false | | `--dry-run` | | Flag | Simulation (keine Änderungen) | false | | `--monitor-buffers` | | Flag | Buffer-Status überwachen | false | | `--hardware-reset` | | Flag | Hardware-Reset nach Eject | false | ### Beispiele ```bash # Standard Safe-Eject ssd-safe-eject.sh # Mit Prozess-Übersicht ssd-safe-eject.sh --show-processes # Force-Eject ssd-safe-eject.sh --force --kill-processes # Nur Unmount ssd-safe-eject.sh --unmount-only # Dry-Run ssd-safe-eject.sh --dry-run --verbose ``` ### Exit-Codes | Code | Bedeutung | |------|-----------| | 0 | Erfolgreicher Eject | | 1 | Allgemeiner Fehler | | 2 | Device nicht gefunden | | 3 | Unmount fehlgeschlagen | | 4 | Prozesse blockieren | | 5 | Hardware-Eject fehlgeschlagen | | 6 | Timeout erreicht | ### Environment Variables ```bash export SSD_EJECT_TIMEOUT=60 # Buffer-Flush Timeout export SSD_PROCESS_TIMEOUT=10 # Prozess-Kill Timeout export SSD_HARDWARE_EJECT=true # Hardware-Eject aktivieren export SSD_KILL_PROCESSES=false # Automatisches Prozess-Killing export SSD_MONITOR_BUFFERS=true # Buffer-Monitoring ``` ## Globale Environment Variables ### Logging-Konfiguration ```bash export SSD_LOG_LEVEL=INFO # Log-Level (DEBUG,INFO,WARN,ERROR) export SSD_LOG_FILE="/var/log/ssd-management.log" # Log-Datei export SSD_USE_SYSLOG=true # Syslog-Integration export SSD_DEBUG=false # Debug-Modus export SSD_VERBOSE=false # Verbose-Output ``` ### System-Konfiguration ```bash export SSD_CONFIG_DIR="/etc/ssd-management" # Konfigurationsverzeichnis export SSD_CACHE_DIR="/var/cache/ssd-management" # Cache-Verzeichnis export SSD_LOCK_DIR="/var/lock/ssd-management" # Lock-Verzeichnis export SSD_PID_FILE="/var/run/ssd-management.pid" # PID-Datei ``` ### Performance-Konfiguration ```bash export SSD_MAX_PARALLEL_OPS=1 # Maximale parallele Operationen export SSD_IO_SCHEDULER="mq-deadline" # I/O-Scheduler export SSD_READ_AHEAD_KB=1024 # Read-Ahead Buffer export SSD_CACHE_MODE="strict" # Cache-Modus ``` ## Konfigurationsdateien ### Haupt-Konfiguration ```ini # /etc/ssd-management/config.conf [global] debug = false verbose = false log_level = INFO [mount] default_mount_point = /mnt/ssd-storage ntfs_options = uid=1000,gid=1000,umask=022,windows_names auto_mount = true smb_ready = false [testing] quick_tests = T01,T02,T03,T08 performance_threshold_read = 50MB/s performance_threshold_write = 30MB/s benchmark_enabled = false [security] require_sudo = true audit_logging = true process_detection = true buffer_monitoring = true ``` ### Logging-Konfiguration ```ini # /etc/ssd-management/logging.conf [loggers] keys = root,ssd [handlers] keys = fileHandler,syslogHandler [formatters] keys = detailedFormatter [logger_root] level = INFO handlers = fileHandler [logger_ssd] level = DEBUG handlers = fileHandler,syslogHandler qualname = ssd propagate = 0 [handler_fileHandler] class = FileHandler level = DEBUG formatter = detailedFormatter args = ('/var/log/ssd-management.log',) [handler_syslogHandler] class = handlers.SysLogHandler level = INFO formatter = detailedFormatter args = (('localhost', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER) [formatter_detailedFormatter] format = %(asctime)s - %(name)s - %(levelname)s - %(message)s ``` ## Return-Codes Übersicht ### Allgemeine Codes (0-9) | Code | Bedeutung | |------|-----------| | 0 | Erfolg | | 1 | Allgemeiner Fehler | | 2 | Ungültige Parameter | | 3 | Permission denied | | 4 | Timeout erreicht | | 5 | Resource nicht verfügbar | ### Hardware-Codes (10-19) | Code | Bedeutung | |------|-----------| | 10 | Device nicht gefunden | | 11 | USB-Fehler | | 12 | Hardware-Fehler | | 13 | Filesystem nicht unterstützt | | 14 | Partition-Fehler | ### Mount-Codes (20-29) | Code | Bedeutung | |------|-----------| | 20 | Mount fehlgeschlagen | | 21 | Unmount fehlgeschlagen | | 22 | Mount-Point nicht verfügbar | | 23 | Filesystem-Fehler | | 24 | Permission-Fehler | ### Test-Codes (30-39) | Code | Bedeutung | |------|-----------| | 30 | Test fehlgeschlagen | | 31 | Performance unter Threshold | | 32 | Kritischer Test fehlgeschlagen | | 33 | Test-Timeout | | 34 | Test-Daten korrupt | ## JSON-Output Format ### Standard-Response ```json { "timestamp": "2025-08-07T19:10:00Z", "script": "ssd-detect.sh", "version": "0.1.0", "status": "success", "exit_code": 0, "data": { // Script-spezifische Daten }, "errors": [], "warnings": [] } ``` ### Error-Response ```json { "timestamp": "2025-08-07T19:10:00Z", "script": "ssd-mount-manager.sh", "version": "0.1.0", "status": "error", "exit_code": 20, "data": null, "errors": [ { "code": "MOUNT_FAILED", "message": "Failed to mount /dev/sdb1", "details": "Permission denied" } ], "warnings": [] } ``` --- **💡 Tipp**: Verwenden Sie `script-name.sh --help` für die aktuellste Dokumentation und alle verfügbaren Optionen.