Anrufliste exportieren

Forum zu aktuellen Geräten der LANCOM Router/Gateway Serie

Moderator: Lancom-Systems Moderatoren

Antworten
AnSt
Beiträge: 5
Registriert: 07 Jun 2024, 11:47

Anrufliste exportieren

Beitrag von AnSt »

Weiß jemand wie man die Anrufliste (Telefonie) die man sich im LANmonitor (unter Anrufe) ansehen kann irgendwie exportieren oder speichern? In der Übersichtsliste gibts zwar die Funktion speichern oder laden - aber die sind ausgegraut.
tobiasr
Beiträge: 243
Registriert: 22 Mär 2015, 12:03

Re: Anrufliste exportieren

Beitrag von tobiasr »

In welchem Format und wie oft? Spontan fällt mir da Scripten und per SNMP ein.
AnSt
Beiträge: 5
Registriert: 07 Jun 2024, 11:47

Re: Anrufliste exportieren

Beitrag von AnSt »

Oh je. Das wäre echt umständlich.
Aber irgendwie seltsam wenn es die Option gibt aber ausgegraut ist.
Gibts da keine Option das zu aktivieren?
tobiasr
Beiträge: 243
Registriert: 22 Mär 2015, 12:03

Re: Anrufliste exportieren

Beitrag von tobiasr »

Spannend, wie man auf eine einzelne Frage so überhaupt nicht eingeht.
AnSt
Beiträge: 5
Registriert: 07 Jun 2024, 11:47

Re: Anrufliste exportieren

Beitrag von AnSt »

Na ja das Format spielt ja keine Rolle man kann ja alles irgendwie bei Bedarf umwandeln - hauptsache erst mal exportieren. Wie oft ist ja auch zweitrangig aber ich sage mal sporadisch bei Bedarf.
tobiasr
Beiträge: 243
Registriert: 22 Mär 2015, 12:03

Re: Anrufliste exportieren

Beitrag von tobiasr »

Wirklich sporadisch. Per SSH (oder Telnet) einwählen und

Code: Alles auswählen

ls /Status/Voice-Call-Manager/Calls
Copy&Paste. bzw. die Terminalausgabe in eine Datei umleiten.
AnSt
Beiträge: 5
Registriert: 07 Jun 2024, 11:47

Re: Anrufliste exportieren

Beitrag von AnSt »

Ok danke - werd das mal bei Gelegenheit ausprobieren.
hschnei
Beiträge: 14
Registriert: 19 Mär 2021, 14:02

Re: Anrufliste exportieren

Beitrag von hschnei »

DIe Liste lässt sich speichern und ist eine csv Datei.
Ausgegraut sind Speichern und Laden nur wenn die
bestehende Liste noch nicht komplett geladen ist.


MfG
Hans-Jürgen
AnSt
Beiträge: 5
Registriert: 07 Jun 2024, 11:47

Re: Anrufliste exportieren

Beitrag von AnSt »

Ja danke - das hat jetzt geklappt.
Das laden der kompletten Liste dauert echt nen moment länger.
Aber man muß erst mal auf die Idee kommen das man warten muß bis alles komplett geladen ist.

Edit:
Habs mal getestet - es funktioniert aber nich so "ganz".
Manche Spalten werden nicht exportiert und wenn dann in komischen Zahlenkollonnen.
Aber besser als nichts und nicht ganz so kompliziert.

Hier könnte LANCOM echt mal ein kleines bisschen das Händchen anlegen um das so zu exportieren wie es auch in der Liste angezeigt wird.
Einfach 1:1 ohne was zu verändern oder weg zu lassen.
Dr.Einstein
Beiträge: 3224
Registriert: 12 Jan 2010, 14:10

Re: Anrufliste exportieren

Beitrag von Dr.Einstein »

Falls du brauchst, Python Skript, dass die Anruftabelle in eine Excel packt:

Code: Alles auswählen

