Portscan-Einzeiler mit Bordmitteln

Das seit einigen Jahren mit der PowerShell 4.0 eingeführte Cmdlet Test-NetConnection ist mit Sicherheit inzwischen ein vielgenutzter Helfer und ein sinnvoller Ersatz für die Verwendung von Telnet, um zu prüfen, ob ein Port offen ist.
Wer sich darüber hinaus die Zeit nimmt und die verfügbaren Parameter anschaut, findet neben des einfachen Socket-Connects noch eine ganze Menge weiterer hilfreicher Optionen.

Leider akzeptiert der Parameter „Port“ nur einen einzelnen Integer und kein Array, um mehrere Ports zu testen. Da der Parameter allerdings Pipelineeingaben akzeptiert, kann man das Problem schnell lösen.

PSPortScan

@(22, 80, 139, 443) | % { Write-Host Port $_":" $(Test-NetConnection 10.0.27.1 -Port $_ -InformationLevel Quiet -WarningAction SilentlyContinue) }

Gut kombinierbar ist das zudem mit der Array-Initialisierung mit Hilfe des Range-Operators (..), mit dem man größere Bereiche abdecken kann.

Das Ergebnis ist ein im Standard des Betriebssystems enthaltener Portscanner. Zwar eine sehr einfache, auf das absolute Minimum reduzierte Version eines Portscanners aber für einen schnellen Test meist ausreichend.

Advertisements

Lync Server 2013 & Skype for Business 2015 Protocol Workloads

Ein Muss für jeden Lync- bzw. Skype for Business-Admin, der noch ein Stückchen Tapete in seinem Büro sehen kann!

lyncposter

Die Poster offenbaren keine großen Geheimnisse mehr – dennoch wurden beide Visualisierungen auf den aktuellen Stand gebracht und ganz frisch in den Microsoft Download-Bereich als PDF und Visio-Grafik entlassen. Die umfangreichen Darstellungen der Kommunikationsrichtungen und Verbindungen zwischen Clients und Serversystemen lassen kaum Wünsche offen.

Inhalte

  • Server/Client-Kommunikation und Protokolle für…
    • Instant Messaging & Presence
    • A/V & Web Conferencing
    • Application Sharing
    • Enterprise Voice
  • Notwendige/Optionale Zertifikat-Konfiguration
  • DNS-Konfiguration
  • CMS

Download

 

Benachrichtigung bei Änderung von Homematic-Systemvariablen

HomeMaticNotification_SysVar-NotifyDie aktualisierte Version des Homematic-Benachrichtigungsdienstes ist online. Bislang informierte der Dienst stets nur über geänderte Zustände von Homematic-Sensoren bzw. -Aktoren.

Mit dem neuen Release (RC-Version 1.1.10 bzw. Version 1.2) kann man sich nun auch über geänderte Systemvariablen informieren lassen, was beispielsweise die Alarm-Benachrichtigung oder Informationen zu von Homematic-Programmen gesetzten Systemzuständen vereinfacht.
Die bislang verfügbaren Benachrichtigungsprovider (PushOver, Pushalot, E-Mail und Telegram) funktionieren natürlich auch für die neue Funktion wie gehabt.

Konfiguration

Um für eine Systemvariable Benachrichtigungen zu erhalten, muss diese mit ihrer Homematic-internen ID (IseId) in der Konfigurationsdatei als notifyVariable-Element angelegt werden:

<notifyVariable Name="Anwesenheit" IseId="1234" IsImportant="false" />

Weitere Details zur Konfiguration gibt es in der Beispielkonfiguration ConfigTemplate.xml

Die IseId kann man mit Hilfe des für den Service ohnehin benötigten Addons XML-API herausfinden, indem man die Seite sysvarlist.cgi aufruft. In der XML-Struktur kann man die IseId als Attribut der einzelnen Variablen finden, die auf der CCU2 definiert sind.

Den aktuellen Build findet man an der üblichen Stelle im OneDrive (MD5: 5820d546af62c43ada0eaa3b517ea4dd). Alternativ dazu ist der jeweils aktuelle Quellcode im GitHub-Repo HomeMatic-Notification-Service zu finden.

Viel Spaß beim Ausprobieren. Über Feedback, Anregungen und Ideen freue ich mich!

Push Notification via Telegram

