Alle Beiträge von DonMatteo

Blog Author

Unified Communication

Auch in der Telefonie bleibt die Digitalisierung nicht stehen, dabei sticht das Asterisk Tool Kit als eine interessante alternative zu kommerziellen Telefonielösungen hervor.

Asterisk ist eine Open Source basierte Telefonanlagen Software für den Einsatz einer IP PBX unter Linux, lauffähig auf unterschiedlichen Rechner Plattformen. Asterisk beinhaltet  umfangreiche CTI Funktionalitäten, sowie eine API Schnittstelle AMI zur Integration von CTI Anwendungen. Unterstützt werden IP-Telefonie (VoIP) mit unterschiedlichen Protokollen wie SIP/SSIP, IAX und Fax T.38, mittels Hardware wird auch ISDN und POTS unterstützt, so können Endgeräte mit analog Telefonanschluss genutzt werden.

Mark Spencer hat Asterisk ursprünglich bei der Firma Digium entwickelt. Mittlerweile haben sich noch weitere Entwickler der Asterisk-Gemeinde angeschlossen und so stammen viele Erweiterungen und Applikationen auch von anderen Contributoren. Der Name beruht auf der Bezeichnung des Sternsymbol, dieses als Wahlfunktion die Steuerung der Telefonie regelt, wie beispielsweise *72 für die Weiterleitung.

Asterisk funktioniert auf einer Reihe unterschiedlicher Systeme. Neben Personal Computern mit x86-Prozessor läuft Asterisk auch auf dem Raspberry Pi und Router die OpenWrt unterstützen, ebenfalls werden Installationen auf Embedded Systeme mit Flash Speicher angeboten, wie dem ALIX Board von PC Engines.

Unified Communication

Bei der Portierung auf ARM Prozessoren kommen auch kommerzielle Asterisk basierte Telefonie Lösungen auf den Markt, eine davon ist die UCM6202 von Grandstream, diese für rund 220 EURO erhältlich ist.

Hybrid IP PBX mit 1 GB RAM und 4 GB Flash, ein NAT Router mit WAN und LAN Port, diese in Switch Mode geschalten werden können. Für analog Anschlüsse gibt es je 2 FXS und FXO Ports. Ein 2 Zeilen Display mit IP Adresse und Schnittstellen Mode.

Die Unified Communication UCM6202 beinhaltet umfangreiche CTI Funktionalitäten, in der neusten Firmware (1.0.15.16) wird Asterisk 13 und ein komfortables AJAX unterstütztes WebUI geboten.

Benutzer haben Kontrolle über ein WebUI und können Einstellungen vornehmen. Anrufe und Präsenz Status können im Benutzerpanel überwacht werden. Gemeinsame Telefonbücher sind über LDAP aus Active Directory abrufbar.

Die UCM6202 bietet dem Teilnehmer Information über laufende, verpasste und abgehaltene Verbindungen, sowie Sprachnachrichten. FollowMe und Weiterleitungen können aktiviert werden, Konferenzen abgehalten und geplant werden, dazu Einladungen per Email versenden, mit Integrierbarkeit externer Kalender, wie Google Kalender.

Funktionen

Die UCM6202 unterstützt bis zu 500 registrierte Nutzer, 50 SIP Trunks und 30 parallele Gespräche, ohne Beschränkung wie etwa für anzahl von Lizenzen. Für Grandstream SIP Endgeräte ist eine Zero Configuration Provisionierung möglich. Es wird größtmögliche Sicherheit durch die Anwendung von SRTP, TLS und HTTPS ermöglicht. Zwei Gigabit Netzwerkanschlüsse mit integrierter PoE Stromversorgung. Interaktive Sprachansagen (IVR) bis max. 5-Stufen (Interactive Voice Response). Integrierter Server zur Sprachaufzeichnung, Zugang und Abruf über die Web-Schnittstelle. Mehrfach Zeitgesteuerte Regeln für Ansagen von Bürozeiten und Feiertage. Anruf-Warteschlange für mehr Effizienz bei hohem Gesprächsvolumen. Integrierte Anruf Aufzeichnung (CDR) mit vielen Details wie Zeit, Datum, Nebenstelle, genutzte Leitung usw. Mehrsprachige Ansagen zur effizienten Verteilung ankommender Gespräche. Integriertes LDAP und XML Telefonbuch, flexible Dial-Pläne. Unterstützung für alle SIP-Video-Endgeräte, sofern diese H.264, H.263 oder H.263+ Codecs nutzen. Anrufbeantworter und Fax zu E-Mail Weiterleitung. Virtuelle Konferenzräume, WebRTC, PMS System mit Hotel Mini-Bar, Room Reservation und CTI Server. API Schnittstellen und Integration für Salesforce und SugarCRM. Backup Automatisierung mit Möglichkeit für externe Speicher. Firewall zur Steuerung von Zugang und Fail2ban für abwehr von Brute-Force und DDoS Angriffe. Syslog Protokollierung auf Remote Host zur Überprüfung und Fehlersuche. Asterisk Tool Kit und Linux Open Source basierend (ohne Lizenzkosten).

