Raspberry Pi: Swap File erweitern

Der Raspberry Pi Model B hat 512 MB RAM. Dies reicht für die meisten einfachen Anwendungsfälle aus. Doch bei mehreren speicherfressenden Anwendungen kann es sein, dass einfach geswapt werden muss. Es gilt die Regel Swap = 2 * RAM.
Standard ist 100MB Swap in der Datei /etc/dphys-swapfile mit CONF_SWAPSIZE=100 konfiguriert.Dort sollten wir also 1024 eintragen, was nur mit Root-Berechtigung (sudo su) geht.
Anlegen des Swap-Files mit:
root@raspberrypi:/home/pi# dphys-swapfile setup
want /var/swap=1024MByte, generating swapfile … of 1024MBytes

Hinweis: Gibt es folgende Ausgabe „checking existing: deleting wrong size file (104857600)“ so kann der Swap nicht eingerichtet werden, da nicht genügend Platz auf der Karte/Platte vorhanden ist! Ggf. die Partition vergrößern.

Aktivieren des Swap-Files mit:
dphys-swapfile swapon

LegoCity01

Raspberry Pi: Firmware aktualisieren

Wenn es eine neue Firmware für den Raspberry gibt, dann mit dem Kommando:
sudo apt-get install rpi-update laden.
Momentan hat dieser Pi die aktuelle Firmware. Dann sieht es so aus:
RaspberryPi Firmware ist aktuell

Die Version der Firmware kann man mit vcgencmd version erhalten:
Firmware Version ermitteln

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

Raspberry Pi – erste Schritte / Start im headless mode

Raspberry Pi ohne Tastatur und Monitor an den Start bringen
Dies ist eine Anleitung für die initiale Installation eines Raspberry Pi Model B ohne angeschlossenen Monitor und Tastatur (sogenannter headless Modus). Danach kann der Raspberry Pi für den jeweiligen Spezialfall konfiguriert werden.

– Raspberry Pi Model B am LAN angeschlossen
– Kartenleser am Windows Computer
– leere SD-Karte > 4GB vorzugsweise von SanDisk oder anderem qualitativ guten Hersteller!
– ein Tool zum Beschreiben der SD-Karte, z.B. unter Windows den „Win32 Disk Imager“ (Download bei Heise.de)
– das Image für den Raspberry Pi – hier Raspian yyyy-mm-dd-wheezy-raspbian.zip von raspberrypi.org
– ein SSH Terminal / „Tool“ z.B. putty

Win32 Disk Imager

– Nach dem Auspacken der Zip-Datei kann das Image mit dem Win32 Disk Imager auf die SD-Karte gebracht werden.
Achtung! Ab Raspian Jessie ist ssh nicht mehr per default aktiv! Wenn das Image fertig auf die SD-Karte geschrieben ist, via Explorer direkt unter / eine leere Datei ssh anlegen.
Die Sinnhaftigkeit dieser „Neuerung“ möchte ich nicht diskutieren.
– Karte in den Raspberry Pi stecken und einschalten.Wer auf seine Platine schauen kann, sieht alle vier LEDs leuchten click for source.

Wir wollen den Raspberry ohne Monitor und Tastatur betreiben (sogenannter „headless mode“ – kopfloser Betrieb). Da kommen die aktuellen Images mit aktiviertem ssh und dhcp! Dies bedeutet, wir müssen nur die IP unseres Raspberry herausbekommen, indem wir z.B. auf dem Router nachsehen.
Router DHCP ListeDer Eintrag mit der MAC beginnend B8:27:EB … ist unser Raspberry.
Bei einer FritzBox zeigt uns diese die IP an (unter Punkt „Heimnetz“)
fritzbox_ipNun verbinden wir uns mit ssh (z.B. mit Putty ssh Port 22) auf die ermittelte IP. Der Standarduser ist pi und Passwort raspberry
putty ssh to raspberry

Mit der NOTICE wird man aufgefordert, mit dem Tool raspi-config Einstellungen auszuführen.
Dies machen wir hier jedoch nicht, sondern setzen diese direkt auf der Kommandozeile.

Zuerst setzen wir ein neues Passwort für den user pi mit:
sudo passwd piNun aktualisieren wir das System (Internetverbindung vorausgesetzt) mit:
rasp_apt-get_updateund mit:
rasp_apt-get_upgrade