Bis vor ca. zwei Wochen hatte ich mit dem Benachrichtigungsdienst Pushalot von Maciej Olesiński eine wirklich gute und verlässliche Plattform, um mir allerlei Statusmeldungen an zentraler Stelle zukommen zu lassen. Dann wurde es plötzlich ruhig auf meinen mobilen Endgeräten. Kein Server mehr, der mir seinem Gemütszustand mitteilte, keine Wohnungstür mehr, die mich über ihren Status informiert…
Inzwischen bin ich auch nicht mehr gänzlich allein mit dem Thema, wie man beispielsweise auf Reddit lesen kann. Das beruhigt ein wenig, da es nicht an mir zu liegen scheint, andererseits löst es aber auch das Problem nicht.

TelegramPushNotificationsWie dem auch sei – diesem Umstand geschuldet habe ich mich kurzerhand mit der API des Messenger-Dienstes Telegram befasst und entschieden, den Messenger für meine Zwecke und damit als Ersatz für die ausbleibenden Benachrichtigungen von Pushalot zu verwenden.
Die API ist überaus funktional, reich an Funktionen und durchgehend gut dokumentiert. Der Service lässt sich unkompliziert über die heute gängigen Wege ansprechen.
Spannend ist das Konzept der Telegram-Bots als unpersonalisierte Service-Accounts, mit denen man in seiner Rolle als Nutzer interagieren kann. Dabei können vorhandene genutzt oder individuelle, neue Bots angelegt werden. Telegram geht diesen Weg sehr konsequent, so dass ebenfalls die Bedienung der Plattform auf Ebene des Entwicklers über einen solchen Bot läuft. Will man einen Bot erstellen und konfigurieren, so chattet man mit dem @BotFather, dem man über definierte Kommandos die entsprechenden Einstellungen übergibt bis hin zum Profilfoto des eigenen Bots.

Mit relativ geringem Aufwand haben in den letzten Tagen die beiden im vergangenen Jahr veröffentlichten Tools – der Homematic Notification Service sowie das PushMonitoring – einen zusätzlichen Benachrichtigungskanal für die Nutzung von Telegram erhalten.

Das Setup…

…der beiden Tools für die Verwendung der Telegram-Bots funktioniert wie folgt:

  1. Telegram installieren
  2. Als Empfänger die eigene Chat-ID herausbekommen
    (z.B. dem Bot @get_id_bot eine Nachricht mit /my_id senden)
  3. Die Chat-ID in der Konfiguration des Service/Tools ( <notifyBy /> bzw. <sendTo />) hinterlegen
  4. Den jeweiligen Bot – „Homematic Alert“ bzw. „PushMonitoring“ – aufrufen und mit der Nachricht /start aktivieren

Homematic Notification Service

<notifyBy NotifyProvider="Telegram">123456789</notifyBy>

PushMonitoring

  <sendInterfaces>
    <sendTo Type="Telegram" ApiKey="123456789" />
  </sendInterfaces>

Alternativ können statt der eigenen Chat-ID noch Gruppen-IDs öffentlicher Gruppen verwendet werden, wenn der Bot in der Gruppe Mitglied ist.

Die Push-Messages, die über die beiden Tools versendet werden verhalten sich wie normale Chat-Nachrichten, die man vom Kontakt des jeweiligen Bots erhält:

TelegramPushWindowsPhone

Es ist ein wenig schade, dass Pushalot so ganz ohne weitere Informationen abgetaucht ist. An dieser Stelle vielen Dank an die Plattform und ihren Betreiber für die lange Zeit an Zuverlässigkeit sowie das kostenfreie Angebot!

Die beiden Tools (Homematic Notification Service + PushMonitoring) gibt es in aktualisierter Version an der üblichen Stelle im OneDrive oder den Quellcode unter GitHub.

Win32 oder .NET in UWP-App konvertieren

Bestehende Windows Desktop-Anwendungen mit nur wenig Kenntnis der UWP-Apps in eine vollwertige Windows 10 App konvertieren. Dieses Ziel hat man sich bei Microsoft mit dem Projekt Centennial gesetzt.
Der auf der Build 2016 vorgestellte Desktop App Converter war bereits vor einigen Monaten als Preview zum Download zu haben.

Der Konverter führt die Desktop-Anwendung bzw. deren Installer in einer isolierten Windows-Umgebung aus, welche dem Konverter als Windows Basis-Image beiliegt. Dabei werden alle Aktionen in Registry und Dateisystem erfasst und als Grundlage für ein neues AppX-Package verwendet. Diese UWP-App verfügt über ihre eigene Identität, was für die Verwendung der WinRT-APIs sowie die Integration von Features wie Live-Toasts, -Kacheln, Hintergrundaufgaben und Ähnliches erforderlich ist.