Grandstream App für Video anrufe auf iOS und Android Smartphone.

      

Die Mobile App Wave von Grandstream mit Möglichkeit für Nachrichten, Konferenz, Transfer und Video Verbindungen.

Abbildung: GXP1625, UCM6202
Mit Grandstream IP Telefone wird Zero Config Provisionierung mit automatischer Konfiguration über TR069 und XML möglich. die Geräte werden mit IP oder MAC Adresse gescannt, Geräte anderer Hersteller sind einsetzbar, mit herkömmlicher Provisionierung über TFTP Server oder das TR069 Protokoll, falls vom Hersteller vorgesehen, ansonsten gibt es die manuelle Einrichtung.

Hersteller Quelle:
Grandstream UCM6202 IP PBX Series
Open Source Asterisk Toolkit

 

Python Loops mit Break- Continue- Pass


 for- und while-Loops auf effiziente Weise für zyklische und automatisierte Aufgaben nutzen.

Synopsis

Manchmal bestimmen externe Faktoren wie Schleifen in einem Programm durchlaufen werden. Wenn dies eintrifft, möchte man möglicherweise dass die Schleife in einer Routine vollständig beendet wird, oder einen Teil der Schleife überspringt, bevor sie fortfährt, oder es soll ein externer Faktor ignorieren werden. Diese Aktionen können mit der Anweisung breakcontinue und pass durchgeführt werden.

Anweisung break

In Python bietet die break Anweisung die Möglichkeit, eine Schleife zu verlassen, wenn eine externe Bedingung ausgelöst wird. Hierzu setzen wir die break Anweisung in den Codeblock unterhalb der Schleife, normalerweise nach einer bedingten if-Anweisung.

Schauen wir uns ein Beispiel an, das die break Anweisung in einer for-Schleife anwendet:

In diesem kleinen Programm wird die Variable zahl auf 0 initialisiert. Dann wird eine for-Anweisung in die Schleife gelegt, diese durchläuft solange die Variable zahl kleiner als 10 ist.

Innerhalb der for-Schleife erhöht sich die Zahl bei jedem Durchlauf bedingt um inkrementell 1 zahl = zahl + 1.

Dann bei der if-Anweisung die den Zustand zeigt, wenn die Variable zahl der ganzen Zahl 5 entspricht, wird die Schleife abgebrochen.

Innerhalb der Schleife befindet sich auch eine print() Anweisung, die bei jeder Iteration der for-Schleife ausgeführt wird, bis die Schleife bei der break Anweisung abbricht.

Um zu sehen, wann wir außerhalb der Schleife sind, haben wir eine abschließende print() Ausgabe außerhalb der for-Schleife eingefügt.

Wenn wir diesen Code ausführen, erscheint unsere Ausgabe wie folgt:

Es zeigt sich, sobald die Ganzzahl zahl als äquivalent zu 5 bewertet wurde, die Schleife abbricht, da das Programm dies durch die break-Anweisung tun soll.

Die break-Anweisung bewirkt also, dass ein Programm aus einer Schleife ausbricht.

Anweisung continue

Die continue-Anweisung gibt uns die Möglichkeit, den Teil einer Schleife zu überspringen, in diesem eine externe Bedingung ausgelöst wird, aber bis zum Rest der Schleife beendet wird. Das heißt, die aktuelle Iteration der Schleife wird unterbrochen, aber das Programm kehrt zum Anfang der Schleife zurück.

Die continue-Anweisung befindet sich innerhalb des Codeblocks unter der Schleifenanweisung, normalerweise nach einer bedingten if-Anweisung.

Wenn wir das selbe in einem for-Loop wie oben mit der Break-Anweisung anwenden, verwenden wir einfach eine continue-Anweisung anstelle der break-Anweisung:

