Files
usb-ssd/docs/api-reference.md
2025-08-07 19:28:22 +02:00

13 KiB

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

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

# 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

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

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

# 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

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

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

# 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

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

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

# 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

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

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

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

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

# /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

# /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

{
  "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

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