Fenster mittels Shortcut "Immer sichtbar" halten

Unter Windows verwende ich das betagte, aber immernoch gut funktionierende Tool WinSplit, welches den Shortcut “CTRL+ALT+O” mit sich bringt um ein Fenster immer oberhalb aller anderen zu halten.

Diese Funktionalität (und Shortcut) wollte ich auch auf meinem Laptop mit Linux Mint haben.

Hier gelang es mir ohne Installtion etwaiger Software, denn die Funktionalität kann man über das Kontextmenü eines jeden Programm-Icons direkt aktivieren.

linux mint kontextmenü immer sichtbar

Ein Programm zum Hinterlegen von Shortcuts existiert ebenfalls.

linux mint keyboard shortcuts

Also, das Programm “Keyboard Shortcuts” aufrufen und mittels “Add”-Button einen neuen Shortcut anlegen.

linux mint neuen keyboard shortcut hinzufügen

Einen Namen und das folgende als Command eingeben:

wmctrl -r :ACTIVE: -b toggle,above
linux mint neuen shortcut befehl hinterlegen

Ist der Shortcut angelegt clickt man auf die Spalte “Shortcut” des Eintrags (wo derzeit “Disabled” steht).

linux mint keyboard shortcut tastenkombination hinterlegen

Nun kann man den gewünschten Shortcut hinterlegen, indem man die gewünschte Tastenkombination drückt.

linux mint keyboard shortcut fertig eingerichtet

SikuliX - Tastaturkombinationen eingeben lassen

Ich wollte auf die Schnelle ein Automatisierung mit meinem Lieblingstool SikuliX programmieren. Dazu musste ich eine Tastenkombination drücken lassen. Trial and Error mit den ersten Web-Suchen führten nicht zum Erfolg.

Zum einen weil sich scheinbar mal die Syntax geändert hat und zum anderen weil ich im Testskript die Groß- und Kleinschreibung ignorierte. Das tut SikuliX aber nicht.

Hier also einige Beispiele von Tastenkombinationen in SikuliX:

# CTRL+HOME
type(Key.HOME, KeyModifier.CTRL)

# ALT+F4
type(Key.F4, KeyModifier.ALT)

# CTRL+v
type('v', KeyModifier.CTRL)

# CTRL+ALT+ESC
type(Key.ESC, KeyModifier.CTRL+KeyModifier.ALT) 

FileZilla Server - Verbindungsversuch fehlgeschlagen "ECONNREFUSED - Connection refused by server"

Das Problem

Versucht man einen FileZilla Server als FTPS mit den Standard-Einstellungen zu verwenden kommt es beim Verbindungsversuch zum Fehler “ECONNREFUSED - Connection refused by server”.

Die Ursache

Bei mir lag es daran, dass ich die Standard-Einstellung beibehalten hatte.

FileZilla Server Passiv-Modus Einstellung mit Standard Url von FileZilla Project

Der Fehler liegt im Skript, es gibt immer 127.0.0.1 zurück.

FileZilla Project Url gibt 127.0.0.1 zurück

Die Lösung

Die Lösung ist einfach, ich habe ein Skript erstellt dass die aktuelle IP zurückgibt.

https://gpunktschmitz.com/ip/

FileZilla Server Passiv-Modus Einstellung mit eigener Url
IP Ergebnis von eigener Url

Feiertagskalender für Nürnberg

Ich weiss .. ich weiss … “aber es gibt doch schon Feiertagskalender .. sind sogar direkt in Outlook abrufbar”. Aber dieser eben nicht. Da in Deutschland in jeder Stadt mal ein Feiertag gilt und dann, wenn wieder weniger Katholiken als Evangelen gezählt werden eben wieder nicht, habe ich mir diesen Kalender erstellt. Einzig und allein um ihn in mein Outlook zu importieren.

Welche Feiertage sind nun in diesem Kalender? “Alle” die derzeit in Nürnberg gelten. Es heißt “alle”, weil ich hier nur solche eingetragen habe, die auch auf einen Werktag (Montag - Freitag) fallen (können). Die anderen interessieren mich nicht. Vor allem nutze ich diesen Kalender um meinen Urlaub zu planen.

Den “holiday calendar” (wie ich ihn in Outlook benannt habe) lass ich mir immer anzeigen und überlappe diesen mit meinem persönlichen.

Feiertagskalender für Nürnberg in Outlook

Somit habe ich bei Terminabsprachen und Urlaubsplanungen die (für mich) wirklich “echten” Feiertage stehts im Blick.

Wenn du auch diesen Kalender abrufen möchtest, hier ist er:

https://ics.gpunktschmitz.de/bank-holiday-calendar-nuremberg.ics

du willst deine Internetgeschwindigkeit testen? - verwende fast.com!

