OTIT-AUTO-JOBS – Handbuch
Vollständige Dokumentation für die Einrichtung, Konfiguration und den Betrieb des sequenziellen Script-Schedulers.
1. Übersicht
OTIT-AUTO-JOBS ist ein sequenzieller Script-Scheduler mit integrierter Web-Oberfläche, entwickelt für den Einsatz auf Windows-Servern. Die Software ermöglicht es, PowerShell-, Batch-, JavaScript- und Inline-Skripte zeitgesteuert oder ereignisbasiert auszuführen – zuverlässig und ohne manuellen Eingriff.
- Sequenzielle Ausführung – Skripte werden nacheinander abgearbeitet, um Ressourcenkonflikte zu vermeiden.
- Web-UI – Verwaltung und Überwachung über einen modernen Browser unter
http://localhost:3847. - Inline-Skript-Editor – PowerShell-, Batch-, CMD- oder JavaScript-Code direkt in der Web-UI eingeben — ohne externe Datei.
- Intervall- und Ordnerüberwachung – Skripte können in festen Zeitintervallen oder beim Erscheinen neuer Dateien in überwachten Ordnern ausgelöst werden.
- Windows-Dienst – Betrieb als Hintergrunddienst, unabhängig von der Benutzeranmeldung.
- E-Mail-Benachrichtigungen – Automatische Fehlermeldungen per SMTP.
- Intervall-Modus – Zeitgesteuerte Ausführung von PowerShell-, Batch-, CMD- und JavaScript-Skripten (extern oder inline) in frei wählbaren Intervallen. Prioritätsbasierte Warteschlange, Timeout-Überwachung, sequenzielle Verarbeitung.
- Watch-Modus – Automatische Skriptausführung bei Erscheinen neuer Dateien in überwachten Ordnern. Einstellbarer Verzögerungs-Delay nach Erkennung. Ideal für Import-Workflows und Datei-basierte Trigger.
- FTP-Modus – Automatisierter Dateitransfer per FTP, FTPS (TLS) und SFTP (SSH). Upload und Download, Dateifilter, rekursive Verarbeitung, Quell-Handling (Löschen/Verschieben/Belassen), Remote-Verschieben nach Upload, konfigurierbares Retry. Optional mit Watch-Ordner als zusätzlicher Trigger.
- Copy/Sync-Modus – Lokales Kopieren, Verschieben und Synchronisieren von Dateien und Verzeichnissen. Inkrementelle Erkennung (nach Zeit/Größe), Dateifilter, Ausschlussmuster, Konfliktbehandlung. Optional mit Watch-Ordner als zusätzlicher Trigger.
- SQL Backup – Automatisches Backup von SQL Server Datenbanken über
sqlcmd. Vollständiges Datenbank-Backup oder Tabellen-Export als CSV. Kompression, Verifizierung, Aufbewahrungsverwaltung (Retention).
2. Installation
Systemvoraussetzungen
- Windows 10 oder höher / Windows Server 2016 oder höher
- Mindestens 100 MB freier Festplattenspeicher
- Port
3847(Standard) muss verfügbar sein
Installationsschritte
- Laden Sie die aktuelle Setup.exe von otit.digital/auto herunter.
- Führen Sie die Datei aus und wählen Sie das gewünschte Installationsverzeichnis.
- Schließen Sie den Assistenten ab. Die Anwendung ist sofort einsatzbereit.
3. Erste Schritte
- Öffnen Sie die Web-Oberfläche in Ihrem Browser unter
http://localhost:3847. - Klicken Sie auf die Schaltfläche +, um ein neues Skript hinzuzufügen.
- Wählen Sie die Script-Datei über den integrierten Dateibrowser aus oder geben Sie den Pfad manuell ein.
- Legen Sie das Ausführungsintervall fest (Minuten oder Stunden).
- Definieren Sie bei Bedarf einen Timeout-Wert, nach dessen Ablauf das Skript abgebrochen wird.
- Speichern Sie die Konfiguration – das Skript wird sofort eingeplant.
Ein Backup-Script alle 60 Minuten mit 5 Minuten Timeout:
Name: Backup-Daily
Pfad: C:\Scripts\backup.ps1
Intervall: 60 Minuten
Timeout: 300 Sekunden
Status: Aktiv
4. Script-Konfiguration
Die Konfiguration aller Skripte wird intern in einer CSV-Datei gespeichert. Sie können die Konfiguration über die Web-UI bearbeiten oder die CSV-Datei direkt anpassen.
CSV-Felder
Die Konfiguration liegt unter config/scripts.csv (Semikolon-getrennt, UTF-8). Die Web-UI ist die empfohlene Bearbeitungsstelle — ein direkter Editier-Eingriff in die CSV ist möglich, sollte aber nur bei gestopptem Dienst erfolgen.
| Spalte | Beschreibung | Beispiel |
|---|---|---|
pfad | Verzeichnis der Skript-Datei oder Marker (siehe unten) | C:\Scripts · <inline> · [FTP] · [SQL] · [COPY] |
datei | Dateiname mit Endung (.ps1/.bat/.cmd/.js) | backup.ps1 |
intervall_min | Ausführungsintervall in Minuten (bei Modus intervall) | 60 |
aktiv | 1 aktiv, 0 deaktiviert | 1 |
prioritaet | Priorität in der Warteschlange (kleiner = höher) | 10 |
timeout_min | Maximale Laufzeit in Minuten | 5 |
modus | intervall, watch, ftp, sql, copy | intervall |
watch_ordner | Zu überwachender Ordnerpfad (bei Modus watch) | C:\Import\Inbox |
beschreibung | Anzeigename in der Web-UI | Bestand abgleichen |
zeitplan | Zeitplan-Definition (siehe Kapitel 8) | daily:03:00 |
watch_delay | Verzögerung in Sekunden nach Datei-Erkennung | 30 |
log_level | normal, verbose, error, off | normal |
log_retention | Pro-Task-Aufbewahrung (leer = global) | runs:10 |
Pfad-Marker
<inline>— Skript-Inhalt liegt unterconfig\inline-scripts\<datei>(Inline-Editor, siehe weiter unten)[FTP],[SQL],[COPY]— Konfiguration in der jeweiligenconfig\*-configs.json
Integrierter Dateibrowser
Beim Hinzufügen oder Bearbeiten eines Skripts steht ein Dateibrowser zur Verfügung. Navigieren Sie durch das Dateisystem und wählen Sie die gewünschte .ps1-, .bat-, .cmd- oder .js-Datei direkt aus. Der vollständige Pfad wird automatisch übernommen.
Inline-Skript-Editor
Statt eine externe Datei zu pflegen, können Sie den Skript-Code direkt in der Web-UI eingeben. Beim Anlegen oder Bearbeiten eines Tasks (Modus Intervall oder Watch) wählen Sie unter Skript-Quelle die Option Inline-Skript.
| Sprache | Endung | Interpreter | Bemerkung |
|---|---|---|---|
| PowerShell | .ps1 | pwsh.exe bzw. powershell.exe | Standard auf jedem Windows-Server |
| Batch | .bat | cmd.exe /c | Klassische Befehlsketten |
| CMD | .cmd | cmd.exe /c | Identisch zu .bat |
| JavaScript | .js | node.exe | Node ist Teil der Installation, kein Extra-Setup |
Wie funktioniert das technisch?
Der Inline-Code wird beim Speichern in einem verwalteten Verzeichnis als Datei abgelegt:
<Installationsverzeichnis>\config\inline-scripts\<dateiname>.<ext>
Der Dateiname wird automatisch aus der Beschreibung des Tasks und der gewählten Sprache abgeleitet (z. B. tagesabgleich.ps1). Der bestehende Skript-Lauf-Mechanismus wird unverändert verwendet – der Code im Editor und der Code in einer manuell gepflegten .ps1-Datei sind funktional identisch.
Vorteile gegenüber externer Datei
- Keine separaten Skript-Ordner zu pflegen — der Task ist self-contained
- Backup-relevant: Skripte liegen unter
config/und sind beim Update geschützt (siehe Kapitel 14) - Schnelle Iteration im Browser, ohne Datei zu öffnen
- Sprache-Wechsel über Dropdown, Dateiendung wird automatisch angepasst
Wann eine externe Datei besser ist
- Skripte, die Sie unabhängig versionieren (Git, SVN)
- Skripte, die mehrere Tasks gemeinsam verwenden
- Skripte, die auch außerhalb von OTIT-AUTO-JOBS aufrufbar sein müssen
5. Windows-Dienst
OTIT-AUTO-JOBS kann als Windows-Dienst installiert werden, sodass Skripte auch ohne angemeldeten Benutzer und ohne geöffnete GUI im Hintergrund ausgeführt werden.
Dienst installieren
install-service.bat
Führen Sie die Datei als Administrator aus dem Installationsverzeichnis aus. Der Dienst wird unter dem Namen OTIT-AUTO-JOBS registriert und automatisch gestartet.
Dienst deinstallieren
uninstall-service.bat
Stoppt den Dienst und entfernt ihn aus der Windows-Dienstverwaltung.
Dienststatus prüfen
sc query "OTIT-AUTO-JOBS"
6. E-Mail-Benachrichtigungen
Sie können sich per E-Mail über Fehler bei der Skriptausführung benachrichtigen lassen. In der Free Edition (ab v1.4.0) ist diese Funktion ohne weitere Aktivierung verfügbar.
SMTP-Konfiguration
Öffnen Sie in der Web-UI den Bereich Settings und tragen Sie die SMTP-Daten ein:
| Feld | Beschreibung |
|---|---|
| SMTP-Server | Hostname des Mailservers, z. B. smtp.example.com |
| Port | In der Regel 587 (STARTTLS) oder 465 (SSL) |
| Benutzername | SMTP-Login |
| Passwort | SMTP-Passwort |
| Absender | Absender-Adresse |
| Empfänger | Zieladresse(n) für Benachrichtigungen |
Fehlerschwelle und Rate-Limiting
- Fehlerschwelle – Legt fest, nach wie vielen aufeinanderfolgenden Fehlern eine E-Mail versendet wird (Standard: 1).
- Rate-Limiting – Pro Skript wird maximal eine E-Mail pro Stunde verschickt, um Überflutung des Postfachs zu vermeiden.
7. Lizenz & Haftung
OTIT-AUTO-JOBS steht ab Version 1.4.0 (Free Edition) unter der MIT-Lizenz – kostenfrei und mit allen Funktionen. Es gibt keine Lizenzschlüssel, kein Abo, keine Funktions-Beschränkung und keine Telemetrie.
- Frei nutzbar – auch kommerziell, in beliebig vielen Installationen, ohne Anmeldung.
- Frei modifizierbar – der Quellcode kann angepasst und weitergegeben werden, solange Copyright-Hinweis und Lizenztext erhalten bleiben.
- Ohne Gewährleistung – die Software wird "AS IS" bereitgestellt. Keine Zusicherung von Eignung, Verfügbarkeit oder Fehlerfreiheit.
- Ohne Haftung – weder Autoren noch Rechteinhaber haften für Datenverlust, entgangenen Gewinn, Betriebsunterbrechungen oder andere Schäden, soweit gesetzlich zulässig.
Drittanbieter-Lizenzen
OTIT-AUTO-JOBS verwendet Open-Source-Komponenten unter MIT, BSD, Apache 2.0 und ISC (u. a. express, basic-ftp, ssh2-sftp-client, nodemailer, node-windows, bytenode). Eine vollständige Liste finden Sie in der Datei THIRD_PARTY_LICENSES.md im Installationsverzeichnis.
Quellcode & Spende
Der vollständige Lizenztext liegt unter LICENSE im Installationsverzeichnis. Wenn das Tool Ihnen im Alltag hilft, freuen wir uns über eine freiwillige Spende: otit.digital/spende.
8. Zeitplan
Neben dem klassischen Intervall-Modus bietet OTIT-AUTO-JOBS flexible Zeitplan-Optionen für alle Task-Typen.
Zeitplan-Modi
| Modus | Beschreibung | Beispiel |
|---|---|---|
| Intervall | Festes Zeitintervall in Minuten | Alle 30 Minuten |
| Täglich | Einmal täglich zu einer bestimmten Uhrzeit | Jeden Tag um 03:00 |
| Wöchentlich | An bestimmten Wochentagen zu einer Uhrzeit | Montag und Freitag um 08:00 |
| Monatsletzter | Am letzten Tag jedes Monats | Letzter Tag um 23:00 |
Konfiguration
Der Zeitplan wird im Task-Editor unter Zeitplan festgelegt. Bei „Intervall“ wird das bestehende Intervall-Feld in Minuten verwendet. Bei allen anderen Modi wählen Sie die gewünschte Uhrzeit und ggf. die Wochentage.
9. Watch-Modus
Im Watch-Modus überwacht OTIT-AUTO-JOBS einen konfigurierten Ordner. Sobald eine neue Datei in diesem Ordner erscheint, wird das zugeordnete Skript automatisch ausgelöst.
Einrichtung
- Aktivieren Sie beim gewünschten Skript die Option Watch-Modus.
- Geben Sie den zu überwachenden Ordnerpfad an (z. B.
C:\Import\Inbox). - Speichern Sie die Änderung.
Funktionsweise
- Die Überwachung erkennt neu erstellte Dateien im angegebenen Verzeichnis.
- Das Skript wird zusätzlich zum normalen Intervall/Zeitplan ausgelöst – oder ausschließlich bei Datei-Ereignissen, wenn kein Intervall konfiguriert ist.
- Die sequenzielle Verarbeitung bleibt erhalten: Auch Watch-Trigger reihen sich in die Warteschlange ein.
Verzögerung (Delay)
Optional kann ein Watch-Delay (in Sekunden) konfiguriert werden. Nach Erkennung einer neuen Datei wartet der Scheduler die eingestellte Zeit ab, bevor der Task ausgelöst wird. Das verhindert, dass noch nicht fertig geschriebene Dateien verarbeitet werden.
Watch-Ordner für FTP- und Copy-Tasks
Die Watch-Funktion ist nicht auf den Watch-Modus beschränkt. Auch FTP-Upload- und Copy/Sync-Tasks können zusätzlich einen Watch-Ordner konfigurieren. Erscheint eine neue Datei im Watch-Ordner, wird der Transfer-Task ausgelöst – zusätzlich zum eingestellten Zeitplan.
10. FTP-Modus
Der FTP-Modus ermöglicht den automatisierten Dateitransfer zwischen lokalen Verzeichnissen und FTP-Servern. Drei Protokolle werden unterstützt:
| Protokoll | Port (Standard) | Verschlüsselung |
|---|---|---|
| FTP | 21 | Keine |
| FTPS | 21 | TLS/SSL |
| SFTP | 22 | SSH |
Transfer-Optionen
- Upload – Dateien vom lokalen Verzeichnis zum Remote-Server übertragen
- Download – Dateien vom Remote-Server ins lokale Verzeichnis herunterladen
- Dateifilter – Nur bestimmte Dateien übertragen (z. B.
*.csv,*.xml) - Rekursive Verarbeitung – Unterordner einbeziehen
- Dateiverszögerung – Warten bis Dateien vollständig geschrieben sind (konfigurierbar in Sekunden/Minuten)
Nach dem Transfer
- Quelldateien belassen – Dateien bleiben am Ursprungsort
- Quelldateien löschen – Nach erfolgreichem Transfer automatisch entfernen
- Quelldateien verschieben – In ein lokales Archivverzeichnis verschieben
- Remote verschieben (nur Upload) – Nach erfolgreichem Upload die Datei auf dem FTP-Server in einen anderen Ordner verschieben. Ideal, wenn ein Empfangssystem die Datei erst nach der Verarbeitung aus dem Zielordner abholt.
- Konfliktbehandlung – Bei gleichnamigen Dateien: Überschreiben, Umbenennen oder Überspringen
Verbindungstest
Vor dem Speichern eines FTP-Tasks ist ein Verbindungstest Pflicht. Der Test prüft:
- Verbindungsaufbau zum Server
- Navigation zum Remote-Verzeichnis
- Upload einer Testdatei
- Ändern der Testdatei (Schreibrechte)
- Löschen der Testdatei (Löschrechte)
- Bei „Remote verschieben“: Erstellt einen Testordner, verschiebt die Datei dorthin, verifiziert und räumt den Testordner wieder auf.
11. Copy/Sync-Modus
Der Copy/Sync-Modus ermöglicht das automatische Kopieren, Verschieben und Synchronisieren von Dateien und Verzeichnissen auf dem lokalen System oder im Netzwerk.
Operationen
| Operation | Beschreibung |
|---|---|
| Kopieren | Dateien von Quelle nach Ziel kopieren. Originale bleiben erhalten. |
| Verschieben | Dateien von Quelle nach Ziel verschieben. Originale werden gelöscht. |
| Synchronisieren | Zielverzeichnis wird mit dem Quellverzeichnis abgeglichen. Geänderte und neue Dateien werden übertragen. |
Filter & Optionen
- Dateifilter – Nur bestimmte Dateien verarbeiten (z. B.
*.csv,*.xml) - Ausschlussmuster – Dateien ausschließen (z. B.
*.tmp,~*,Thumbs.db) - Rekursiv – Unterordner einbeziehen
- Ordnerstruktur erhalten – Verzeichnisstruktur im Ziel nachbilden
- Konfliktbehandlung – Überschreiben, Umbenennen oder Überspringen
Synchronisation
- Inkrementell – Nur geänderte oder neue Dateien übertragen. Die Erkennung basiert auf Änderungszeit, Dateigröße oder beidem. Ein Sync-Journal speichert den letzten Stand.
- Vollständig – Alle Dateien werden bei jedem Durchlauf verarbeitet.
- Verwaiste Dateien löschen – Optional können Dateien im Ziel, die nicht mehr in der Quelle vorhanden sind, automatisch entfernt werden.
12. SQL Server Backup
Der SQL-Modus erstellt automatische Backups von Microsoft SQL Server Datenbanken. Die Kommunikation erfolgt über das Kommandozeilen-Tool sqlcmd, das mit SQL Server mitgeliefert wird.
Voraussetzungen
sqlcmdmuss auf dem Server installiert und im PATH verfügbar sein- SQL Server Authentifizierung (sa) oder Windows-Authentifizierung
- Schreibzugriff auf das Backup-Verzeichnis
Backup-Typen
| Scope | Beschreibung | Ergebnis |
|---|---|---|
| Ganze Datenbank | BACKUP DATABASE mit Kompression und Prüfsumme | .bak-Datei |
| Einzelne Tabellen | SELECT * FROM [Table] WITH (NOLOCK) – Deadlock-sicher | .csv-Dateien pro Tabelle |
Optionen
- Kompression – Backup komprimiert speichern (weniger Speicherplatz)
- Verifizierung – Backup nach Erstellung auf Integrität prüfen (
RESTORE VERIFYONLY) - Aufbewahrung (Retention) – Automatisch alte Backups löschen, wenn mehr als die eingestellte Anzahl vorhanden sind
- Dateinamenmuster – Konfigurierbares Namensmuster, z. B.
{database}_{YYYYMMDD_HHmmss}.bak
Verbindungstest
Beim Einrichten eines SQL-Tasks steht ein Verbindungstest zur Verfügung, der:
- Die Verbindung zum SQL Server prüft (
SELECT @@version) - Verfügbare Datenbanken auflistet (für die Auswahl im Dropdown)
- Tabellen der gewählten Datenbank lädt (für Einzel-Tabellen-Backup)
sqlcmd im PATH erreichbar ist – andernfalls schlägt der Verbindungstest fehl.13. Logging
OTIT-AUTO-JOBS führt ein umfassendes Protokoll aller Aktivitäten.
Scheduler-Log
Das zentrale Log unter logs/scheduler.log protokolliert alle Scheduler-Ereignisse: Start, Stopp, Script-Ausführungen, Fehler und Warteschlangenaktivitäten. Bei Erreichen von 10 MB wird die Datei automatisch rotiert und archiviert.
Script-Logs
Jedes Script erhält eigene Logdateien im Format logs/scripts/{Scriptname}.{Datum}.log. Die Ausgabe (stdout/stderr) jeder Ausführung wird dort vollständig protokolliert.
Log-Aufbewahrung
In den Einstellungen kann die Log-Aufbewahrung konfiguriert werden:
- Nach Durchläufen – Nur die letzten N Logdateien pro Script behalten (Standard: 10)
- Nach Tagen – Logs älter als N Tage automatisch löschen
- Nach Speicherplatz – Pro Script maximal N MB an Logdaten vorhalten
14. Updates
OTIT-AUTO-JOBS prüft beim Start der Setup.exe automatisch, ob eine neue Version verfügbar ist. Im Hintergrund läuft kein automatischer Update-Check – das ist Absicht: ab v1.4.0 (Free Edition) gibt es keinen Server-Heartbeat und keine Telemetrie.
Update-Verfahren
- Updates sind delta-basiert: Der Installer lädt nur geänderte Dateien aus dem aktuellen Manifest, nicht die gesamte Anwendung.
- Vor dem Einspielen werden laufende Instanzen / der Windows-Dienst ordnungsgemäß beendet.
- Anschließend startet die App / der Dienst neu.
Schutz der Konfiguration
Ab Version 1.4.0 sind Kundendaten ausdrücklich vom Update ausgeschlossen und werden niemals überschrieben. Konkret betroffen sind:
config/scripts.csv– Ihre Task-Definitionenconfig/ftp-configs.json,sql-configs.json,copy-configs.jsonconfig/sync/– inkrementelle Sync-Status-Dateienconfig/email.json– SMTP-Einstellungenstate.jsonundlogs/
config/-Ordners vor größeren Updates ist trotzdem empfohlen.Änderungsübersicht
v1.5.0 — Mai 2026
- Inline-Skript-Editor: PowerShell, Batch, CMD und JavaScript können direkt in der Web-UI eingegeben werden — ohne externe Datei (siehe Kapitel 4)
- Neue Datei-Endung
.jsals Skript-Quelle (Node.js-Interpreter, Teil der Distribution) - Manual + Website mit Klarstellung zur JTL-Wawi-Rolle ergänzt
v1.4.3 — Mai 2026
- Update-Verhalten korrigiert: Windows-Dienst startet nach dem Update automatisch wieder, wenn er vorher als Dienst lief
- Web-UI lädt sich nach einem Hintergrund-Update selbst neu — keine manuelle Browser-Aktualisierung mehr nötig
v1.4.2 — Mai 2026
- Watch-Tasks: kein Fehler mehr beim manuellen Start ohne neue Dateien im Watch-Ordner
- Fehler-Counter pro Task per Klick auf die Fehler-Zahl zurücksetzbar
v1.4.0 — Mai 2026
- Software steht vollständig kostenfrei unter MIT-Lizenz
- Kein Lizenzschlüssel mehr nötig – alle Funktionen sind frei
- Kein Heartbeat / keine Telemetrie
- Unbegrenzt viele Jobs (vorher: max. 5 ohne Lizenz)
- Konfigurations-Schutz beim Update neu eingeführt
15. FAQ / Fehlerbehebung
Port 3847 ist bereits belegt
Eine andere Anwendung verwendet bereits den Standardport. Prüfen Sie mit folgendem Befehl, welcher Prozess den Port belegt:
netstat -ano | findstr :3847
Beenden Sie den störenden Prozess oder konfigurieren Sie OTIT-AUTO-JOBS auf einen alternativen Port.
Der Windows-Dienst startet nicht
- Stellen Sie sicher, dass
install-service.batals Administrator ausgeführt wurde. - Prüfen Sie das Windows-Ereignisprotokoll (Ereignisanzeige > Windows-Protokolle > Anwendung) auf Fehlermeldungen.
- Vergewissern Sie sich, dass das Dienstkonto ausreichende Berechtigungen für das Installationsverzeichnis besitzt.
Skripte werden nicht ausgeführt
- Überprüfen Sie in der Web-UI, ob das Skript auf Aktiv gesetzt ist.
- Stellen Sie sicher, dass der Pfad zur Script-Datei korrekt ist und die Datei existiert.
- Prüfen Sie die PowerShell Execution Policy:
Setzen Sie sie bei Bedarf aufGet-ExecutionPolicyRemoteSigned:Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
Firewall blockiert den Zugriff
Wenn Sie von einem anderen Rechner im Netzwerk auf die Web-UI zugreifen möchten, muss Port 3847 in der Windows-Firewall freigegeben werden:
netsh advfirewall firewall add rule name="OTIT-AUTO-JOBS" ^
dir=in action=allow protocol=tcp localport=3847
E-Mails werden nicht versendet
- Prüfen Sie, ob die E-Mail-Funktion in den Einstellungen aktiviert ist.
- Überprüfen Sie die SMTP-Zugangsdaten in den Einstellungen.
- Beachten Sie das Rate-Limiting: Pro Skript wird maximal eine E-Mail pro Stunde versendet.
- Prüfen Sie, ob der Server eine ausgehende Verbindung auf dem konfigurierten SMTP-Port herstellen kann.