Select Page

NETWAYS Blog

end-2-end monitoring mit watir-webdriver und headless

Schon häufiger wurde hier im Blog end 2 end monitoring behandelt, z.B. auto-it, webinject.
Das rubygem watir-webdriver ist ein weiteres tool aus diesem Bereich. Mit Ihm kann man Webseiten abrufen, auf Elemente überprüfen und Aktionen ausführen. Das besondere am watir-webdriver ist, dass er einen echten Browser zum simulieren der Verbindung nutzt.
Auf einem Linux Server ohne GUI schön und gut könnte man sich jetzt denken, doch mit gem headless und Xvfb kann man seinen Browser auch ohne GUI nutzen.
Im folgenden Beispiel zeige ich die Funktionsweise von watir. Als System dient mir ein debian wheezy

Vorbereitung

Als Voraussetzung braucht man folgende Pakete

aptitude install rubygems curl xvfb

Unter debian installiert an jetzt iceweasel, unter anderen distros wohl eher firefox. Chrome sollte auch funktionieren (und safari auf dem mac)

aptitude install iceweasel

Ich empfehle ruby mit rvm zu verwalten. Dann kann man zwischen verschiedenen Projekten und ruby Versionen einfach hin und her springen.

curl -L http://get.rvm.io | bash -s stable
# su -
rvm install 1.9.3
rvm use ruby 1.9.3@watir --create

Projektverzeichnis anlegen und Gemset für dieses Verzeichnis festlegen

mkdir check_watir
cd $_
rvm use @watir --ruby-version

Ein Gemfile erleichtert es einem die plugins auf andere Server zu kopieren. Nach einem “bundle” stehen dort wieder alle gems zur verfügung.

vim Gemfile
source 'https://rubygems.org'
gem 'watir-webdriver'
gem 'headless'
bundle

Erster Test im irb

Um die Funktionalität von watir ersteinmal auszuprobieren bietet es sich an irb zu benutzen.

irb
1.9.3p194 :001 > require 'watir-webdriver'
 => true
1.9.3p194 :002 > require 'headless'
 => true
1.9.3p194 :003 > headless = Headless.new
 => #
1.9.3p194 :004 > headless.start
 => #
1.9.3p194 :005 > b = Watir::Browser.start 'www.google.com'
 => #
1.9.3p194 :006 > b.text_field(:name => 'q').set("Icinga Monitoring")
 => ""
1.9.3p194 :007 > b.button(:name => 'btnG').click
 => []
1.9.3p194 :008 > b.a(:text => 'Home - Icinga: Open Source Monitoring').exists?
 => true
1.9.3p194 :013 > quit

Ein echtes plugin

Dieses Plugin geht zuerst auf www.netways.de. Dort sucht es den Link ‘Shop’ und klickt diesen an; sucht anschließend den Link Warenkorb, klickt diesen und überprüft ob der Warenkorb leer ist.
read more…

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Ruby On Rails lernen mit vagrant und puppet

Seit zwei Wochen bin jetzt dabei aus Hobby-Gründen Ruby on Rails zu lernen. Zum einen war ich Ruby-Neuling (außer den Bruchstücken die ich bisher in puppet benötigte) zum anderen kannte ich Rails auch nur vom hörensagen.

Ruby lernen:

Also brauchte ich als erstes mal Lernmaterialien, dafür habe ich zum einen das Railsbuch gefunden, das zwar Versionsmäßig etwas angegraut ist allerdings für mich gute Dienste leistet, zum anderen die Ruby-auf-Schienen Seite mit deren Hilfe ich mich in die Ruby-Grundlagen eingearbeitet habe.

Ruby ausprobieren:

Als nächstes braucht man eine Entwicklungsumgebung. Hierfür kann man entweder alle Entwicklungspakete wie ruby, rails, die ganzen gems, nodejs usw. auf seinem HostPC installieren, oder aber man nimmt vagrant her und hat eine transportable, abgegrenzte und reproduzierbare Umgebung.
Um das aufsetzen einer solchen Box auf das Mindestmaß an Arbeit zu beschränken gibt es das Rails-Dev-Box Projekt.
Vorausgesetzt man hat schon vagrant, virtualbox und git installiert sind die nächsten Schritte bis zur fertigen Box schnell erledigt.

# clonen des Rails-dev-Box Projekts
git clone https://github.com/rails/rails-dev-box.git
# wechsel in das Verzeichnis
cd rails-dev-box
# starte die Vagrant-Box, sollte die 32bit Ubuntu box noch nicht
# heruntergeladen worden sein, passiert das jetzt automatisch
vagrant up
# Wenn man im rails-dev-box Verzeichnis ist kann man sich problemlos per ssh verbinden.
vagrant ssh

