Windows 8.1: Tastaturkürzel

Da ein Administrator ja immer „faul“ ist, hier mal die wichtigsten Tastaturkürzel für Windows 8.1:

Windows-Taste –>  Wechselt zwischen Startbildschirm und der letzten App
Windows-Taste + C –> Öffnet die Charm-Leiste, diese wird an der rechten Seite des Desktops eingeblendet. Gleichzeitig wird Uhrzeit und Datum angezeigt.
Windows-Taste + D –> Wechselt zum Desktop
Windows-Taste + E –> Startet den Windows-Explorer
Windows-Taste + F –> Öffnet das Suchfenster für Dateien
Windows-Taste + H –> Öffnet das Teilen-Menü in der Charm-Leiste, beispielsweise um einen Screenshot des Desktops per Mail zu versenden.
Windows-Taste + I –> Öffnet das Einstellungsmenü in der Charm-Leiste, inklusive Systemsteuerung.
Windows-Taste + K –> Öffnet das Geräte-Menü in der Charm-Leiste.
Windows-Taste + L –> Sperrt das System
Windows-Taste + Q –> Öffnet das Suchmenü (Überall)
Windows-Taste + P –> Öffnet die Optionen für einen zweiten Bildschirm
Windows-Taste + R –> Öffnet den Ausführen-Dialog.
Windows-Taste + U –> Öffnet das Center für die erleichterte Bedienung (Bildschirmlupe, Bildschirmtastatur, hoher Kontrast etc.)
Windows-Taste + X –> Öffnet eine Art kleines Startmenü, aus dem man unter anderem zum Geräte-Manager gelangt oder das System herunter fahren kann.
Windows-Taste + Enter –> Startet die Sprachausgabe
Windows + Pause –> Wechselt in die Systemsteuerung /System.
Windows + Pfeil nach unten –> Minimiert das Fenster / Minimiert die laufende Kachel-App
Windows + Pfeil nach links –> App / Fenster läuft auf der linken Bildschirmhälfte
Windows + Pfeil nach oben –> Fenster oder App maximieren
Windows + Plus –> Bildschirmlupe (wird mit Windows + ESC beendet)

Wer noch die alten Tastaturkürzel nachschlagen möchte, kann dies hier tun: Click mich!

Kostenloser Webfilter: K9 Web Protection

Das offene Internet ist eine Gefahrenquelle hoch drei: nicht nur böse Inhalte sind hier zu finden, sondern auch diverse Schadsoftware (Viren, Trojaner, etc).

Auf der Suche nach einem geeigneten Webfilter (speziell für Kinder) bin ich auf den „K9 Web Protection“ Filter von Blue Coat gestoßen. Die verwendeten Filterlisten sind auch in den großen Business Produkten von Bluecoat zu finden, was einen erheblichen Vorteil bietet.

Die Liste ist in verschiedene Kategorien unterteilt und man kann diese (neben eigenen Filtern) direkt benutzen bzw. sperren.

Folgende Funktionalitäten werden mitgebracht:

  • Filter mit ~70 Kategorien
  • Safe Search für fast jede Suchmaschine
  • Zeitzugangsbeschränkungen
  • eigene Listen/Filter
  • Einbruchsschutz (für Kinder die dies gern umgehen möchten!)
  • Reports
  • Echtzeitfilter für neue „böse Sites“
  • Verfügbar für Windows und Mac

Sollte doch mal eine Site falsch einsortiert worden sein, kann dies einer erneuten Überprüfung unterzogen werden (Click mich!).

Bisher habe ich mit dem Tool sehr gute Erfahrungen (auch bei den Kindern) gemacht!

Hier gehts zum Download und weiteren Informationen: Click mich!

Blue Coat: Website ist in der falschen WebPulse Kategorie eingetragen