Das Upgrade benötigt eine Bestätigung zur Benutzung des geforderten „Plattenplatz“ und danach etwas Zeit, je nach aktuellem Versionsstand des Images und der enthaltenen Pakete!

Die Einstellung der Zeitzone mit dpkg-reconfigure tzdata. Zur Auswahl von „Europe“ und „Berlin“ erscheint ein grafisches Menü aus dem Tool „raspi-config“

dpkg-reconfigure tzdata

Partitionserweiterung auf gesamte SD-Karte
Die Partition ist nun ziemlich klein und allein mit dem Image zu 90% ausgelastet.
Wir sollten also die Partition auf den gesamten Datenträger, also die gesamte SD-Karte, ausweiten und nutzen.
Als „Starter“ können wir dafür das Tool „raspi-config“ nutzen.
sudo raspi-config öffnet dieses Tool:
DasToolRaspiConfigExpand Filesystem erweitert die Partition. Wir rebooten das System um die Änderung an der Partitionstabelle wirksam werden zu lassen. Als fortgeschrittener oder interessierter Anwender können die unter der GUI verborgenen Befehle und Aktionen auch selbst gesteuert und durchgeführt werden. Dazu gibt es eine extra Anleitung im Beitrag „Partition auf gesamte SD-Karte erweitern“.

Hostname ändern
Wer sein System individuaisieren möchte, bzw. mehr als ein Raspberry Pi in seinem Netz betreiben will, kann den Systemnamen ändern. Einfach in den zwei folgenden Dateien den bisherigen Namen raspberrypi durch den gewünschten neuen Namen ersetzen:
sudo nano /etc/hostname
sudo nano /etc/hosts
Danach ist ein Reboot (sudo reboot) erforderlich und nach der Anmeldung kann man mit hostname den neuen Systemnamen abfragen, bzw. man sieht ihn schon im Prompt.

Image sichern
Wer nun sein Image sichern möchte, fährt den Raspberry Pi herunter (sudo poweroff) und steckt die SD-Karte in den Kartenleser, um mit W32DiskImager das Image in eine Datei zu sichern. Funktion „Read“ auswählen!

OpenSSL: Schwerwiegender Fehler in der Programmierung: The Heartbleed Bug

Ein schwerwiegender Programmierfehler in OpenSSL öffnet einem Angreifer zur Zeit Tür und Tor: The Heartbleed Bug

Es steht bereits ein Patch für OpenSSL zur Verfügung, dieser wird auch bereits in den verschiedenen Linux Distributionen zur Installation angeboten.

Des weiteren sollte man auf jeden Fall auch die SSL Zertifikate auf den Systemen austauschen um ganz sicher zu gehen. Die großen CA’s bieten bereits einen kostenlosen Austausch an.

Ob der eigene Server betroffen ist, kann man auf folgenden Sites testen:

 

VMware ESX(i): VNC Verbindung zum Gast aufbauen

In manchen Fällen möchte man einem Benutzer oder Dienstleister nicht die Möglichkeit geben mit dem vSphere Client auf das Gastsystem zuzugreifen.

Hier bietet der ESX(i) Server die Möglichkeit auf den Gast mittels VNC (RealVNC oder UltraVNC) darauf zuzugreifen.

Hierzu muss zum einen die ESX(i) Firewall geöffnet werden und dem Gast ein Port sowie Kennwort zugewiesen werden.

Die Firewall kann im vSphere Client unter „Home/Bestandsliste/Bestandsliste“ auf dem Reiter „Konfiguration“ unter „Software/Sicherheitsprofil“ eingestellt werden. Dort einfach bei Firewall auf „Einstellungen“ clicken und die Regel „gdbserver“ aktivieren.

Unbedingt beachten: Hiermit wird eine große Portrange geöffnet!!! Alternativ kann man sich auch eine eigene Rule für VNC bauen: VMware KB2008226

Nun muss noch die .VMX Datei des Gastes editiert und folgende Zeilen hinzu gefügt werden:

RemoteDisplay.vnc.enabled = true
RemoteDisplay.vnc.port = 5900
RemoteDisplay.vnc.password = P@ssw0rd

Zu beachten ist hier, das jedes Gastsystem einen anderen Port benötigt! Sinnvoll ist es, den Port einfach hoch zu zählen.

Für die beste Performance sollte am VNC Client in den Optionen „hextile encoding“ und „use all colors“ aktiviert sein.

