Reines IPv6 bei der Deutschen Telekom mittels TeraStream – das Netz der Zukunft

17 September 2016

Durch die aktuelle Beschäftigung mit IPv6 bin ich über eine interessante Geschichte bei der Telekom gestolpert. Bereits in 2011 hat die Telekom angefangen über ein reines IPv6 Netz nachzudenken, ohne IPv4. Das Projekt nennt sich TeraStream. Es wird zwar möglich sein IPv4 zu benutzen aber dies soll die Ausnahme und nicht die Regel sein.

Bereits 2012 wurde dazu in Kroatien und 2014 in Deutschland ein Testnetz hochgezogen. Durch den radikalen Ansatz fallen viele altgediente Protokolle weg. Im Zusammenhang mit TeraStream hört man auch öfter den Begriff NFV Network Function Virtualization. Das Netz ist in einem hohen Grad virtualisiert. Bis 2018 ist das Ziel, es im produktiven Telekomnetz einzusetzen.

Die Telekom hat 2011 in diesem Zusammenhang die Open Networking Foundation (ONF) mitbegründet. Mitglieder sind Facebook, Google, Microsoft, NTT, Verizon und andere. https://www.opennetworking.org/.

Hier ein Youtube Video von Axel Clauberg, wo TeraStream vorstellt: https://www.youtube.com/watch?v=Xhzctd9QXm8. Zum Einsatz kommt OpenStack, wobei es anscheinend auch Probleme gibt und OpenStack nicht in allen Bereichen eingesetzt werden kann.

Hier noch weitere Infos zu TeraStream: https://ripe67.ripe.net/presentations/131-ripe2-2.pdf, https://ripe67.ripe.net/presentations/251-ripe2-4.pdf und http://www.heise.de/netze/meldung/Schoen-entruempeltes-Netz-TeraStream-oder-das-Internet-2020-1980039.html.

Anscheinend ist es aber etwas ruhig, wenn man sich das TelekomLab anschaut: http://www.laboratories.telekom.com/public/english/Pages/results.aspx?k=terastream.

Da die nächsten Jahre IPv4 nicht totzukriegen ist, muss man sich auch damit beschäftigen: Lightweight 4over6 eine DS-Lite Architekturerweiterung. Diese ist notwendig, damit TeraStream IPv4 unterstützen kann! https://tools.ietf.org/html/rfc7596. Ein weiterer wichtiger Baustein ist Snabb (Switch) mit seiner Anwendung IwAFTR für die Unterstützung bei lw4o6, also Lightweight 4 over 6 hilft. Auch Snabb NFV wird von TeraStream verwendet. https://github.com/snabbco/snabb. Damit lw4o6 funktioniert muss DHCPv6 eingesetzt werden und die Geräte beim Kunden müssen damit umgehen können. Hier ein Dokument, welches einige Punkte dazu beschreibt: https://tools.ietf.org/html/draft-ietf-softwire-unified-cpe.

Im Auge behalten muss man auch Tail-f http://www.tail-f.com/ welches  Network Control System (NCS) liefert, einen wichtigen Part bei der TeraStream. Tail-f liefert Tailflow welches sich in OpenFlow integriert. Tail-f ist mittlerweile eine Cisco-Firma.

Im Context von TeraStream sind noch YANG und NETCONF zu nennen. NETCONF ist ein Protokoll um Netzwerke einrichten zu können und YANG ist ein Datenmodell für Netzwerke. https://en.wikipedia.org/wiki/NETCONF und https://en.wikipedia.org/wiki/YANG.

Personen und Namen bei TeraStream: Axel Clauberg, Peter Löthberg und Ian Farrer.

Öffentliche IP-Adresse bei LTE unter T-Mobile

16 September 2016

Wenn mal die Festnetz-Internetleitung ausfällt, dann kann man mit aktuellen Fritzboxen problemlos einen LTE-USB-Stick einstecken und die Einwahl über das LTE-Netz vollziehen. Soweit so gut. Man kann dadurch problemlos wieder ins Internet. Man hat zwar die Möglichkeit zu surfen aber ein Problem tritt auf, wenn man Serverdienste betreiben möchte, denn die T-Mobile vergibt nur Carrier Grade NAT (CGN) Adressen bei den Standardeinstellungen. Dadurch bekommt man zwar eine IPv4-Adresse wie z.B. 10.156.122.56 aber diese ist nur innerhalb des T-Mobile Netzes eindeutig. Dadurch kann man keine Serverdienste auf seinem Rechner betreiben, wie z. B. einen SMTP-Mailserver.