Der Hersteller Blue Coat liefert bei seinen Produkten auch direkt eine sehr gute Filterliste (für Proxy etc) für alle möglichen Arten von Websites mit. Hierdurch ist es möglich, bestimmte Kategorien im Netz direkt auszusperren, ohne viel Aufwand betreiben zu müssen.

Allerdings kann es trotzdem vorkommen, das versehentlich oder aus historischen Gründen eine Website falsch Kategorisiert wurde.

Hierzu stellt Blue Coat eine Website zur Verfügung, wo man die Site/Domain nochmals prüfen lassen kann. Die Bearbeitung erfolgt innerhalb von 24h.

Hier gehts zum „WebPulse Antrag zur Überprüfung einer Website„: Click mich!

Unix: Suchen von Text/Strings in Dateien unterschiedlicher Verzeichnisse

Zur Suche von Textteilen/Strings in bestimmten Dateien, die in verschiedenen Verzeichnissen liegen, kann folgendes Kommando verwendet werden:

 

find . -name *.txt -exec grep Bauteil {} \; -print

Bauteilliste:
ingesamt 25 Bauteile
./relativer_verzeichnispfad_1/datei_1.txt
hohe Bauteile, größer 2m kommen
kleine Bauteile werden getragen
Bauteillisten gibt es unter ...
./relativer_verzeichnispfad_2/datei_2.txt

 

Das Suchkommando find startet vom aktuellen Verzeichnis „.“ die Suche im aktuellen und in allen Unterverzeichnissen nach Dateien mit der Endung *.txt.
Die gefundenen Dateien werden mit dem nach -exec angegebenem grep Kommando nach dem String „Bauteil“ durchsucht und die gefundenen Zeilen mit -print ausgegeben.
Eine Besonderheit ist, das erst die gefundenen Zeilen und danach die den String enthaltene Datei angezeigt wird. Dabei steht der Dateiname mit dem relativen Pfad von der aktuellen Position im Dateisystem.

Eine Alternative zu dem -exec Schalter im find ist die Übergabe der Dateinamen an das Kommando xargs  via Pipe:

find . -name *.txt | xargs grep Bauteil 

./relativer_verzeichnispfad_1/datei_1.txt:Bauteilliste:
./relativer_verzeichnispfad_1/datei_1.txt:ingesamt 25 Bauteile
./relativer_verzeichnispfad_2/datei_2.txt:hohe Bauteile, größer 2m kommen
./relativer_verzeichnispfad_2/datei_2.txt:kleine Bauteile werden getragen
./relativer_verzeichnispfad_2/datei_2.txt:Bauteillisten gibt es unter ...

 

Raspberry Pi – Bücher für den Start

Raspberry Pi für Einsteiger – der Mini-PC, der alles kann!

In diesem kleinen preiswerten Taschenbuch beschreiben Matt Richardson und Shawn Wallace, was man mit dem Kleinstcomputer Raspberry Pi alles anstellen kann.
Nach einem kurzen technischen Überblick der verbauten Hardware werden einige Grundlagen des Unix Betriebssystems vermittelt, bevor es an die Umsetzung möglicher Projekte mit Python, Scratch oder die Verbindung zu externen Geräten via GPIO geht.


Broschiert: 159 Seiten
Verlag: O’Reilly; Auflage: 1 (28. April 2013)
Sprache: Deutsch
ISBN-10: 3955611477
ISBN-13: 978-3955611477
Größe: 20,8cm x14,6cm x1,4cm
gibt es auch für den Kindle bei Amazon


TheMagPi.com
– Webseite mit monatlichem Journal rund um den Raspberry Pi
„We produce a magazine with the intent to help and offer advice to users of the Raspberry Pi. This started out as a simple idea on the well known forums, with a few of us getting together and deciding on a loose outline of what we wanted to achieve.“
Journale zum Download (PDF)

Perl – Programm soll nur einmal laufen (UNIX)