Die Verbindung zum Gast kann nun über „[IP/DNS] des ESX(i) Hosts:PORT“ aufgebaut werden.

 

Stringoperationen in der DOS Batch – Ersetzen und Ausschneiden

Ersetzen und Ausschneiden in der CMD Batchprogrammierung (DOS CMD).
Manchmal muss man auch in einem Batch Stringoperationen durchführen.
So kann man es machen:
set MSG=Textbeispiel
Dieser String dient im folgenden als Test- und Textbeispiel.

echo %MSG:t=u%
Ersetze alle t durch ein u (Groß-/Kleinschreibung wird nicht beachtet!). Das ergibt somit:
uexubeispiel

echo %MSG:xt=st%
Ersetze alle „xt“ Strings durch den String „st“ :
Testbeispiel

echo %MSG:~4%
Schneide die ersten 4 Zeichen ab:
beispiel

echo %MSG:~-5%
Schneide bis auf die letzten 5 Zeichen ab:
spiel

echo %MSG:~4,-5%
Schneide ab der 4. bis zur 5. Stelle von hinten heraus:
bei

echo %MSG:~8,2%
Schneide ab der 8.Stelle 2 Zeichen heraus :
pi

In einem konkreten Fall sollte sichergestellt sein, dass ein externer Programmaufruf mit
programmname.exe „parameter1“
Nicht durch parameter1=“Das ist ein „toller“ Text“ in einen Fehler läuft:
Programmname.exe „“Das ist ein „toller“ Text““
Durch set parameter1=%parameter1:“=\“% konnten die Anführungszeichen maskiert werden!
Programmname.exe „\“Das ist ein \“toller\“ Text\““

 

LegoCity02

PowerShell: Arbeiten mit dem Profile

Wer nicht immer das Standard PowerShell Fenster benutzen möchte, der kann dieses mittels eines Profiles einfach bei jedem Start von PowerShell anpassen.

Diese Datei liegt normalerweise unter „eigene Dokumente\WindowsPowerShell\Microsoft.PowerShell_profile.ps1“, allerdings kann dies je nach Benutzerumgebung variieren.

Den genauen Standort kann man sich in der PowerShell mit der Systemvariablen „$profile“ anzeigen lassen:PowerShell profileDa es sich hier um ein ganz normales PowerShell-Script (*.ps1) handelt, kann man es auch ganz einfach so befüllen.

In meinem Profile lasse ich mir direkt beim Start alle SnapIns sowie Module laden (auch wenn dies die PowerShell etwas aufbläht). Dies hat den Vorteil, das man direkt alle CMDLETS des Systems zur Verfügung hat.

Des weiteren lege ich ein Transscript (LOG-Datei) an, damit ich auch später nachvollziehen kann, was ich getan habe.

write-host -fore red „### Alle verfügbaren Module laden… ###“ Get-Module -ListAvailable | % { import-module $_.Name; write-host $_.Name }

write-host „“ write-host -fore red „### Alle Snapins laden… ###“ # Add-PSSnapin -Name Quest.ActiveRoles.ADManagement @(Get-PSSnapin -Registered) | % { Add-PSSnapin -Name $_.Name; write-host $_.Name } Set-QADPSSnapinSettings -DefaultSizeLimit 0

write-host „“
write-host -fore red „### eigene Libraries laden ###“
get-childitem $MyLibDir\Modules\PS | foreach-object {. $_.fullname}
get-childitem $MyLibDir\Modules\OWN | foreach-object {. $_.fullname}

write-host „“ write-host -fore red „### Variablen und Transcript setzen ###“ $MyDate = Get-Date -Format yyyy-MM-dd_H-m-s_$env:computername $MyLibDir = „z:\Programme\PowerShell“ $MyTransDir = „Z:\Programme\PowerShell\Transcript“ $Transcript = „$MyTransDir\Transcript_$MyDate.txt“

$MyPROD = „z:\programme\powershell\prod“ $MyTEST = „z:\programme\powershell\test“

Start-Transcript

Einige Pfade kann man hier der besseren Übersicht halber auch noch in Variablen packen, dies ist aber für diese Beispiel nicht notwendig.

PHP: aktuelle Session Variablen anzeigen

Um die Session Variablen der aktuellen Sitzung darzustellen, wird eine Schleife über das Array @_SESSION gefahren, mit allen Schlüsseln (Keys).
Im PHP-Programmcode sieht das dann so aus:

<?php
      echo '<table border=1>';
      echo '<tr><td><b>KEY</b></td><td><b>VALUE</b></td></tr>';
      foreach ($_SESSION as $key =>$value) 
      {
          echo '<tr><td>'.$key.'</td>';
          echo '<td>'.$value.'</td></tr>';
      }
      echo '</table>';
?>

Als Beispiel um eine Session zu starten und Variablen zu setzen, nehmen wir eine WordPress Installation (wäre sonst zu einfach 🙂 ). In der wp-config.php folgenden Block einfügen:

/**
* SESSION - Start Session if not started
*/
if (!session_id())
    session_start();
    $_SESSION['tonium_session_id'] = session_id();
 
    $ip = getenv('REMOTE_ADDR');
    $_SESSION['remote_ip'] = $ip;
 
    $host = gethostbyaddr($ip);
    $_SESSION['remote_host'] = $host;
 
    $_SESSION['f_count']++;
...

und so sieht es dann aus:

KEY VALUE
tonium_session_id 7t02coobg6khm97hriqi0c0817
remote_ip 91.19.110.190
remote_host p5B136EBG.dip0.t-ipconnect.de

Testdemo unter www.Tonium.de

Was ist eigentlich RSS?

Wofür steht RSS?

RSS ist eine Abkürzung und steht für „Rich Site Summary“ (Übersetzt in etwa: „Zusammenfassung einer informationsreichen Internetpräsenz“), nach vielen Weiterentwicklungen wurde hieraus „Really Simple Syndication“ (Übersetzt in etwa: „wirklich einfache Verteilung“).

Warum RSS?

RSS dient zur einfachen und strukturierten Veröffentlichung von Texten in einem einheitlichen Format (XML) ohne Formatierungen oder sonstigen Verschnörkelungen. Gerade bei großen Newsseiten/Blogs etc. war es schwierig schnell Informationen in Kurzform zu erhalten. Mit Einführung des RSS (Feeds) war es nun endlich möglich, alle Informationen schnell und strukturiert auszuliefern.

Hierzu benötigt wird allerdings ein sogenannter News Reader wie Tiny Tiny RSS oder FeedReader etc. benötigt. News Reader gibt es für jedes gängige Betriebssystem und Smartphone.

In so einem Newsreader ist es möglich mehrere (RSS) Feeds zu abonieren und nach eigenen vorlieben anzeigen zu lassen.

Einen kostenlosen Online-NewsReader kann ich euch anbieten: Click mich!

Events aus einer lokalen BEM Datenbank abfragen

Die Events des BMC Event Manager werden in einer properitären Datenbank gespeichert. Damit sind sie im Vergleich zu anderen Tools mit relationalen Datenbanken nicht mit SQL bzw. ODBC zugreifbar. Dies ist für weiterverarbeitende, herstellerfremde Applikationen (z.B. Ticket- und Alarmsysteme) und Reports notwendig, oder man nutzt die entsprechenden BMC Anwendungen.
Für herstellerfremde Tools und eigene Skripte ermöglicht BMC mit dem Befehl mquery das Abfragen von Events aus der BEM-Datenbank.

mquery

-q – quite, ohne Ausgabe des Banners
-n CellName – Name der BEM-Zelle die abgefragt werden soll
-f [BAROC, CSV] – Ausgabeformat: BAROC oder CSV Format
-a EventClass
-w “ Abfragebedingungen “

BAROC-Format ergibt eine mehrzeilige Ausgabe eines jeden Events

mquery -q -n CellName -f BAROC -a EventClass -w "slotkey_1: equals 'slotvalue' "

EVENTCLASS;
       slotkey_1 = slotvalue;
       slotkey_2 = slotvalue;
...
       slotkey_N = slotvalue;
END

 

CSV-Format ergibt eine einzeilige Ausgabe pro Event

mquery -q -n CellName -f CSV -a EventClass -w "slotkey_1: equals 'slotvalue' "

EVENTCLASS,slotvalue_integer,’slotvalue_string’,...,’last_slotvalue’

 

Diese mquery-Abfrage wurde direkt vom BEM-Server gestartet.
Wie sieht es jedoch auf einem anderen Server aus?
Von einem remote System sind ein paar Voraussetzungen zu schaffen, die in den Zugriff auf die BEM-Daten via mquery ermöglichen.