Von http://speedof.me war ich Fan der ersten Stunde. Am Anfang war es werbefrei, schnell, zuverlässig und mobile-friendly. Irgendwann wurde dann Werbung mit dazu geschaltet und ich war genervt wenn ich die Seite versuchte aufzurufen, weil das dann immer (gefühlt) ewig gedauert hat bis der Speedtest startete.

Alles was ich wissen wollte war, wie schnell der Download war. SpeedOf.Me bietet an mehrere Tests zu starten und diese dann auch graphisch zu vergleichen. Ein “Overhead” den ich in 99,9% nicht benötigte/verwendete.

Screenshot der Internetseite 'speedof.me'

Durch Probleme mit meinem DSL-Anschluss verwies mich die Hotline meines Anbieters auf https://fast.com. Die lädt superschnell und macht genau das was ich möchte - sie zeigt mir die Download-Geschwindigkeit an. Perfekt für meine Zwecke - Danke Netflix!

Screenshot der Internetseite 'fast.com'

.ics Kalender für den gelben Sack in Nürnberg [update 10.01.2017]

Ich habe mir die letzten Jahre immer einen Kalender für den Abfuhrplan des gelben Sacks erstellt. Dieses Jahr habe ich dies automatisiert getan. Dabei kam mir der Gedanke für alle Touren die Termine der Abholung einzulesen. Somit entstand das Projekt “Kalender gelber Sack Nürnberg”.

Auf der Projektseite kann nach der Straße gesucht werden. Nach Auswahl der entsprechenden Straße wird der jeweilige Kalender angezeigt.

Zu finden ist das Projekt unter: http://www.gpunktschmitz.de/kalender-gelber-sack-nuernberg/

[update 10.01.2017] Das Projekt wurde mit den Daten bis 2019 aktualisiert. Danke an Kristian für die Erinnerung!

Robocopy - FEHLER 123 (0x0000007B) - Verzeichnisse mit Leerzeichen kopieren

robocopy meme

Die Fehlermeldung

Verwendet man eine aktuelle PowerShell und die Tab-Completion (Die Anführungszeichen fügt die Shell autmatisch hinzu.), so erhält man den Befehl:

Robocopy.exe 'C:\tmp\source with spaces\' 'C:\tmp\target with spaces\' /e

Und führt man diesen aus erhält man eine Fehlermeldung.

robocopy the filename directory name or volume label syntax is incorrect

Zu beachten ist, dass die Quelle und das Ziel von Robocopy “seltsam” interpretiert werden. Das \' am Ende von Quelle und Ziel führt dazu, dass das Anführungszeichen escaped (als Text interpretiert) wird und somit die ganze Anweisung fehlerhaft wird.

Die Lösung

Es gibt eine ganz einfache Lösung, man lässt den letzten Backslash in Quelle und Ziel weg.

Robocopy.exe 'C:\tmp\source with spaces' 'C:\tmp\target with spaces' /e

Backup Exec - TECH126877 - the device or media server cannot be deleted because existing jobs or selection lists remain

Das Problem

Vor einiger Zeit konnte ich ein Sicherungsziel (einen “Speicher”), namentlich “internal RAID” in Backup Exec 15 nicht entfernen. Das GUI gab mir folgende Fehlermeldung zurück:

“The device (or media server) cannot be deleted because existing jobs or selection lists remain.”

Ich bin also durch alle Sicherungsjobs gegangen und konnte keinen finden wo der zu entfernende Speicher konfiguriert wäre. Sehr komisch …

Die Google-Suche

Eine schnelle Google Such brachte mich zu dem Support-Artikel von Symantec Veritas TECH126877 das einem dazu rät den Symantec Support anzurufen?!?!1

Die Lösung

Ich konnte nicht glauben dass dies der Weg ist einen Speicher von Backup Exec zu entfernen und stolperte über die “Backup Exec Management Command Line”.

Windows Sucheergebnis von 'backup exec'

Diese begrüßte mich mit den Basis Kommandos. Der Befehl “Get-BECommand” gibt eine Liste aller verfügbarer Kommandos zurück.

Backup Exec Management Command Line Interface

In dieser Liste bin ich auf die Befehle “Get-BEJob” und “Remove-BEJob” gestoßen. Also mal gucken was “Get-BEJob” zurückgibt.

Ausgabe des Befehls Get-BEJob

Ausgezeichnet; Es wird ein Objekt zurückgegeben das man nach “Storage” filtern kann. Dann wollte ich wissen was “Remove-BEJob” als Input nimmt.

Ausgabe der Hilfe zum Befehl Remove-BEJob

Verstehe, man kann also die Objekte von “Get-BEJob” an “Remove-BEJob” weiterleiten. Alles was zu tun war, ein Liste aller Backup Exec Sicherungsaufträge mittels “Get-BEJob” abzurufen, diesen auf den Speicher/Storage “internal RAID” zu filtern und das an “Remove-BEJob” weiterzuleiten. Das ganze kann vorerst mit dem Parameter “-WhatIf” aufgerufen werden .. nur um sicher zu gehen was gelöscht wird ;)