Manchmal muss man unbedingt sicherstellen, dass ein Programm nur einmal läuft.
Dazu guckt das Programm in die Prozessliste und stellt hoffentlich fest, das es selbst nur einmal läuft.
Grundlage ist das Kommando pgrep.

cmd> pgrep -f mein_script
2120
8094
8119

Es liefert die Prozess_ID’s – in diesem Beispiel läuft „mein_script“ drei mal.
Im Programm zählt man nur die Zeilen und bricht bei mehr als einer Zeile ab.

$i=0;
open(CMD,"pgrep -f mein_script | ") or die;
while ( $line=<CMD> )  {
  $i++;
};
close(CMD);
exit if ( $i > 1 );


Hier weichen wir auf das externe Systemkommando pgrep aus und leiten es über eine Pipe der Standardausgabe an unser Programm. Wer also nicht mit Perl arbeitet, kann gleiche Funktionalität auch mit der Shell oder allen anderen Programmiersprachen, die meist immer Zugriff auf externe Kommandos bieten, realisieren.

Raspberry Pi: Mit dem Root-User arbeiten

Als User pi setzt man die „administrativen“ Kommandos mit

sudo Kommando

ab. Das wird schnell lästig, wenn man mehrere Kommandos abgesetzt, die zur Systemverwaltung und Konfiguration benötigt werden. Der Befehl

sudo su

kann schnell helfen. Nun befindet man sich im Kontext des root-Users … und zwar ohne Eingabe eines Passwortes. Das ist ein „kleines“ Sicherheitsrisiko. Deshalb sollte man ein Passwort auch für den root-User vergeben (und nie vergessen!).

pi@raspbox /$ sudo su
root@ raspbox:/home/pi# passwd
Geben Sie ein neues UNIX-Passwort ein: 
Geben Sie das neue UNIX-Passwort erneut ein: 
passwd: Passwort erfolgreich geändert
root@raspbox:/home/pi# exit
pi@raspbox /$


<blau> hier arbeiten wir im Kontext des root-Users!

Raspberry Pi: System aktualisieren mit apt-get update / upgrade

Ab und zu sollte man seinem Raspberry Pi aktualisieren. Das sind nicht viele Befehle, nur zwei, aber es braucht etwas Zeit.

a) Update

pi@raspbox / $ sudo apt-get update
Get:1 http://mirrordirector.raspbian.org wheezy Release.gpg [490 B]
Get:2 http://raspberrypi.collabora.com wheezy Release.gpg [836 B]
Get:3 http://mirrordirector.raspbian.org wheezy Release [14.4 kB]
Get:4 http://archive.raspberrypi.org wheezy Release.gpg [490 B]
Get:5 http://raspberrypi.collabora.com wheezy Release [7,502 B]
Hit http://repository.wolfram.com stable Release.gpg
Get:6 http://archive.raspberrypi.org wheezy Release [10.2 kB]
Get:7 http://mirrordirector.raspbian.org wheezy/main armhf Packages...
Hit http://repository.wolfram.com stable Release
Get:8 http://raspberrypi.collabora.com wheezy/rpi armhf Packages [2,214 B]
Get:9 http://archive.raspberrypi.org wheezy/main armhf Packages [99.4 kB]
Hit http://repository.wolfram.com stable/non-free armhf Packages
Ign http://raspberrypi.collabora.com wheezy/rpi Translation-en_GB
Ign http://raspberrypi.collabora.com wheezy/rpi Translation-en
Ign http://repository.wolfram.com stable/non-free Translation-en_GB
Ign http://repository.wolfram.com stable/non-free Translation-en
Ign http://archive.raspberrypi.org wheezy/main Translation-en_GB
Ign http://archive.raspberrypi.org wheezy/main Translation-en
Get:10 http://mirrordirector.raspbian.org wheezy/contrib armhf Pack...
Get:11 http://mirrordirector.raspbian.org wheezy/non-free armhf Pack...
Get:12 http://mirrordirector.raspbian.org wheezy/rpi armhf Packages [592 B]
Ign http://mirrordirector.raspbian.org wheezy/contrib Translation-en_GB
...
Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en
Fetched 7,102 kB in 36s (194 kB/s)
Reading package lists... Done
pi@raspbox / $

