{% extends "tesm_core/base.html" %} {% from "tesm_core/macros.html" import pill, empty_state, alert %} {% block page_title %}{{ device.name }}{% endblock %} {% block page_sub %}{{ device.ip }} · {{ device.mac }}{% endblock %} {% block breadcrumb %} {% endblock %} {% block topbar_extra %} {% if terminal_enabled and current_user.has('maintenance.execute') and device.credential_id %} {{ icon('terminal', size=15) }} Konsole {% endif %} {% if current_user.has('devices.execute') and restart_methods %} {% for method in restart_methods %}
{% endfor %} {% endif %} {% endblock %} {% block content %} {% if device.deleted_at %} {{ alert('Dieses Gerät liegt im Papierkorb (gelöscht am ' ~ (device.deleted_at | dt) ~ ').', 'warning') }} {% endif %}
{{ icon('activity', size=17) }} Zustand {% if not device.is_active %}{{ pill('deaktiviert', '') }} {% elif device.state == 'online' %}{{ pill('online', 'online') }} {% elif device.state == 'offline' %}{{ pill('offline', 'offline') }} {% else %}{{ pill('unbekannt', 'warning') }}{% endif %}
Antwortzeit {{ device.latency_ms | millis if device.latency_ms else '–' | safe }} letzte Messung
Fehlversuche {{ device.fail_count or 0 }} in Folge
Neustarts {{ device.restart_count or 0 }} insgesamt
Zuletzt erreichbar {% if device.last_ok_at %} {{ device.last_ok_at | dt }} {% else %}–{% endif %}
{{ icon('power', size=17) }} Neustarts
Die letzten {{ events | length }} Neustarts -- über den PoE-Port wie per SSH
{% if events %}
{% for event in events %} {% endfor %}
ZeitMethodeAuslöserErgebnisDauerDetail
{{ event.ts | dt }} {# Drei Wege, drei Anzeigen: alles ausser 'ssh' als "PoE-Port" zu zeigen hat RPC-Neustarts als PoE ausgegeben. #} {% if event.method == 'ssh' %}{{ pill('SSH', 'info') }} {% elif event.method == 'rpc' %}{{ pill('RPC', 'accent') }} {% elif event.method == 'pö' %}{{ pill('PoE-Port', '') }} {% else %}{{ pill(event.method or 'unbekannt', 'warning') }}{% endif %} {{ event.trigger }} / {{ event.actor }} {% if event.result == 'ok' %}{{ pill('erfolgreich', 'online') }} {% elif event.result == 'skipped' %}{{ pill('übersprungen', 'warning') }} {% else %}{{ pill('fehlgeschlagen', 'danger') }}{% endif %} {{ event.duration_ms | millis }} {{ event.detail | audit_detail }}
{% else %} {{ empty_state('Noch keine Neustarts', 'Dieses Gerät wurde noch nie neu gestartet.', 'power') }} {% endif %}
{{ icon('shield', size=17) }} SSH-Host-Schlüssel {% if host_keys %}{{ pill('freigegeben', 'online') }} {% else %}{{ pill('offen', 'warning') }}{% endif %}
Ohne freigegebenen Schlüssel verweigern Wartung und Konsole die Verbindung.
{% if current_user.has('devices.edit') %}
{% endif %}
{% set probed_type = request.args.get('probed_type') %} {% set probed_fingerprint = request.args.get('probed_fingerprint') %} {% if probed_type and probed_fingerprint and current_user.has('devices.edit') %}
{{ icon('alert', size=18) }}
Gelesener Schlüssel
{{ probed_type }} {{ probed_fingerprint }}

Vergleichen Sie den Fingerprint mit einer unabhängigen Quelle (Konsole am Gerät, Inventardokumentation), bevor Sie ihn freigeben.

{% endif %} {% if host_keys %}
{% for key in host_keys %}
{{ key.key_type }}
{{ key.fingerprint }}
{% endfor %}
{% if current_user.has('devices.edit') %}
{% endif %} {% else %}

Noch kein Schlüssel hinterlegt. Erst lesen, Fingerprint prüfen, dann freigeben.

{% endif %}
{{ icon('info', size=17) }} Stammdaten
{% if current_user.has('devices.edit') %} Bearbeiten {% endif %}
Name
{{ device.name }}
IP
{{ device.ip }}
MAC
{{ device.mac }}
Switch
{% if device.switch_hostname %} {{ device.switch_hostname }} / {{ device.port }} {% else %}nicht zugeordnet{% endif %}
Kategorie
{{ device.category or '–' | safe }}
Standort
{{ device.location or '–' | safe }}
Zugangsdaten
{{ device.credential_name or 'keine' }}
Automatischer Neustart
{{ device.auto_restart | yes_no }}
Angelegt
{{ device.created_at | dt }}
Geändert
{{ device.updated_at | dt }} von {{ device.updated_by or '-' }}
{% if device.notes %}

{{ device.notes }}

{% endif %}
{% if current_user.has('devices.edit') %} {% endif %}
{% endblock %}