Zum Glück gibt es eine Lösung zum Problem. Man muss den APN was für Access Point Name steht abändern. Im Falle von T-Mobile ist dies:

T-Mobile öffentliche IP-Adresse APN

APN internet.t-d1.de
Benutzer t-mobile
Kennwort tm
Rufnummer (falls notwendig) *99#
Authentifizierungstyp PAP

Damit die Angaben eingetragen werden können muss man in der Regel den Eintrag “Anderer Provider” bei den Zugangsdaten auswählen.

Hier findet man noch viele andere Anregungen für weitere Provider: http://www.lte-anbieter.info/ratgeber/apn/uebersicht.php.

Wichtig, falls es nicht klappt: Es ist offenbar auch vom Tarif abhängig, ob man eine öffentliche IP-Adresse bekommen kann oder nicht!

Das interessante daran ist, dass man sich diesen Aufwand bei IPv6 sparen kann. Wer IPv6 aktiviert hat, bekommt von T-Mobile bereits beim Standard APN automatisch eine globale Unicast-Adresse zugeteilt. Damit ist das jeweilige Gerät bzw. Netz weltweit eindeutig erreichbar und für Server Dienste nutzbar! Man bekommt also eine private IPv4 und eine globale IPv6-Adresse in Kombination. D. h. die IPv4-Adresse lautete 10.156.122.56 und die IPv6-Adresse 2a01:598:90e2:1338:…

Globale Unicast Adressen bei IPv6 sind als 2000::/3 definiert, wobei für Europa (RIPE NCC) der Bereich 2a00::/12 vorgesehen ist, wovon wiederum 2a01:598::/29 für T-Mobile zugeordnet ist. https://stat.ripe.net/2a01%3A598%3A%3A%2F29#tabId=at-a-glance. Der Bereich /29 ist eine Menge Holz! Der Vollständigkeit halber hier noch der Einstieg zur Definition von 2000::/3 http://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml und die Definition der IPv6 Global Unicast Adress Bereiche: http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml.

Um sich etwas besser vorstellen zu können, was sich hinter der Angabe von /29 verbirgt, der möchte diese Angabe betrachten:

/29
Start IP: 2a01:598:0:0:0:0:0:0
End IP: 2a01:59f:ffff:ffff:ffff:ffff:ffff:ffff
Addresses: 633825300114114700748351602688
Class: –
Netmask: 255.255.255.248.0.0.0.0.0.0.0.0.0.0.0.0.
Binary: 11111111 11111111 11111111 11111000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Diese Info kann man erhalten, wenn man unter https://www.ultratools.com/tools/ipv6Info die IPv6-Adresse einträgt.

Offizielle Bezeichnungen von Microsoft Produkten in anderen Sprachen ermitteln

27 August 2016

Manchmal steht man vor der Frage: Wie ist der korrekte Ausdruck in Englisch oder einer anderen Sprache bei Microsoft in Produkt XY?

Wer manchmal am Grübeln ist, der kann ganz einfach dieses Glossar von Microsoft benutzen:

http://www.microsoft.com/Language/en-US/Search.aspx

So findet man z. B. ganz einfach zum Begriff “Info-Center” das “Action Center” oder in Französisch “centre de notifications”.

Zur Übersetzung werden zusätzlich darunter immer die MS-Produkte aufgelistet, welche den betreffenden Begriff einsetzen. Teilweise sogar mit einer kleinen Umschreibung zur Funktion und Aufgabe.

Powershell-Skripte mit Dateien aus dem Windows Explorer mittels Drag&Drop versorgen

12 August 2016

Man wundert sich immer wieder, dass unter Windows die Drag&Drop-Methode seltener zum Einsatz kommt als z. B. bei Mac-Benutzern. Während für viele Mac-Benutzer dies zum täglichen Brot gehört, tun sich Windows Benutzer oft damit schwer, wohl auch aus der Erfahrung heraus, dass bestimmte logische Drag&Drop-Kombinationen einfach nicht funktionieren. Woran liegt dies? An den faulen Programmierern! Um dieser Sache einen Riegel vorzuschieben, hier eine Beschreibung wie man Powershell-Skripte Drag&Drop fähig bekommt.