Get-BEJob | where storage -eq "internal RAID" | Remove-BEJob

Es brauchte also nur ein bisschen PowerShell .. oder man kann natürlich den Symantec/Veritas Support anrufen …

Notebook geht nicht in den Standby wenn man den Deckel schließt

Von heute auf morgen wolte mein Notebook nicht mehr in den Standby gehen, wenn ich selbiges zuklappte. Nach Prüfung aller relevanten Einstellung in meiner Linux Mint 17 Installation führte mich eine schnelle Suche auf folgende Seite: http://askubuntu.com/questions/395428/laptop-does-not-suspend-when-lid-is-closed.

Die Lösung für mich war, die Datei /etc/systemd/logind.conf zu öffnen, die Option HandleLidSwitch auf suspend zu setzen (gültige Werte sind suspend, hibernate und poweroff) und das Notebook neuzustarten.

FRITZ!DECT 200 via PHP schalten

Die Situation

Im Wohnzimmer (im EG) sitzend hat es mich immer genervt in den ersten Stock zu gehen um den Drucker einzuschalten. Der Drucker, ein HP LaserJet 2200dtn, ist via LAN mit einem TP-Link TL-WR710N mit dem Netz verbunden. Der TP-Link TL-WR710N verbindet sich als Client mit dem WLAN und ermöglicht so das Verwenden des Druckers ohne ein hässliches LAN-Kabel durch zwei Zimmer und eine Wand zu verlegen. Eine Lösung wäre sicherlich gewesen die Drucker/Access-Point-Kombination dauerhaft eingeschalten zu lassen. Da der Drucker nur selten gebraucht wird und ich auch gerne ungenutzte Geräte ausgeschaltet habe suchte ich nach einer anderen Lösung.

Die Lösung

Nun ist vor beiden Geräten ein FRITZ!DECT 200 geschalten.

an Fritz!Dect 200 angeschlossene Geräte: HP Laserjet 2200dtn und TP-Link TL-WR710N

Das Problem

Nun kann man die Geräte über die FRITZ!DECT 200 gemeinsam ein- und ausschalten, jedoch muss man entweder den Schalter am Gerät drücken (und das hat sowas von keinen Vorteil im Vergleich zur Ausgangssituation) oder

  1. man meldet sich in der FRITZ!Box Webseite ein
  2. wählt den Punkt “Smart Home
  3. und schaltet das Gerät ein

… und das ist auch weit weg von guter Usability.

Das Projekt/Die Lösung

Damit das einfacher geht habe ich ein PHP-Skript aufgesetzt (fritz-dect-php auf GitHub) das die eingerichteten DECT-Geräte der FRITZ!Box abruft und den Namen mit einen Schalter daneben anzeigt. Darüber kann nun jeder einfach den Drucker ein- und ausschalten und braucht auch keine Login-Daten zu wissen.

Screenshot des Projekts zeigt die Fritz!DECT 200

Die Konfiguration

Der Login zur FRITZ!Box ist in der Datei “login.inc.php” hinterlegt. Je nachdem was man unter Anmeldung im Heimnetz eingerichtet hat müssen die entsprechenden Daten hinterlegt werden.

Screenshot der Fritz!Box Adminoberfläche

FRITZ!Box-Kennwort

Ich glaube dass es die Vor-/Grundeinstellung der FRITZ!Box ist, man meldet sich ausschließlich mit einem Passwort an.

Screenshot der Fritz!Box-Benutzer-Einstellung Anmeldung mit Fritz!Box-Kennwort

Zur ersten Konfiguration/Tests habe ich diese Login-Daten verwendet. Will man dies in der “login.inc.php” verwenden muss man die Variable für den Benutzernamen leer lassen und nur das Kennwort eingeben. Jeder der Zugriff auf den Host hat kann natürlich auch diese Zugangsdaten auslesen.

FRITZ!Box-Benutzernamen und Kennwort

Da ich gerne möglichst geringe Rechte für dieses Skript verwenden wollte habe ich

  • einen FRITZ!Box-Benutzer angelegt der ausschließlich das Recht “Smart Home” hat
  • einen FRITZ!Box-Benutzer angelegt der alle Rechte hat (einen Admin-Benutzer also)
  • die Anmeldung im Heimnetz auf “Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort” geändert
Screenshot der Fritz!Box-Benutzer-Einstellung Anmeldung mit Fritz!Box-Benutzernamen und Kennwort

Das Resultat

Jeder im lokalen Netzwerk kann den Drucker ein- und ausschalten und erspart sich das lästige anmelden. Ich erspare mir das lästige hochrennen und kann weiter faul auf der Couch sitzen während ich eine Seite ausdrucke.