Hat man schon ein rails Projekt begonnen, kann man es einfach nach rails-dev-box/rails kopieren und in der box die gems nachinstallieren.

vagrant ssh
# Das rails-dev-box Verzeichnis wird automatisch in /vagrant gemountet
cd /vagrant/rails
# alle gems werden nachinstalliert mit
bundle

Möchte man ein Neues Prokekt beginnen geht das auch

vagrant ssh
# Das rails-dev-box Verzeichnis wird automatisch in /vagrant gemountet
cd /vagrant/rails
# Hier erstellt man sein neues Projekt names "rails" mit
rails new rails

Jetzt hat man einen guten Einstieg ins Ruby-on-Rails lernen.
Zwei Empfehlungen aus dem rails-dev-box Projekt möchte euch nicht vorenthalten.
Man möchte am liebsten auf seinem Host entwickeln und nur in der Box testen. Auf dem Host hat man nämlich in der Regel die entsprechend angepasste IDE, ssh-keys usw. installiert.
Zum zweiten möchte man auch und besonders im Lernprozess git benutzen. Dann kann man nämlich, wenn man nach jedem lern-Schritt einen Commit macht, am ende den kompletten Lernprozess nochmal im Git nachvollziehen und hat evtl. sogar ein Nachschlage-/Spickwerk

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

sms versenden mit Linux

Vor einiger Zeit habe ich eine neue UMTS Karte für mein Notebook bekommen und mich gefreut. Nach dem Anbieterwechsel konnte ich nun endlich die, an vielen Orten vorhandenen, W-Lan Hotspots benutzen – dachte ich.
Im Prinzip war das auch über den Vertrag abgedeckt, jedoch muss man für Aktivierung des Ganzen eine SMS an eine Kurzwahlnummer schicken, um als Antwort die Zugangsdaten zu bekommen. Jedoch passte die SIM-Karte zwar perfekt ins UMTS Modem, jedoch nicht in ein mir zur Verfügung stehendes Handy. Das Problem war Sim <-> MicroSIM.
Als einfachste Lösung habe ich mir gedacht, verschicke ich einfach eine SMS über den Laptop. Als Betriebssystem benutze ich Ubuntu, also konnte ich schon mal nicht mit Hersteller-tools rechnen. Nach kurzem Suchen hat sich allerdings herausgestellt, dass das auch prima mit Linux-Mitteln funktioniert.
Denn genau zu diesem Zweck wurde gammu erfunden, ein CLI-Tool mit dem das versenden und abrufen von SMS möglich ist. Zusätzlich gibt es noch die GUI wammu mit der man das ganze etwas grafischer benutzen kann. Das habe ich allerdings nicht ausprobiert. Denn gerade wegen der Command-line Schnittstelle ist Gammu interessant (z.B. als notification aus Icinga heraus)
Beispielhaft zeige ich kurz die Installation von Gammu auf meinem DELL Laptop.
1.) aptitude install gammu
2.) gammu-detect
3.) gammu –identify
Jetzt müsste unter /home/Mein_USER/.gammurc ein Datei angelegt worden sein mit folgendem Inhalt:
[gammu]
port = /dev/phone
model =
connection = at19200
synchronizetime = yes
logfile =
logformat = nothing
use_locking =
gammuloc =
name=

Das kann bei euch natürlich etwas anders aussehen.
Ich hatte noch ein kleineres Problem mit der Benutzung von gammu ohne root-Rechte. Dafür habe ich einen kurzen fix gefunden den ich euch natürlich auch nicht vorenthalten will. Diese ist auch der Grund, warum in meiner .gammurc /dev/phone steht
Man erstelle einen Symlink vom UMTS-Adaper device zu /dev/phone und sorge anschließend dafür das auch andere dieses beschreiben können
ln -s /dev/ttyACM0 /dev/phone
sudo ln -s /dev/ttyACM0 /dev/phone
chmod 666 /dev/phone
sudo chmod 666 /dev/phone

Als udev rules habe ich folgendes eingetragen, dieses ist allerdings gerätespezifisch
KERNEL=="ttyUSB*", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", NAME="phone", MODE="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="0421", ATTRS{idProduct}=="006b", NAME="phone", MODE="0666"

Als letztes noch ein paar wichtige Kommandos:
SMS abrufen:  gammu getallsms
SMS verschicken:  echo “Hallo! Ich bin ein Gammu-Test.” | gammu –sendsms TEXT 0123456789  (dieses könnte man auch so als notification command in Icinga eintragen.)

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

Plötzlich Kindle