b) Upgrade

pi@raspbox / $ sudo apt-get upgrade -y >/tmp/apt_get_upgrade.log 
Extracting templates from packages: 100% 
pi@raspbox / $

c) Aufräumen

pi@raspberrypi ~ $ sudo apt-get autoremove -y >/tmp/apt_get_autoremove
pi@raspberrypi ~ $ cat /tmp/apt_get_autoremove
Reading package lists...
Building dependency tree...
Reading state information...
0 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.

d) Reboot!

pi@raspberrypi ~ $ sudo reboot

Raspberry Pi: Festplatte / USB-Stick einbinden Teil 2

In Teil 1 haben wir die allgemeine Prozedur für ein beliebiges unbekanntes USB-Device erläutert. Hier geht es nun um bekannte USB-Geräte.

Wer möchte schon jedesmal die gleichen Parameter suchen und Befehle ausführen um auf seine eigene USB-Platte oder USB-Stick zuzugreifen? Also wird man dem System die eigenen Geräte bekanntgeben und dann gibt es nur zwei Varianten, entweder die USB-Geräte sind beim Systemstart verbunden und werden, weil bekannt, auch erkannt, oder man verbindet die USB-Geräte im laufenden Betrieb und setzt dann ein mount (binde Gerät ein) ab.
Hier die Beschreibung:

Wenn ich stets meine bekannten Geräte benutze, so muß ich sie auch dem System bekanntgeben.
a) UUID ermitteln
Jedes Gerät hat seine UUID.
Die bekomme ich wie folgt:
– USB-Gerät einstecken
– Kommando blkid absetzen


pi@raspbox ~ $ sudo blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="C522-EA52" TYPE="vfat"
/dev/mmcblk0p2: UUID="62ba9ec9-47d9-4421-aaee-71dd6c0f3707" TYPE="ext4"
/dev/sda1: LABEL="IOMEGA_HDD" UUID="F8682F59682F1642" TYPE="ntfs"
/dev/sda2: LABEL="USB DISK" UUID="F0E5-0793" TYPE="vfat"

Die UUID für den USB-Stick ist F0E5-0793 und der Dateisystemtyp vfat (FAT), die UUID für die USB-Platte ist F8682F59682F1642 und der Dateisystemtyp ntfs.

b) in /etc/fstab eintragen
Nun können wir die USB-Platte und den USB-Stick in die fstab eintragen.
sudo nano /etc/fstab


proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that
UUID=F0E5-0793 /media/usb1 vfat defaults,dmask=0000,fmask=0000 0 0
UUID=F8682F59682F1642 /media/usb2 ntfs-3g defaults,dmask=0000,fmask=0000 0 0

c) Gerät mounten (einbinden)
Wenn wir die USB-Platte im laufenden Betrieb verbinden, müssen wir sie mounten (einbinden):

sudo mount -a

pi@raspbox /media $ sudo mount -a
mount: special device UUID=F0E5-0793 does not exist

Die Fehlermeldung stimmt! Der USB-Stick ist steckt nicht im Gerät. Dafür ist die Platte gemountet, was ein Blick in das Verzeichnis /media/usb2 zeigt.

Wer nicht im laufenden Betrieb Geräte einbinden möchte, muß sie bereits beim Systemstart im Gerät haben. Da wird die /etc/fstab standardmäßig abgearbeitet.

d) Gerät umounten (abhängen, trennen)
Soll die USB-Platte im laufenden Betrieb vom System getrennt werden, bitte unbedingt vorher ein sudo umount /media/usb2 absetzen und dann erst trennen!
Alternativ: System herunterfahren.