Folgende Ausgangssituation. Man hat ein sinnvolles Powershell-Skript, welches auf bestimmte Dateien angewendet werden soll. Man könnte nun unter Powershell das Skript schreiben und dem Benutzer sagen, er soll die betreffenden Dateien als Arrayparameter übergeben. Der kuckt einen blöd an und sagt: Bahnhof.

Um dem unbedarften Benutzer die Möglichkeit zu bieten bestimmte Powershell-Skripte auf bestimmte Dateien anzuwenden sollte die Sache über den Windows-Explorer funktionieren. D. h. der Benutzer markiert die gewünschten Dateien und zieht – also per Drag&Drop eine oder mehrere auf das Powershell-Skript und lässt sie dort los. Das Skript bekommt die ausgewählten Dateien als Parameter übergeben und kann seiner Arbeit nachgehen.

Von Hause aus ist dies leider in Powershell nicht vorgesehen. Aber mit einem kleinen Trick und Umweg über Batch-Dateien klappt es dann doch. Dazu benennt man am einfachsten die Batch-Datei wie die Datei mit dem Skript, nur anstatt der Endung .PS1 hat man eben .BAT  oder .CMD.

@ECHO OFF
REM Powershellscript.bat
REM
SET PSScript=%~dpn0.ps1
SET PSScriptPath=%~dp0
SET args=’%1′
:More
SHIFT
IF ‚%1‘ == “ GOTO Done
SET args=%args%,’%1′
GOTO More
:Done
REM funktioniert nur, wenn .BAT gleichen Dateinamen wie .PS1-Datei hat:
Powershell.exe -noprofile -noexit -command ". {$count=0; foreach($file in %args%) {. %PSScript% $file; $count++ }; ‚Processed ‚ + $count; }"

Hat man also das Skript MeinPowershellskript.PS1 und möchte dieses mittels Drag&Drop mit Dateien aus dem Windows Explorer befeuern, dann muss auch obige Batchdatei mit dem Namen MeinPowershellskript.BAT im selben Verzeichnis existieren. Der Benutzer zieht die Dateien auf die .BAT-Datei und nicht auf die .PS1-Datei!

Das Powershell-Skript kann dann mittels der immer verfügbaren Variablen $args die übergebene Datei abfragen und darauf reagieren, z. B. so:

"Datei zum Bearbeiten: $args[0]"
Read-Host "Return zum Beenden drücken"

Werden mehrere Parameter übergeben:

$Index=0
foreach($arg in $args) {
  "$(($Index++)): $arg"
}
Read-Host "Return zum Beenden drücken"

Im obigen Beispiel wird das Powershell-Skript für jede zu bearbeitende Datei separat hintereinander aufgerufen. Manchmal kann es dabei sinnvoll sein, den Pfad zu kennen, wo das Skript liegt. Um dies dem Powershell-Skript mitteilen zu können, kann man den Aufruf des Skripts etwas ändern, aus

{. %PSScript% $file; $count++ }

in

{. %PSScript% $file %PSScriptPath%; $count++ }

Warum aber die Skripte einzeln ausführen und nicht alle Dateien auf einen Schlag übergeben? Bei zu vielen Dateien geht die Eingabeaufforderung in die Knie und bringt blöder Fehlermeldungen, deshalb dieser Weg. Etwas langsamer und umständlicher aber dafür zuverlässiger.

Weitere Infos:

http://stackoverflow.com/questions/2819908/drag-and-drop-to-a-powershell-script

Invocation-Context:
http://gallery.technet.microsoft.com/scriptcenter/cb72e4e6-4a68-4a2e-89b7-cc43a860349e#content

Informationen zu einer Linux Version bzw. Linuxbox ermitteln

7 August 2016

Linux ist extrem weit verbreitet. Fast jedes Gerät mit einem Netzwerkanschluss hat meist irgendeine Form von Linux enthalten. Wenn man nun per Telnet oder SSH vor einer Konsole sitzt, stellt sich oft die Frage, mit was man es zu tun hat. In Windows würde man