import paramiko
import re
import openpyxl
from openpyxl.styles import Alignment
from openpyxl.utils import get_column_letter
from datetime import datetime

def detect_column_widths(header_line):
    # Verwende reguläre Ausdrücke, um die Startpositionen der Spalten zu finden
    positions = [match.start() for match in re.finditer(r'\S+', header_line)]
    if not positions:
        raise ValueError(f"Header line does not contain any non-whitespace characters: '{header_line}'")
    # Berechne die Spaltenbreiten basierend auf den Startpositionen
    column_widths = [positions[i+1] - positions[i] for i in range(len(positions) - 1)]
    # Füge die Breite der letzten Spalte hinzu
    column_widths.append(len(header_line) - positions[-1])
    return column_widths

def parse_data(data, column_widths):
    rows = []
    for line in data:
        row = []
        start = 0
        for width in column_widths:
            cell = line[start:start+width].strip()
            row.append(cell)
            start += width
        rows.append(row)
    return rows

def write_excel(data, output_file):
    wb = openpyxl.Workbook()
    ws = wb.active
    
    for row in data:
        ws.append(row)

    # Setze die Spaltenbreite und Formatierung als Text
    for column_cells in ws.columns:
        max_length = 0
        column_letter = get_column_letter(column_cells[0].column)
        for cell in column_cells:
            cell.alignment = Alignment(horizontal='left', vertical='center')
            cell.number_format = '@'  # Setze die Zellen als Textformat
            if cell.value is not None:
                if len(str(cell.value)) > max_length:
                    max_length = len(str(cell.value))
        adjusted_width = (max_length + 2)
        ws.column_dimensions[column_letter].width = adjusted_width

    wb.save(output_file)

# SSH-Verbindungsdetails
hostname = '1.2.3.4'
port = 22
username = 'root'
password = 'test1234'

# Befehl, um das Anrufprotokoll abzufragen
command = 'l /Status/Voice-Call-Manager/calls'

# SSH-Verbindung herstellen und Befehl ausführen
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, port, username, password)

stdin, stdout, stderr = client.exec_command(command)
output = stdout.read().decode()

# SSH-Verbindung schließen
client.close()

# Ausgabe in Zeilen aufteilen und die Zeile mit den Trennstrichen entfernen
output_lines = output.splitlines()
output_lines = [line for line in output_lines if not line.startswith('=============') and line.strip()]

# Überprüfen, ob es genug Zeilen gibt
if len(output_lines) < 2:
    raise ValueError("Output does not contain enough lines to parse headers and data.")

# Kopfzeile und Daten trennen
header_line = output_lines[0]
data_lines = output_lines[1:]

# Detektiere die Spaltenbreiten basierend auf der ersten Zeile (Header)
column_widths = detect_column_widths(header_line)

# Parse die Daten
parsed_data = parse_data([header_line] + data_lines, column_widths)

# Aktuelles Datum und Uhrzeit für den Dateinamen
timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
excel_file = f'Anrufprotokoll_{timestamp}.xlsx'

# Schreibe die Daten in eine Excel-Datei
write_excel(parsed_data, excel_file)

print(f"Anrufprotokoll wurde erfolgreich in {excel_file} gespeichert und formatiert.")
AnSt hat geschrieben: 07 Jun 2024, 18:10 Habs mal getestet - es funktioniert aber nich so "ganz".
Manche Spalten werden nicht exportiert und wenn dann in komischen Zahlenkollonnen.
Aber besser als nichts und nicht ganz so kompliziert.

Hier könnte LANCOM echt mal ein kleines bisschen das Händchen anlegen um das so zu exportieren wie es auch in der Liste angezeigt wird.
Einfach 1:1 ohne was zu verändern oder weg zu lassen.
Das liegt an deinem Excel. Musst beim Import der Daten die Formatierung deaktivieren. Gucks dir im Editor an...
Antworten