Microsoft sieht für Entwickler, die sich mit dem Schwenk auf die neue Plattform schwer tun, einen fließenden Migrationsprozess vor. Zuerst soll die Portierung auf die UWP-App per Konverter erfolgen. Nach dem Bereitstellen und Testen der App könne man UWP-Features ergänzen und die Anwendung Schritt für Schritt optimieren. Zu guter Letzt soll die UWP-App dann für alle Windows-Zielplattformen portiert werden können.

Vor ein paar Tagen gab es eine neue Version v0.1.21 im Downloadbereich inklusive der Windows Base Images 14371 und 14372. Einen guten Einstieg ins Thema bietet die Dokumentation des Konverters.

Ich wage zu bezweifeln, dass dies den mit großer Wahrscheinlichkeit erhofften Durchbruch für die Windows Apps bringen wird, bin aber gespannt, ob der Konverter eine echte Alternative gegenüber dem manuellen Portieren ist und einen entsprechenden Mehrwert bietet. Sollte dem so sein, werde ich ganz sicher ein wenig ausführlicher darüber berichten.

Homematic Notification Service

Ganz heimlich, still und leise hatte ich hier an dieser Stelle zum vergangenen Weihnachtsfest ein Stückchen Software in die große, weite Welt entlassen und nicht viele Worte darüber verloren: den Benachrichtigungsdienst für die Homematic CCU2.

Wofür dieser Benachrichtigungsdienst gut ist, ist schnell erklärt. Wer ein Heimautomatisierungssystem aus der Produktion der eQ-3 AG sein Eigen nennt, hat oft mehr als nur zeitgesteuerte Beleuchtung oder Heizungsregelung im Sinn. Ist man nicht zu Hause, ist eine Alarmschaltung oder ein Monitoring der Rauchmelder nützlich. Leider ist die Einrichtung einer zeitgemäßen Benachrichtigung über Änderungen von Schaltzuständen, zum Beispiel beim Öffnen einer Tür oder Erkennung von Bewegung über einen Bewegungsmelder, mit Bordmitteln nicht ganz trivial zu realisieren und mündet gelegentlich in eine instabile oder hängengebliebene CCU2. Um hier Abhilfe zu schaffen, habe ich mir zum Thema ein paar Gedanken gemacht und eine einfache Dienstanwendung gebastelt.

Das eigentliche Highlight ist die Möglichkeit zu haben, sich bei wichtigen Ereignissen per Push-Message direkt auf das Handy benachrichtigen zu lassen – hier im Beispiel die App Pushalot unter Windows 10 sowie auf dem Handy unter Windows Phone 8.1:

Die Anwendung ist als Windows-Dienst implementiert, versendet Benachrichtigungen für Ereignisse der per Konfiguration angegebenen Homematic-Sensoren und protokolliert auftretende Fehler im Eventlog. Kurz gesagt: reine Backend-Logik. Um dennoch die Funktion der Anwendung sowie der erstellten Konfigurationsdatei testen zu können, gibt es zusätzlich eine Windows-Forms Applikation, die sowohl die aus der Konfiguration ausgelesenen Einstellungen und Benachrichtigungselemente darstellen kann, als auch auszuführende Benachrichtigungen versendet/simuliert und Fehler protokolliert.

HomeMaticNotification_TST

Die Basiskonfiguration (Pfad zur Konfigurationsdatei, Ausführungsintervalle, etc.) des Dienstes oder auch der Anwendung ist in der jeweiligen App-Config „SVC_HomeMaticNotification.exe.config“ zu finden. Die wesentlich wichtigere, inhaltliche Konfiguration wie Benachrichtigungsgruppen, Benachrichtigungsziele sowie die zu überwachenden Geräte sind in einer separaten XML-Konfigurationsdatei zu konfigurieren.

HMN_SampleConfig