C:>systeminfo|findstr /C:"Betriebs" /C:"OS" /C:"System"
Betriebssystemname:                            Microsoft Windows 10 Pro
Betriebssystemversion:                         10.0.14393 Nicht zutreffend Build 14393
Betriebssystemhersteller:                      Microsoft Corporation
Betriebssystemkonfiguration:                   Eigenst?ndige Arbeitsstation
Betriebssystem-Buildtyp:                       Multiprocessor Free
Systemstartzeit:                               04.08.2016, 19:43:55
Systemhersteller:                              Microsoft Corporation
Systemmodell:                                  Virtual Machine
Systemtyp:                                     x64-based PC
BIOS-Version:                                  Microsoft Corporation Hyper-V UEFI Release v1.0, 26.11.2012
System-Verzeichnis:                            C:\Windows\system32
Systemgebietsschema:                           de;Deutsch (Deutschland)

aufrufen um zu wissen wo man sich befindet. In Linux ist dies nicht so einfach. Je nach Distribution gibt es unterschiedliche Wege die Versionen zu ermitteln aber es gibt dennoch ein paar Stellen, wo man es herausfinden kann.

Die meisten Linuxdistributionen speichern Infos in der issue-Datei im etc-Verzeichnis, welche mit cat ausgeben kann:

cat /etc/issue
Ubuntu 14.04.5 LTS \n \l

Damit ist bereits die grobe Richtung bekannt. Bei einem Raspberry Pi sieht die Sache so aus:

cat /etc/issue
Raspbian GNU/Linux 8 \n \l

Hier fangen die Schwierigkeiten mit Linux und den Distributionen an. Denn es gibt so viele unterschiedliche Distributionen. Hier ein weiteres Beispiel:

cat /etc/issue
vuplus 3.0.0 \n \l

In diesem Fall weiß ich, dass ich auf einer Vu+, einem Mediaplayer unterwegs bin. OK, vuplus ist eine eigene Distribution aber um weitere Möglichkeiten besser einschätzen zu können, wäre es wichtig die verwendete Linuxversion bzw. Kernelversion herauszufinden. Hierzu kann man /proc/version abfragen:

Unter Ubuntu liefert dies z. B.:

cat /proc/version
Linux version 3.4.0-Microsoft (Microsoft@Microsoft.com) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Wed Dec 31 14:42:53 PST 2014

und unter dem Pi:

cat /proc/version
Linux version 4.1.19-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #858 SMP Tue Mar 15 15:56:00 GMT 2016

und unter der Vu+:

cat /proc/version
Linux version 3.13.5 (plnick@build-plnick) (gcc version 4.9.2 (GCC) ) #1 SMP Tue
Jan 19 02:38:57 CET 2016

OK die Vu+ verwendet Kernel 3.13.5, die Ubuntuvariante 3.4.0 jedoch, hier muss ich sagen ist es keine normale Ubuntuvariante sondern die vom Windows Subsystem for Linux (WSL) die seit Windows 10 v1607 verfügbar ist Smiley. Wobei man hier nicht von Kernel sprechen darf, da es bei WSL keinen Linux-Kernel gibt sondern die Syscalls auf den NT-Kernel, also Windows-Kernel abgebildet werden.

Ein richtiges Ubuntu würde sich so melden:

Linux version 4.2.0—27—generic (buildd@lcy01—23) (gcc version
4.8.2 (Ubuntu 4.8.2—19ubuntu1) ) #32~14.04.1—Ubuntu SMP
Fri Jan 22 15:32:26 UTC 16

Neben diesen Informationen wäre es ganz gut zu wissen, auf welcher Plattform bzw Architektur man sich befindet, dazu kann man uname verwenden:

uname -a

Linux vuzero 3.13.5 #1 SMP Tue Jan 19 02:38:57 CET 2016 mips GNU/Linux

bzw auf Ubuntu:

uname -a

Linux DESKTOP-FJE246N 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

Der Pi:

uname -a

Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

Bei der Vu+ haben wir es also mit einem Mips-System zu tun, beim Pi mit ARM und bei der Ubuntugeschichte mit einem üblichen Intel x64-System.

Um die wesentlichen Informationen einfacher lesen zu können, kann man auch diese Variante benutzen:

uname -m

Damit bekommt man direkt armv7l, mips, 32 oder 64 zurück.