Der Unterschied bei der Verwendung der continue-Anweisung anstelle einer break-Anweisung besteht darin, dass unser Code trotz der Störung weiter durchläuft, wenn die Variable zahl gleich 5 bewertet wird. Schauen wir uns unsere Ausgabe an:

Hier sehen wir, dass die Linie „Zahl ist 5“ nie in der Ausgabe erscheint, aber die Schleife fährt nach diesem Punkt fort, und die Zahlen 6-10 werden ausgegeben, bevor die Schleife verlassen wird.

Mit der continue-Anweisung können in tief verschachtelten Code Fehler vermeiden werden, auch könne hierdurch Loops optimiert werden, indem man häufig auftretende Fälle, die man ablehnen möchten, eliminiert.

Die continue-Anweisung bewirkt, dass ein Programm bestimmte Faktoren überspringt, die innerhalb einer Schleife auftreten, und dann den Rest der Schleife fortsetzt.

Anweisung pass

Wenn eine externe Bedingung ausgelöst wird, kann mit der pass-Anweisung die Bedingung verarbeitet werden, ohne dass die Schleife in irgendeiner Weise beeinträchtigt wird. Der gesamte Code wird weiterhin gelesen, sofern keine break oder eine andere Anweisung auftritt.

Wie bei den anderen Anweisungen befindet sich die pass-Anweisung innerhalb des Codeblocks unter der Schleifenanweisung, normalerweise nach einer bedingten if-Anweisung.

Verwenden wir den gleichen Codeblock wie oben, ersetzen jedoch die Anweisung break oder continue durch eine pass-Anweisung:

Die pass-Anweisung, die nach der if-bedingten Anweisung auftritt, teilt dem Programm mit, die Schleife weiterhin auszuführen und ignoriert die Tatsache, dass die Variable zahl während einer ihrer Iterationen als äquivalent zu 5 bewertet wird.

Wir werden das Programm ausführen und uns die Ausgabe ansehen:

Bei Verwendung der pass-Anweisung in diesem Programm stellen wir fest, dass das Programm genauso ausgeführt wird, als wenn es keine bedingte Anweisung im Programm gäbe. Die pass-Anweisung weist das Programm an, diese Bedingung zu ignorieren und das Programm wie gewohnt weiter auszuführen.

Die pass-Anweisung kann minimale Klassen erstellen oder als Platzhalter fungieren, wenn an neuem Code gearbeitet wird und auf einer algorithmischen Ebene gedacht wird, bevor Details herausgearbeitet werden.

Fazit

Durch die break, continue und pass-Aussagen in Python ermöglicht es uns, for– und while-Loops im Code effektiver anwenden zu können.

 

Docker DevOps Continuous Delivery

Docker im DevOps und Continuous Delivery Umfeld wird ein zunehmend wichtiger Bestandteil. Docker ist eine Virtualisierungslösung, die ohne Hypervisor auskommt, es wird Operating-system-level Virtualization mit Linux-Containern verwendet. Im Backend verlässt Docker sich ausschließlich auf LXC. Diese Container sind unabhängig voneinander, aber verwenden Teile des Linux-Kernels als Abstraktion gemeinsam. Dadurch ist die Effizienz wesentlich höher als bei anderen Virtualisierungslösungen.

Auf Operating-system-level Virtualization basierende Lösungen sind die bekanntesten Vertreter dieser Technik die Linux-Container. Dabei ist Docker weit verbreitet. Docker konkurriert mit dem auf App Container (appc) basierendem Rocket (rkt). Die Open Container Initiative (OCI) strebt eine Vereinheitlichung und gemeinsame Standards für Container-Formate und Container-Laufzeitumgebungen an.

Das Docker Prinzip

Nicht wie Hypervisoren zur Virtualisierung bietet Docker keine vollständige Virtualisierung von virtuellen Maschinen, vielmehr handelt es sich um Linux-Container (LXC oder Libcontainer, und chroot, Namespaces, Cgroups). Diese Container sind unabhängig voneinander, aber verwenden Teile des Linux-Kernels gemeinsam. Dadurch ist die Effizienz wesentlich höher als bei anderen Virtualisierungslösungen. Auf einer Hardware können wesentlich mehr Docker-Container betrieben werden als VMs.

Diagramm: Virtual Machines und Containers

Als Hypervisor basierte Lösung war Docker bis April 2016 auf Linux Host Systeme angewiesen. Auf Windows und Mac OS X konnte es nur mit einem zusätzlichen Linux-Layer installiert werden, beispielsweise über Docker Toolbox (beinhaltet Boot2Docker und Oracle VirtualBox). Ähnliches gilt für das Gast-Betriebssystem wo nur Linux möglich ist. Der Gast verwendet den Linux-Kernel des Host Systems.