Dieser Artikel ist die Fortsetzung von Teil 1

PowerShell – Aufruf der PowerShell mit Parametern

Eine Auflistung der möglichen Aufrufparameter der Powershell

-Command Hier kann man einfach eine Zeile mit Kommandos übergeben, die direkt ausgeführt werden und die PowerShell wird wieder beendet.
Beispiel: Ausgabe eines Verzeichnisinhaltes

C:\Users>powershell -command Get-ChildItem -Path C:\Temp\Bsp

    Verzeichnis: C:\Temp\Bsp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        14.08.2013     21:48          8 File_1.txt
-a---        14.08.2013     21:48         14 File_2.txt

C:\Users>

-EncodedCommand Akzeptiert eine base-64-codierte Zeichenfolgenversion eines Befehls.
Verwende diesen Parameter, um Befehle an Windows PowerShell zu senden,
für die komplexe Anführungszeichen/geschwungene Klammern erforderlich sind.

-ExecutionPolicy Setzt die ExecutionPolicy für die aktuelle Sitzung.
Definierte Werte sind z.B. Restricted, Unrestricted.
Im Beispiel ist der gesetzte Wert „Unrestricted“ unter Process zu finden. Die lokale ExecutionPolicy auf Maschinenebene ist hier jedoch „Restricted“.

C:\Users>powershell -ExecutionPolicy Unrestricted -Command Get-ExecutionPolicy -List

                                  Scope                         ExecutionPolicy
                                  -----                         ---------------
                          MachinePolicy                               Undefined
                             UserPolicy                               Undefined
                                Process                            Unrestricted
                            CurrentUser                               Undefined
                           LocalMachine                              Restricted

C:\Users>

-File Dient zur Übergabe einer Skriptdatei.

C:\Users>powershell -NoProfile -NoLogo -File C:\Scripts\TestScript.ps1

-InputFormat Beschreibt das Format der die PowerShell übergebenen Daten. Gültige
Werte sind „Text“ (Textzeichenfolgen) und „XML“ (serialisiertes CLIXML-Format).
Standardwert ist „Text“.

-NoExit PowerShell wird nach Startup Kommandos nicht beendet. Nützlich, wenn man PowerShell via Kommandozeile startet und danach in der Shell weiterarbeiten möchte.

-NoLogo Die PowerShell wird ohne Anzeige des sonst üblichen Copyright Banners gestartet.

-Noninteractive Die PowerShell wird im nicht-interaktiven Modus gestartet, d.h. sie interagiert nicht mit dem Benutzer … keine Eingabeaufforderung!

-NoProfile Es soll kein userspezifisches Profil, auch wenn vorhanden, geladen werden!

-OutputFormat Legt die Formatierung der PowerShell-Ausgabe fest visit this site. Gültige Werte sind
„Text“ (Textzeichenfolgen) und „XML“ (serialisiertes CLIXML-Format).
Standardwert ist „Text“.

-PSConsoleFile Lädt eine PowerShell-Konsolendatei. Verwende
„Export-Console“ in Windows PowerShell, um eine Konsolendatei zu erstellen.
Eine Konsoldatei hat die Extension .psc1 .

-Sta Startet die PowerShell im single-threaded Mode.

-Version Startet die PowerShell in der angegebene Version, um die Kompatibilität sicherzustellen (z.Zt. 1, 2, 3). Ist die angegeben Version nicht installiert, erfolgt eine Fehlermeldung:

C:\Users>powershell -Version 3
Die Windows PowerShell-Version 3 kann nicht gestartet werden, da sie nicht 
ordnungsgemäß installiert ist.

 

-WindowStyle Legt den Fensterstil auf „Normal“, „Minimized“, „Maximized“, „Hidden“ fest. Standardwert ist „Normal“.

Beispiel: PowerShell Kommando „versteckt“ (hidden) ablaufen lassen.

start /min powershell -WindowStyle Hidden -Command <command>