Frohes Neues Jahr! Ein lustiger Zufall wollte es, dass nach dem Weihnachtsfest ein Großteil der NETWAYS Mitarbeiter mit einem Kindle gesegnet ward. Nach den ersten Praxiserfahrungen und Unterhaltungen in der Kaffeeecke hat sich ein recht unterschiedlicher Wissenstand bei den Nutzern dieses tollen Spielzeugs herausgestellt. Diesen möchte ich mit dem jetzigen Beitrag einmal angleichen.
Erstmal zu Anfang: Das Kindle kann zwar verschiedene Formate verarbeiten wie z.B. rtf, html, jpg, pdf und noch ein paar mehr; richtig gut lesen lassen sich Bücher jedoch nur im Amazon-Eigenen AZW- bzw. dem älteren und drm-freien mobi-Format. Auf dem deutschen E-Bookmarkt ist jedoch das epub Format am weitesten verbreitet. Ich möchte euch einmal Zeigen, wie ihr am besten und einfachsten eure Bücher kauft, archiviert, konvertiert und übertragt.
Ich fange mal hinten an: Jeder der sich das erste mal mit seinem Kindle bei Amazon anmeldet bekommt automagisch eine neue Emailadresse, die an das Kindle gebunden ist. Diese lautet, wenn man sich mit Hans.Mustermann@freemail.com bei amazon registriert hat, Hans.Mustermann@kindle.com. Es sei denn ein anderer Hans.Mustermann war schneller. Man kann die Adresse im Kindle unter den Einstellungen nachlesen. Schickt man jetzt ein Dokument an diese Adresse, erscheint es wenige Minuten später am Kindle. Die möglichen Absenderadressen kann man auf http://www.amazon.de/myk nachschauen und weitere Eintragen.
Kommen wir zum zweiten Schritt, dem Konvertieren: Das klappt z.B. mit PDFs ganz gut(meißtens) wenn man einfach in die Betreffzeile der email ein “convert” schreibt. Eine weitere Möglichkeit Bücher zu konvertieren hat man mit der für Linux, Mac und Windows verfügbaren Software Calibre. Es ist sehr empfehlenswert, seine Ebooksammlung in Calibre zu archivieren, denn hiermit hat man immer die Möglichkeit die Bücher, wenn man mal ein neues Gerät hat, wieder ins passende Format zu konvertieren. Im Fall des Kindle geht es bei Calibre ziemlich einfach. Man führt den Einrichtungsassistenten aus. Gibt an welches Kindle man besitzt, trägt seine Emailadresse und Postausgangssever ein und drückt auf ‘fertig’. Ab jetzt kann man unter ‘verbinden/teilen’ jedes Buch an den reader übertragen. Liegt es noch nicht entsprechend vor, konvertiert Calibre das Ebook automatisch ins Mobi Format.
Zum Schluss möchte ich noch was zum Kaufen sagen. Auch das kann man mit Calibre machen. Es durchsucht dabei eine ganze Reihe von bekannten Ebook Händlern und listet alle Ergebnisse zum Preisvergleich auf. Jetzt kann man das günstigste kaufen, es in calibre speichern, konvertieren und übertragen.
Zack-Zack – Die Kette ist komplett.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.

impress.js – Really impressed, I am

Im Alltag ist es immer wieder interessant zu sehen, dass alle sich über Powerpoint™ Präsentationen lustig machen, am Ende des Tages aber doch wieder auf das alte Hausmittel zurückgreifen. Es ist ja auch so schön einfach und eine echte Alternative schwer zu finden.
Aber mal Hand aufs Herz. Mal was anderes ausprobieren tut nicht weh und eventuell ist das neue Tool ja sogar besser.
So einen Vetreter seiner Zunft habe ich letzte Woche durch Zufall gefunden. Es heißt impress.js und basiert auf einem javascript Framework. Inspieriert wurde das ganze durch die bekannte online Lösung Prezi, die im Gegensatz zu impress.js jedoch kommerzielle Zwecke verfolgt und dabei sogar bei ein Paar features im Hintertreffen ist. Bei impress.js beherrscht man nämlich alle drei Dimensionen.
Wie so eine Präsentation aussehen kann, kann man im sich hier anschauen:

impress.js tutorial

impress.js tutorial


impress.js benötigt Serverseitig nicht viel da es sich um javascript handelt und clientseitig ausgeführt wird.
Auch bei der Erstellung wird dem Benutzer freie Hand gelassen. Die Präsentation wird durch eine einzige html Datei definiert und kann mit einem einfachen Texteditor erstellt werden.
Weitaus komfortabler geschiet dies allerding mit dem online Editor strut. Hier kann man sich seine Präsentation zusammenklicken, die Folien anordnen (stauchen, strecken, drehen usw.). Wenn man die Demo benutzt kann man die Präsentation mit Hilfe des Browsers (STRG+S) auf der Festplatte speichern und mitnehmen oder alternativ auf einen Webserver laden und online anschauen. Besonders die Overview und Preview am oberen rechten Rand sind zwar praktisch, werden aber auch leicht übersehen.
 

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.