Seit April 2016 gibt es Beta-Versionen von Docker for Mac and Docker for Windows, die als native Anwendungen laufen und ohne VirtualBox auskommen. Die Docker-Engine läuft unter einem Alpine-Linux auf einer virtuellen Maschine (Hyper-V bei Windows und xhyve in OS X).

Die Docker Machine

Die Boot2docker Machine unter Windows 10 wird als Virtuelle Linux Machine in VirtualBox ausgeführt. DevOps die beim deployen mit ESXi Hypervisoren arbeiten, benutzen oft die VMware Workstation, diese performanter ist als die VirtualBox, bevor die VMware Workstation aber genutzt werden kann, wird der Treiber von pecigonzalo benötigt, die Treiberdatei Docker Machine VMware Workstation Driver wird in das Programm Verzeichnis, Docker Toolbox kopiert.

  Docker Machine VMware Workstation Driver

Dieses Plugin für Docker Machine erstellt Docker-Hosts lokal auf einer VMware Workstation.

Abbildung: boot2docker shell

Ducker – Up and Running: von Karl Matthias bei O’REILLY

 

KVM Hypervisor auf CentOS7

KVM ist eine Open-Source Hardware Virtualisierungssoftware, mit dieser Linux-basierte und Windows-basierte virtuelle Maschinen gleichzeitig ausgeführt werden können. KVM wird als Kernel-basierte Virtuelle Maschine bezeichnet und ist eine alternative zu VMware ESXi und Xen, dabei wird durch die Installation des KVM-Pakets das KVM-Modul in den aktuellen Kernel geladen und aus einer Linux-Maschine ein Hypervisor gebildet.

In diesem Beitrag wird gezeigt, wie ein KVM Hypervisor auf CentOS 7.x und RHEL 7.x installiert wird, um danach virtuelle Maschinen zu installieren.

INSTALLATION

Bevor man mit der KVM-Installation fortfährt, überprüft man ob die CPU des Systems die Hardware-Virtualisierung unterstützt. Dazu folgendes Command ausführen in der root Shell  

Es sollte in der Ausgabe das Wort vmx oder svm erscheinen, ansonsten unterstützt die CPU keine Virtualisierung. Möglicherweise lohnt sich ein gang in das System BIOS um die VT-x Boot Einstellung zu aktivieren.

Die KVM-Pakete und die zugehörigen Module werden installiert.

Der KVM Service kann nun aktiviert und gestartet werden.

Wir überprüfen ob die KVM Module auch wirklich gestartet wurden.

Falls eine Minimal CentOS 7 oder RHEL 7 Installation vorliegt, startet der virt-manager nicht, wir müssen also noch X-Window installieren.

Starte den Server neu und versuche dann, den virtual manager zu starten.

Bevor wir beginnen VMs zu deployen, erstellen wir zunächst ein Bridge Interface. Die Bridge-Schnittstelle ist erforderlich, wenn man zum Hypervisor von ausserhalb des Netzwerks auf virtuelle Maschinen zugreifen möchte. In unserem Beispiel heisst das Ethernet Interface ifcfg-eth0.

Bearbeite nun die Interface-Datei ifcfg-eth0 und trage folgendes ein:

Bearbeite die Bridge-Datei ifcfg-br0 und lege folgendes fest:

Starte den Netzwerkdienst neu um die Bridge zu aktivieren.

Überprüfe das Bridge Interface mit dem folgenden Befehl:

 Wer es lieber den Network-Manager machen lässt, der kann das Bridge Interface wie folgt erzeugen:

Virtuelle Maschinen können nun entweder über die Befehlszeile mit dem Befehl virt-install oder über das GUI virt-manager erzeugt werden.

Im GUI gehe hierzu auf die Option Datei und klicke auf New virtual Maschine.

Die virtuelle Maschine wird nun mit Hilfe des Wizard erzeugt.

Virtuelle Maschinen aus der Befehlszeile erstellen:

Aus dem virtual Manager werden die VMs hochgefahren und verwaltet, es wird der Status und die Systemlast angezeigt, ähnlich wie man es von vSphere kennt.

Abbildung: KVM virtual Manager

Weiter ist virt-manager aus Cygwin in Windows 10 ausführbar, hierzu muss Cygwin64 mit dem Xorg-Server und virt-manager installiert sein, mit dem virt-manager verbindet man zum KVM Hypervisor.