Um nicht nur einen Empfänger von einer Dienst-Instanz zu benachrichtigen, können parallel mehrere Gruppen von Benachrichtigungen (notifyGroup) mit unterschiedlichem Umfang, Einstellungen und Empfänger hinterlegt werden. Pro Gruppe kann ein Benachrichtigungsziel (notifyBy) festgelegt werden, was entweder ein Key der Push-Dienste Pushalot (NotifyProvider=“Pushalot“) oder Pushover (NotifyProvider=“Pushover“) sein kann oder auch eine E-Mail-Adresse (NotifyProvider=“Email“).
Für ein Benachrichtigungselement (notifyItem), ein per Device-Serial adressiertes Gerät, können erweiterte Einstellungen konfiguriert werden, so dass beispielsweise zu festgelegten Tagen/Uhrzeiten (silenceTimes/silence) oder bei dem Zutreffen bestimmter Bedingungen (conditions), wie Schaltzuständen weiterer Geräte (devCondition) bzw. Systemvariablen der Homematic-Zentrale (varCondition), Benachrichtigungen nicht übermittelt werden dürfen.

Das Monitoring der Homematic-Komponenten erfolgt in der vorliegenden Version nicht wirklich ereignisgesteuert, sondern bedient sich einem design-technisch nicht allzu schönem Workaround, der dies lediglich so erscheinen lässt. Allem voran die in meinem letztjährigen Post zum Thema erwähnten Schwierigkeiten mit der Eventregistrierung über die native Schnittstelle der CCU2, XML-RPC, führten dazu, dass ich ein – in der Standardkonfiguration zwei-sekündlich – „pollendes“ Verfahren für die Überwachung der Komponenten verwende. Auch wenn ich inzwischen teilweise die ursprünglichen Probleme umgehen konnte, hatte ich dennoch mit erhöhtem Stromverbrauch der abgefragten Sensoren/Aktoren zu kämpfen. Hinzu kommt, dass ich zu Beginn der Entwicklungsarbeiten am Dienst auf die HomeMatic-XmlApi-Lib zurückgreifen musste, so dass ein Rückportieren auf XML-RPC aus heutiger Sicht nicht lohnenswert erscheint. Die sehr häufige Abfrage der XML-API (~40k Requests/Tag) scheint keine negative Auswirkung auf die CCU2 zu haben – der Service läuft bei mir ca. seit einem Jahr sehr stabil ohne auffällige Probleme oder Unzuverlässigkeit.

Im aktuellen Release (v1.1.9.3) sind inzwischen ein paar neue Funktionen enthalten sowie ein paar Bugs korrigiert. Für alle Interessierten steht die Software (inkl. Tester-Anwendung und Beispielkonfiguration) in meinem OneDrive zum Download bereit. Die jeweils neuste Version wird als Quellcode im dazugehörigen Repository auf Github zu finden sein.

HomeMaticNotification_TSTGitHub-Repo: github.com/roschinsky/HomeMatic-Notification-Service

MD5 Hash: ca29cbe561e53507db4feca121454af6


Feedback, Forks oder interessante Fragen – hier oder auf Github – sind stets willkommen.

Für die Zukunft ist geplant die Dienstanwendung auf den RaspberryPi zu portieren, so dass sie unter Windows 10 for IoT lauffähig ist.

Frohes Fest!

Zum Feste nur das Beste! Open-Source darf auch unter dem Weihnachtsbaum nicht fehlen, so dass ich meine liebe Leserschaft pünktlich zum 24. mit vier Projekten erfreuen möchte, die dieses Jahr den Weg in GitHub-Repositories gefunden haben.

Homematic

Im Blog-Post aus dem März mit dem Erfahrungsbericht zur Homematic hatte ich über meine Ideen zur programmatischen Erweiterung des Systems geschrieben. Daraus entstanden sind eine C# Library, die den Zugriff auf das Homematic Add-On XML-API für .NET-Projekte kapselt, sowie ein Windows-Dienst zur Benachrichtigung über Statusänderungen von in einer Konfigurationsdatei definierten Homematic-Sensoren…

HomeMatic-Notification-Service

MD5 Hash: ca29cbe561e53507db4feca121454af6

 

HomeMatic-XmlApi-Lib

MD5 Hash: 6004e7a70784ac53e18f6da634897696

 

PushMonitoring

Ein minimalistisches Server-/Client-Monitoringsystem (Details siehe Blog-Post aus dem Juni)

MD5 Hash: 5aeefc81641179f80e416c07f217209b

 

SPWood

Ein Code-Generator für Feldnamen von SharePoint-Listen und -Bibliotheken (Details siehe Blog-Post aus 2014) zur Verwendung in eigenem Code als Konfigurationsklasse mit Enums.

MD5 Hash: 05f12753c0cbfd30f6eee9166cfe6954

 


Viel Spaß beim Ausprobieren und ein frohes Weihnachtsfest! 🙂