Jede Distribution speichert im /etc-Verzeichnis Infos über sich ab. Man muss in der Regel nur nach Dateien mit der Endung release, info oder version suchen, man kann dies praktischerweise in einen Einzeiler packen:

ls /etc/*version /etc/*release /etc/*info

Wie diese Seite http://www.sysadminslife.com/linux/quicktipp-installierte-linux-distribution-anzeigen-und-version-herausfinden/ aufzeigt, verwenden die meisten Distributionen die Endung version oder release.

Bei unserem Dreiklang sehen die Ausgaben wie folgt aus, zunächst der Raspberry:

ls /etc/*version /etc/*release /etc/*info

/etc/debian_version  /etc/os-release

/etc/terminfo:

README

cat /etc/debian_version

8.0

cat /etc/os-release

PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

NAME="Raspbian GNU/Linux"

VERSION_ID="8"

VERSION="8 (jessie)"

ID=raspbian

ID_LIKE=debian

HOME_URL="http://www.raspbian.org/"

SUPPORT_URL="http://www.raspbian.org/RaspbianForums"

BUG_REPORT_URL=http://www.raspbian.org/RaspbianBugs

Nun die WSL-Ubuntu-Variante:

ls /etc/*version /etc/*release /etc/*info

/etc/debian_version  /etc/ec2_version  /etc/lsb-release  /etc/os-release

/etc/terminfo:

README

cat /etc/debian_version

jessie/sid

cat /etc/ec2_version

Ubuntu 14.04 LTS (Trusty Tahr)

cat /etc/lsb-release

DISTRIB_ID=Ubuntu

DISTRIB_RELEASE=14.04

DISTRIB_CODENAME=trusty

DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"

cat /etc/os-release

NAME="Ubuntu"

VERSION="14.04.5 LTS, Trusty Tahr"

ID=ubuntu

ID_LIKE=debian

PRETTY_NAME="Ubuntu 14.04.5 LTS"

VERSION_ID="14.04"

HOME_URL="http://www.ubuntu.com/"

SUPPORT_URL="http://help.ubuntu.com/"

BUG_REPORT_URL=http://bugs.launchpad.net/ubuntu/

Nun die Vu+:

ls /etc/*version /etc/*release /etc/*info

ls: /etc/*release: No such file or directory

/etc/image-version    /etc/version          /etc/vtiversion.info

/etc/terminfo:

a  d  l  r  s  v  x

cat /etc/image-version

version=0903201605170204

creator=VTi <info@vuplus-support.org>

url=http://www.vuplus-support.org/

cat /etc/version

201605170159

cat /etc/vtiversion.info

VTi-Team Image Release v.9.0.3

Über diese Informationen erhält man also oftmals auch URLs um weitere Informationen zu erhalten.

Beim Raspberry mit seinem Raspbian weiß man nun also, dass man es mit einem Debian 8 (Jessie) zu tun hat, auch Ubuntu basiert auf Debian. Leider sind solche Infos bei der Vu+ nicht zu erhalten. Hier erhält man nur die Information, dass VTi in Version 9.0.3 vom 9.3.2016 installiert ist.

Neben der Software spielt natürlich auch die Hardware eine Rolle. Welchen Prozessor hat man konkret vor sich. Hier hilft /proc/cpuinfo

Die Vu+:

cat /proc/cpuinfo

system type             : BCM7362A0 STB platform

machine                 : Unknown

processor               : 0

cpu model               : Broadcom BMIPS4380 V6.5  FPU V0.1

BogoMIPS                : 749.56

cpu MHz                 : 751.518

wait instruction        : yes

microsecond timers      : yes

tlb_entries             : 32

extra interrupt vector  : yes

hardware watchpoint     : no

isa                     : mips1 mips2 mips32r1

ASEs implemented        : mips16

shadow register sets    : 1

kscratch registers      : 0

core                    : 0

VCED exceptions         : not available

VCEI exceptions         : not available

processor               : 1

cpu model               : Broadcom BMIPS4380 V6.5  FPU V0.1

BogoMIPS                : 753.66

cpu MHz                 : 751.518

wait instruction        : yes

microsecond timers      : yes

tlb_entries             : 32

extra interrupt vector  : yes

hardware watchpoint     : no

isa                     : mips1 mips2 mips32r1

ASEs implemented        : mips16

shadow register sets    : 1

kscratch registers      : 0

core                    : 0

VCED exceptions         : not available

VCEI exceptions         : not available

beim Pi:

cat /proc/cpuinfo

processor       : 0

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

processor       : 1

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

processor       : 2

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

processor       : 3

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

Hardware        : BCM2709

Revision        : a01041

Serial          : 00AAAAAAAAAAAAAA

und noch Ubuntu:

cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 78

model name      : Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz

stepping        : 3

microcode       : 0xffffffff

cpu MHz         : 1800.000

cache size      : 256 KB

physical id     : 0

siblings        : 2

core id         : 0

cpu cores       : 2

apicid          : 0

initial apicid  : 0

fpu             : yes

fpu_exception   : yes

cpuid level     : 6

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave osxsave avx f16c rdrand hypervisor

bogomips        : 3600.00

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:

processor       : 1

vendor_id       : GenuineIntel

cpu family      : 6

model           : 78

model name      : Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz

stepping        : 3

microcode       : 0xffffffff

cpu MHz         : 1800.000

cache size      : 256 KB

physical id     : 0

siblings        : 2

core id         : 1

cpu cores       : 2

apicid          : 0

initial apicid  : 0

fpu             : yes

fpu_exception   : yes

cpuid level     : 6

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave osxsave avx f16c rdrand hypervisor

bogomips        : 3600.00

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:

Bei so vielen Infos macht es evtl. noch Sinn nach dem Speicher zu fragen, den Arbeitsspeicher bekommt man mittels free –h und den Plattenplatz mittels df –h.

Bei ARM kommt in Zukunft sicher noch die Frage nach 32-Bit oder 64-Bit Prozessor. Der Raspberry z. B. ist noch 32-Bit ein armv8 wäre 64-Bit. http://unix.stackexchange.com/questions/136407/is-my-linux-arm-32-or-64-bit.

Weitere Infos zum Thema kann man hier finden: http://unix.stackexchange.com/questions/6345/how-can-i-get-distribution-name-and-version-number-in-a-simple-shell-script.

Tschüss Teamviewer– Alternative – Willkommen Remotehilfe

4 August 2016

Teamviewer war mal eine echte Hilfe aber wie bei allem wird es irgendwann zur Plage. Hier hab ich mich schon mal über den Teamviewer ausgelassen: https://newyear2006.wordpress.com/2014/07/05/teamviewer-hat-seinen-zenit-berschritten/. Er hat seine Vorteile aber wenn es darum geht jemand unbedarftem schnell zu helfen, dann stößt man immer öfter an seine Grenzen.

Microsoft hatte schon bei Windows XP mit der Remoteunterstützung versucht das Leben der Supporter einfacher zu machen. Bei Windows 7 mit Einführung von Easy Connect war das Prinzip gut aber Microsoft war damals noch nicht in der Cloud angekommen. Deshalb gab es zu viele Situationen wo die Remoteunterstützung einfach nicht brauchbar war. Mit dem Windows 10 Anniversary Update, also Version v1607 hat Microsoft nun einen neuen Versuch gestartet die Sache anzugehen.

Und oh Wunder, es scheint richtig gut geworden zu sein! Muss auch mal MS loben, sonst wird ja nur über sie hergezogen Smiley.

Wer Cortana um Remotehilfe befragt dem zeigt sich die Remotehilfe App auch Quick Assist genannt. Dabei zeigt sich ein einfaches Fenster, wo man Jemand Hilfe anbieten oder Hilfe in Anspruch nehmen kann. Voll simpel.

Der Hilfesuchende klickt einfach auf “Unterstützung anfordern” und wird dann aufgefordert einen sechstelligen Code einzugeben. Dieser Code wird vom Gegenüber demjenigen der die Hilfe anbietet erzeugt und angezeigt. Dieser ruft auch Remotehilfe auf und wählt dann “Unterstützung gewähren” aus. Danach öffnet sich ein Fenster, wo man sich mit seinem Microsoft Konto anmelden muss, dies erscheint nicht, wenn man sein lokales Konto mit dem Microsoft Konto verbunden hat. Danach wird der sechstellige Sicherheitscode erzeugt und angezeigt. Diesen teilt man nun dem Hilfesuchenden mit und schon kann es losgehen.

Bei der Vorgehensweise zeigt sich eine Umkehrung des Teamviewerverbindungsaufbauprinzips. Nicht der Hilfesuchende hat die ID und das Kennwort sondern der Gewährende. Durch die Azurecloud und modernste ICE-Techniken um NATs zu durchbohren, klappt dann die Verbindung ohne Probleme.

Eine prima Alternative also zum Teamviewer! Aber es geht noch besser.

Ruft man die Internetseite https://remoteassistance.support.services.microsoft.com auf, dann bekommt man auch hier die Auswahl Hilfe anzufordern oder zu gewähren. Wie bei der Desktop-App kann eine Sitzung aufgebaut werden. Leider bricht die Verbindung zum jetzigen Zeitpunkt immer ab, wenn es darum geht den Bildschirm zu übertragen. Schade, schade, das wäre eine echtes Highlight gewesen, wenn dies auch noch funktioniert hätte. Aber warten wir mal ab…

Was ist neu bei Windows 10 v1607?

3 August 2016

Das Anniversary Update von Windows 10 ist nun offiziell verfügbar, stellt sich wie immer die Frage, was hat sich geändert?

Hier der Link zu Technet: https://technet.microsoft.com/en-us/itpro/windows/whats-new/whats-new-windows-10-version-1607

und MSDN: https://msdn.microsoft.com/en-us/windows/uwp/whats-new/windows-10-version-1607

Weitere Infos kann man hier finden: https://newyear2006.wordpress.com/2016/01/28/neueste-beschreibungen-fr-windows-10-bzw-windows-10-mobile/. Dabei auch die Kommentare beachten.

Feststellen ob WinPE im UEFI- oder BIOS-Modus gestartet wurde

2 August 2016

Für die Konfiguration von Rechnern ist es wichtig, dass man sich im richtigen Firmwaremodus befindet. Früher war es immer das altgediente BIOS aber seit ein paar Jahren gibt es eben auch UEFI. Um nun unter dem Windows Preinstallation Environment (WinPE) feststellen zu können, in welchem Modus man sich befindet, gibt es einen Registrierungskey den man abfragen kann:

reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType

Man bekommt 0x1 für BIOS und 0x2 für UEFI zurück.

Wenn der Wert nicht ermittelbar ist, sollte man

WPEUtil.EXE UpdateBootInfo

vorab ausführen! Hinweis: Anders als in der Quelle angegeben wird beim Parameter UpdateBootInfo kein Schrägstrich verwendet!

Quelle: https://msdn.microsoft.com/de-de/library/dn293283.aspx.

Hier noch wie man die PE-Version selber abfragen kann: https://newyear2006.wordpress.com/2011/05/17/winpe-version-feststellen/.

Binärtyp einer EXE-Datei unter Windows ermitteln, ob 32- oder 64-Bit–man spricht auch von Bitness

27 Juli 2016

Möchte man unter Windows bei einer ausführbaren Datei wissen, ob diese eine 32-Bit oder 64-Bit Version ist, dann kennt die Win32-API die Funktion GetBinaryType. Mittels Powershell kann man diese Funktion wie folgt nutzen:

$MethodDefinition = @‘

// https://msdn.microsoft.com/en-us/library/windows/desktop/aa364819(v=vs.85).aspx
[DllImport("kernel32.dll")]
public static extern bool GetBinaryType(string lpApplicationName, out uint lpBinaryType);

‚@

$Kernel32 = Add-Type -MemberDefinition $MethodDefinition -Name ‚Kernel32‘ -Namespace ‚Win32‘ -PassThru

# Funktioniert aber nur, wenn man sich in einem 64-Bit Prozess befindet, also: [System.IntPtr]::Size -eq 8
$type=0
$Kernel32::GetBinaryType("c:\windows\system32\cmd.exe", [ref] $type)  # unter 64-Bit sollte es 6 sein
$type
$Kernel32::GetBinaryType("c:\windows\syswow64\cmd.exe", [ref] $type)  # unter 64-Bit sollte es 0 sein
$type

# mögliche Werte für $type:
# SCS_32BIT_BINARY = 0, // A 32-bit Windows-based application
# SCS_64BIT_BINARY = 6, // A 64-bit Windows-based application.
# SCS_DOS_BINARY = 1,   // An MS-DOS – based application
# SCS_OS216_BINARY = 5, // A 16-bit OS/2-based application
# SCS_PIF_BINARY = 3,   // A PIF file that executes an MS-DOS – based application
# SCS_POSIX_BINARY = 4, // A POSIX – based application
# SCS_WOW_BINARY = 2    // A 16-bit Windows-based application

Dabei ist zu beachten, wenn man den Test macht, dass IntPtr 8 liefern sollte, sonst befindet man sich in einem simulierten WOW64-32Bit-Prozess und bekommt verwunderliche Ergebnisse zurück.

HP Netzwerkdrucker per Remote und Reboot.TXT neu starten – nix klappt aber SNMP bringt die Lösung

10 Juli 2016

Beim Rumspielen mit verschiedenen HP-Druckereigenschaften kommen einem manchmal Zweifel, ob alles noch korrekt reagiert. Aus diesem Grund sollte man den betreffenden Drucker von Zeit zu Zeit neu starten um nach einem Neustart die betreffenden Reaktionen zu testen. Im konkreten Fall handelt es sich um einen “HP LaserJet MFP M426fdw”, also ein recht aktuelles Modell.

Blöd nur, dass Varianten mittels einer reboot.txt, wie hier https://community.spiceworks.com/how_to/122155-how-to-reboot-an-hp-printer-remotely oder hier http://dxpetti.com/blog/?p=706 beschrieben nicht funktionieren. Übrigens, FTP-Druck wurde explizit aktiviert, sonst kann man den Drucker per FTP nicht anfahren. Die kompliziertere Variante für Reboot.TXT sieht übrigens so aus:

%-12345X@PJL COMMENT
@PJL DMINFO ASCIIHEX="040006020501010301040105"
%-12345X

Allerdings muss man wissen, dass vor % noch ein ein ASCII-Zeichen mit Code 27 steht. Man kann die passende Datei mittels Powershell ganz einfach so erzeugen:

# {ESC}%-12345X
$k=[System.Text.Encoding]::ASCII.GetString(@(27,37,45,49,50, 51, 52, 53, 88))
$lf=[System.Text.Encoding]::ASCII.GetString(@(13, 10))
$i=’@PJL COMMENT‘
$c=’@PJL DMINFO ASCIIHEX="040006020501010301040105"‘
#$c=’@PJL DMCMD ASCIIHEX="040006020501010301040105"‘

$k + $i + $lf + $c + $lf + $k | set-content -Encoding Ascii -Path "$($env:USERPROFILE)\Reboot.txt"

Aber auch mit der korrekten Escape-Sequenz am Anfang klappte es nicht!

Auch hier wird wieder die ganz einfache reboot.txt Variante beschrieben: https://www.experts-exchange.com/questions/24432791/Rebooting-HP-Jetdirect-remotley.html. Klappt natürlich nicht, aber es war etwas von einem Reboot mittels SNMP beschrieben. Hier soll set OID .1.3.6.1.2.1.43.5.1.1.3.1 with Integer "4" gesetzt werden.

Aha, SNMP das uralte Protokoll. Selbst HP geht darauf aber noch ein und verwendet es für bestimmte Aufgaben, hier ein aktuelles Dokument aus April 2016: http://h20564.www2.hp.com/hpsc/doc/public/display?docId=c01840676.

Tatsächlich findet man bei der Suche nach der OID und Powershell Scripte, wie hier: http://forum.support.xerox.com/t5/Copying-Faxing-Scanning/Schedule-printer-reboot/m-p/176844#M5393. Das Script ist zwar nicht 1:1 übertragbar aber damit wird der Weg klar.

Selbst in Windows 10 gibt es eine OLE SNMP-Klasse https://msdn.microsoft.com/en-us/library/windows/hardware/ff554433(v=vs.85).aspx, welche man mittels Powershell ganz einfach für diesen Zweck einsetzen kann:

$PrinterIP = "192.168.1.87" # hier die tatsächliche IP des Druckers setzen
$SNMP = New-Object -ComObject olePrn.OleSNMP
$SNMP.Open($PrinterIP, "public")
$SNMP.Set(".1.3.6.1.2.1.43.5.1.1.3.1",4)
$SNMP.Close()

Sofort nach absetzen des Set-Befehls startet der Drucker neu! Und was dabei noch interessant ist, es klappt auch mit anderen Druckerfabrikaten.