Abbildung: Cygwin virt-manager Verindung
Abbildung: Cygwin virt-manager

 

Master Browser Lookup

Die von Windows-Clients freigegebenen Ordner oder Drucker sollten in der Netzwerkumgebung der Clients erscheinen. Bleibt die Netzwerkumgebung leer, liegt es oft beim „Computer-Browser“ Service. Windows versucht, in der Netzwerkumgebung alle PCs eines Windows-Netzwerks anzuzeigen.

Zunächst muss sichergestellt werden, dass sein Windows-Netzwerk überhaupt richtig funktioniert. Die Windows-Dienste „Arbeitsstationsdienst“ und „Server“ müssen laufen und in den Eigenschaften der Netzwerkverbindung müssen die „Datei- und Druckerfreigabe“ sowie der „Client für Microsoft-Netzwerke“ aktiv sein, und TCP/IP über NetBIOS muss aktiviert sein. Zu beachten ist das Clients die nicht in einer Domäne sind, dabei in der selben Workgroup sind, wobei WORKGROUP und ARBEITSGRUPPE unterschiedliche Gruppen sind. Wenn das alles noch nicht zum erfolg führt, solle man den Computer im Netzwerk suchen, dieser zum Master Browser delegiert wurde.

Das NBTscan ist ein Programm zum Scannen von IP-Netzwerken für NetBIOS-Namensinformationen. Es sendet eine NetBIOS-Statusabfrage an jede Adresse im angegebenen Bereich und listet empfangene Informationen in für Menschen lesbarer Form auf. Für jeden antwortenten Host werden die IP-Adresse, der NetBIOS-Computername, der Benutzername und die MAC-Adresse des Computer angezeigt.

Um den Master Browser in einem lokalen Netzwerk zu ermitteln, kann folgender Inhalt in einer Batchdatei angelegt werden.

   Copy Paste in Batchdatei nbt.bat speichern und mit Übergabe des IP-Netzwerk in der Eingabeaufforderung als Administrator ausführen, das Programm nbtscan.exe und cygwin1.dll muss im selben Verzeichnis sein, oder der Pfad zum Programm muss sich in der Suchpfad Umgebung befinden.

 Download Quelle NBTScan

Oft hilft es dann wenn der PC dieser der Master Browser in seinem Netzwerk ist, neu zu starten, damit wird die Wahl zur Delegierung eines anderen Computer ausgelöst. Microsoft legt hier Prioritäten fest, durch regeln wird die Zuweisung (election) zum Master Browser erteilt. Administratoren möchten es nicht einfach Zufallsregeln überlassen, wer Master Browser sein soll, dazu öffnet man Regedit und geht zu folgendem Schlüssel.

   Bearbeitung des REG_SZ Schlüssel MaintainServerList und Festlegung auf FALSE oder TRUE, für deaktivieren oder aktivieren. Bei Windows XP und Server 2003 heisst der REG_SZ Schlüssel IsDomainMaster mit Wert FALSE / TRUE, und MaintainServerList mit dem Wert AUTO / NO / YES. Die Änderung tritt nicht sofort in kraft und kann bis zu 48 Minuten dauern.

Bei Linux ist die Samba Konfigurationsdatei smb.conf zuständig, in folgendem Beispiel wird ein Samba Server mit höchster Priorität zum Master Browser gewählt, geeignet in einem Netzwerk ohne Windows PDC. In Netzwerke in diesen sich ein Windows PDC befindet ist es nicht empfohlen.

 

Abbildung: Computer Browser Service Architecture

NBTStat ist ein Befehlszeilentool für die Problembehandlung von NetBIOS-Name über TCP/IP (NetBT) Auflösungsprobleme, es gehört zum Windows Standard. Es zeigt Protokollstatistiken und aktuelle TCP/IP-Verbindungen mit NetBT.

NetBIOS-Namentabellen Typ <00> wird in Hex ausgegeben.

<00> gibt die Domäne an zu der dieser Computer gehört
<03> Computernamen der dem Messenger-Dienst zugeordnet ist
<20> Computernamen der dem Server-Dienst zugeordnet ist
<1C> Internetgruppenname bei Domänencontroller registriert
<1B> Identifizieren eines Domain-Master-Browsername
<1E> Computer kann als Backup Browser in dieser Domäne dienen
<03> Benutzername aktuell an diesem Computer angemeldet
<1D> Identifizieren des Segment-Master-Browsers ohne Domäne