Linux: Skript ausführen beim Ausschalten

Ich bin ein fauler Hund und noch dazu vergesslich. Also, was passiert, sobald ich meine virtuelle Linux-Maschine ausschalte? Ich denke, verdammt, schon wieder das Backup vergessen!

Also habe ich nach einer Methode gesucht, ein (oder mehrere) Backup-Skripte auszuführen, sobald ich den Rechner ausschalte. Bei einer virtuellen Maschine wird das natürlich durch einen ACPI-Event simuliert. Aber Linux bemerkt da keinen Unterschied.

Hier also meine schnelle: „Klicken-und-vergessen“-Methode für

  • Oracle VM VirtualBox Manager
  • Host: Windows 7 64 Bit
  • Gast: Ubuntu Linux 14.04.1 – 64 Bit
  • Netzwerk: AVM FRITZ!Box 7390, Host über WLAN verbunden

Wir installieren (falls noch nicht geschehen) ACPI, das Advanced Configuration and Power Interface.

sudo apt-get install acpi

Alles wichtige findet sich unter etc/acpi/:

ls -la /etc/acpi/

Werfen wir einen Blick in die auszuführende Datei powerbtn-acpi-support.sh:

sudo nano /etc/acpi/powerbtn-acpi-support.sh

Zum Glück ist die Datei nicht sehr lang und erklärt sich sogar einem Laien wie mir einigermaßen. Wir suchen die Zeile weiter unten mit dem Kommentar: # Normal handling.

Und direkt vor dem /sbin/shutdown -h -P now platzieren wir den Aufruf zu unserem Skript. Das könnte dann etwa so aussehen:

# Normal handling.
/etc/init.d/backup_files.sh
/sbin/shutdown -h -P now "Power button pressed"

In backup_files.sh rufe ich meine verschiedenen Backup-Befehle auf, die sonst auch bei reboot oder shutdown aufgerufen werden. Wie das funktioniert, habe ich schon hier: Und es geht doch: Linux, Skript ausführen beim Herunterfahren beschrieben.

Das war’s. Beim nächsten Ausschalten gibt es vorher erst einmal – wie es sich gehört – ein Backup.

Und es geht doch: Linux, Skript ausführen beim Herunterfahren

Geradezu abenteuerlich sind die Aussagen einiger selbsternannter „Spezialisten“ beim Thema „Skripte ausführen beim Herunterfahren“. Von „Linux fährt man nicht herunter“ bis zu „ist überhaupt nicht möglich“ habe ich alles schon lesen dürfen.

Dabei ist es ganz einfach. Ich benutze diese Methode auf meiner virtuellen Entwicklunsgmaschine, um Dateien und Datenbanken nach einem Arbeitstag auf dem Host zu sichern.

Hier also meine schnelle: „Klicken-und-vergessen“-Methode für

  • Oracle VM VirtualBox Manager
  • Host: Windows 7 64 Bit
  • Gast: Ubuntu Linux 14.04.1 – 64 Bit (Hostname: minlux)
  • Netzwerk: AVM FRITZ!Box 7390, Host über WLAN verbunden

Die auszuführenden Dateien befinden sich in /etc/init.d/.

Wir legen ein Skript an, das nichts anderes macht, als eine leere Datei namens goodbye.txt ins Home-Verzeichnis des Users zu schreiben. Das Skript, das das erledigen soll, erhält den Namen custom-shutdown.sh.

echo -e '#!/bin/sh\ntouch /home/'$USER'/goodbye.txt' | sudo tee /etc/init.d/custom-shutdown.sh

Wir machen die Datei ausführbar:

sudo chmod +x /etc/init.d/custom-shutdown.sh

Prüfen, ob alles geklappt hat:

ls -l /etc/init.d/custom-shutdown.sh
cat /etc/init.d/custom-shutdown.sh

Nun legen wir in /etc/rc0.d/ einen Link zum Skript. Beachte: das Präfix K04 vor dem Dateinamen, ohne dem geht es nicht.

sudo ln -s /etc/init.d/custom-shutdown.sh /etc/rc0.d/K04custom-shutdown.sh

Fertig. Nun starten wir die Maschine neu

sudo reboot

Test, ob goodbye.txt auch wirklich angelegt wurde:

ls -l ~

Man beachte, dass die Datei für den Nutzer root angelegt worden ist, falls man noch irgendetwas damit plant.

Skript beim Hochfahren ausführen

Wer möchte, kann Skripte auch ausführen lassen beim Hochfahren des Rechners. Dann muss der Link aber nicht in rc0.d sondern in rc6.d platziert werden.

echo -e '#!/bin/sh\ntouch /home/'$USER'/hello.txt' | sudo tee /etc/init.d/custom-start.sh
sudo chmod +x /etc/init.d/custom-start.sh
sudo ln -s /etc/init.d/custom-start.sh /etc/rc6.d/K04custom-start.sh

WICHTIG: Server neu starten

Wenn man Datenbanksicherungen beim Herunterfahren anlegen möchte, so muss man natürlich beachten, dass die Datenbank schon längst selbst heruntergefahren ist. Also muss man diese kurz wieder starten:


#!/bin/sh
date >> /media/sf_share/shutdown.log # das ist mein geteiltes Verzeichnis mit dem Host
sudo /etc/init.d/mysql start # hier wird MySQL wieder gestartet
exec /etc/webmin/mysql/backup.pl --all >> /media/sf_share/shutdown.log # mit Hilfe eines Webmin-Skriptes wird das Backup angestoßen
sudo /etc/init.d/mysql stop # und hier müssen wir MySQL natürlich wieder sauber beenden

Mein Dank geht an http://ubuntu.flowconsult.at/linux/ubuntu-14-10-shutdown-script-with-rc0-d-rc6-rcd/ und https://unix.stackexchange.com/questions/34963/running-script-before-shutdown-seemingly-not-working. Mehr Informationen zum Runlevel: https://en.wikipedia.org/wiki/Runlevel#Ubuntu

Oracle VM VirtualBox Manager – Zugriff auf gemeinsame Ordner und Dateien über Gasterweiterungen

Ein Thema, zu dem ich auch keine simple Lösung finden konnte: wie tauschen Host und Gast Dateien aus? Normalerweise funktioniert das über die sogenannten Gasterweiterungen. Aber diese zu installieren, ist so umständlich und schlecht erklärt, dass es schon an Körperverletzung grenzt.

Hier also meine schnelle: „Klicken-und-vergessen“-Methode für

  • Oracle VM VirtualBox Manager
  • Host: Windows 7 64 Bit
  • Gast: Ubuntu Linux 14.04.1 – 64 Bit (Hostname: minlux)
  • Netzwerk: AVM FRITZ!Box 7390, Host über WLAN verbunden
sudo apt-get install dkms -y

Ohne dem geht es nicht. Warum? Keine Ahnung. Oracle versucht es hier zu erklären.

Die richtige ISO-Datei mit den Gasterweiterungen herunterladen und über den VirtualBox Manager einlegen:  Geräte->CD/DVD-Laufwerke->Datei für virtuelles CD/DVD-Medium auswählen…

Die ISO-Datei auswählen

Die ISO-Datei auswählen

Im Manager den gemeinsamen Order (hier: C:\Users\juergen\share) angeben. Dazu noch die Optionen: „automatisch einbinden“ und „permanent erzeugen“ aktivieren. Fragen Sie mich nicht, worin der Unterschied zwischen beiden besteht.

Gemeinsamen Ordner auswählen

Gemeinsamen Ordner auswählen

sudo mount /dev/cdrom /media/cdrom

Es genügt nicht, die ISO-Datei wie oben einfach nur auszuwählen; man muss sie auch mit mount einbinden. Keine Angst wegen der Read-Only-Nachricht, denn schließlich ist die ISO-Datei ja als CD-Abbild schreibgeschützt.

cd /media/cdrom/
sudo sh ./VBoxLinuxAdditions.run

Jetzt werden die Gasterweiterungen installiert. Schon diese zweite Befehlszeile lässt sich nirgends bei Oracle finden. Wie soll da jemand von selbst darauf kommen? Die Fehlermeldungen können ignoriert werden, da sie sich meist nur auf nicht installierte Desktop-Erweiterungen beziehen.

mount -l

Ein kleiner Test. Jetzt sollte ein Gerät „vboxsf“ zu sehen sein.

dir /media/

Kann man schon das Verzeichnis sehen? Es sollte automatisch das Prefix „sf_“ erhalten haben; hier also „sf_share“.

sudo usermod -aG vboxsf $(whoami)

Auch wichtig, sonst gibt es als kastrierter Nutzer, der man ist, wieder Probleme.

sudo reboot

Erst jetzt werden die Änderungen wirksam.

cd /media/sf_share
touch testfile.txt

Wir wechseln in das Verzeichnis und legen ein erstes Testfile ein, das auf beiden Maschinen zu sehen sein sollte.

Der gemeinsame Ordner auf dem Gastsystem.

Der gemeinsame Ordner auf dem Gastsystem.

Noch ein letzter Test: Jetzt sollte auch in der Windows-Maschine die Datei zu sehen sein.

Der gemeinsame Ordner auf dem Hostsystem

Der gemeinsame Ordner auf dem Hostsystem

 

 

Oracle VM VirtualBox Manager: Zugriff von Host auf Gast über Hostname statt IP

Wer eine virtuelle Maschine aufsetzt, möchte sich

a) die IP des Gastsystems nicht merken und

b) nicht ständig in irgendwelchen /etc/hosts Einträge pflegen müssen.

Daher schien es mir kein großes Unterfangen, das zu erledigen, wie falsch lag ich doch. Einen ganzen Tag habe ich damit vergeudet die Posts von Linux-Trollen zu lesen, die immer nur das gleiche aussagten: „Ach, irgendwie weiß ich auch nicht, wie das geht, aber ich schicke dich auf eine lange sudo-apt-get-install-Reise mit ein wenig Du-musst-dich-erstmal-einarbeiten-Kauderwelsch und Linux-ist-nur-für-Profis-Gebetsmühlenwiederkäuerei.

Also, hier ein 1-Minuten-Tutorial für:

  • Oracle VM VirtualBox Manager
  • Host: Windows 7 64 Bit
  • Gast: Ubuntu Linux 64 Bit (Hostname: minlux)
  • Netzwerk: AVM FRITZ!Box 7390, Host über WLAN verbunden

Ausgangssituation

Versucht man per

ping minlux

über die Windows-Konsole zuzugreifen, klappt es nicht.

Kennt man, sonst wären Sie nicht auf dieser Seite. Kein Zugriff auf die Gastmaschine über den Namen. Scheiße, oder?

Kennt man, sonst wären Sie nicht auf dieser Seite. Kein Zugriff auf die Gastmaschine über den Namen. Scheiße, oder?

 

Lösung

Wir öffnen Oracle VM VirtualBox Manager und passen die Netzwerkeinstellungen an. Man muss als Anschlusspunkt „Netzwerkbrücke“ auswählen und das Gerät mit dem der Host (also die Windows-Maschine) ins Internet geht . Zu den anderen Einstellung und deren Bedeutung kann ich nichts sagen.

Einfach die richtigen Haken setzen. Kein "NAT" sondern "Netzwerkbrücke" - das ist der Kniff

Einfach die richtigen Haken setzen. Kein „NAT“ sondern „Netzwerkbrücke“ – das ist der Kniff

Ergebnis

ping ok

ping ok

Einstellungen für PuTTY

Einstellungen für PuTTY

SSH ok

SSH ok

Browser ok

Browser ok

Na, war doch gar nicht so schwer. Und wieder einmal geht ein Stück exklusives Herrschaftswissen von den Linux-Jüngern verloren. Man muss nicht das Kernel neu kompilieren, nicht mit vi und grep irgendwelche Zeilen filtern und auskommentieren und auch nicht bei Vollmond nackt im Garten auf einem Bein stehen.

Ein Haken im schmutzigen Windows setzen, fertig!

minions-screening-header-343x215

Amazon Passwort Fischer unterwegs

ACHTUNG

Es sind wieder einmal Betrüger am Werk, die vortäuschen für Amazon irgendwelche Verifizierungen vorzunehmen. Die Lock-E-Mail ist seht gut gemacht, weil der Name tatsächlich korrekt ist.

Wie kündigt man paypal?

Im Zuge der allen Nutzern aufgezwungenen neuen AGB bei Paypal habe ich mich dazu entschieden, paypal den Rücken zu kehren.

Hier eine kleine Einleitung.

1. Einwählen

2. Aufrufen https://www.paypal.com/myaccount/settings/account/close

3. Bestätigen

Tschüss, paypal

Neuartiger Angriff auf WordPress über umbenannte wp-config-Dateien

Heute hat so ein Arschloch aus der Ukraine (IP: 91.202.145.143) versucht, verschiedene meiner WordPress-Installation zu hacken, indem versuchte direkt auf eine Koprie der wp_config-Datei zuzugreifen, in der die MySQL-Zugangsdaten abgespeichert sind.

Eine einfacher Trick: Er hat einfach die beliebtesten Kombinationen für Dateiumbenennungen ausprobiert:

wp-config.php.swp
wp-config.php-bak
wp-config.txt
wp-config.php.old
wp-config.bak
wp-config.php.save
wp-config.php.bak

Wer also seinen Webserver nicht für andere Files außer HTML, JPG, PHP etc. dicht gemacht hat, sollte alle Backups der wp-config-Datei löschen.

Smarte Suche für MySQL und WordPress mit mehreren Suchwörtern

Die eingebaute Suche von WordPress ist alles andere als gut, versagt sie doch schon bei mehr als einem Suchwort.

Bevor man aber gleich wieder Plugins installiert, kann man die Sache auch händisch programmieren.

Dazu muss zunächst in MySQL ein Volltext-Suchindex für die relevanten Datenspalten erzeugt werden:

ALTER TABLE `wp_posts` ADD FULLTEXT `MyFullTextIndex` (`post_title`, `post_content`)

Wie man sehen kann, bevorzuge ich die Suche in den Titeln und dem gesamten Textkörper. Wem das aber zu viel des Guten ist, kann es auch auf die Textzusammenfassung begrenzen:

ALTER TABLE `wp_posts` ADD FULLTEXT `MyFullTextIndex` (`post_excerpt`)

Nun kann man ganz einfach gewichtet suchen:

SELECT ID, post_title, MATCH (post_title, post_content) AGAINST ('Suchwort1 Suchwort2 Suchwort3') AS score

FROM wp_posts

WHERE MATCH (post_title, post_content) AGAINST ('Suchwort1 Suchwort2 Suchwort3')

AND post_status = 'publish'

Bingo!


					

Test: dbForge Studio for MySQL

With the help of dbForge Studio for MySQL I was finally able to export all my large Excel, CVS and Access data which I use for my selling reports to my MySQL Online Database without any losses.

dbForge Studio for MySQL is a VERY smart product which e.g. automatically detected and converted the right column type (datetime) from a CSV! Non of the other programs I tested was able to do the same. (PhpMyAdmin, HeidiSQL, Oracle Workbench all failed with corrupt data)

dbForge Studio for MySQL

I strongly recommend this tool to everyone who needs to work with MySQL

More information: https://www.devart.com/de/dbforge/mysql/studio/

WordPress plugin: Display SQL Stats

Displaying SQL result data as graphical chart on the dashboard with use of Google Chart Tools.

Showing chart in dashboard

Showing chart in dashboard

Settings

Settings

Download from WordPress repository.

Changelog

0.7 (2014/02/05)

  • adding/removing SQL statements more stylish

0.6.5 (2013/12/27)

  • fix bug on automatic detection of column types
  • better formatting of debug information

0.6.4 (2013/11/08)

  • only enrich header when on dashboard

0.6.3.1 (2013/10/17)

  • fixing small bug on min/max values when using more than one barcharts

0.6.3 (2013/10/15)

  • placing automatic max/min values on barcharts for better visualisation

0.6.2 (2013/09/14)

  • bug fix on emtpy results
  • switch charts on/off

0.6.1 (2013/09/14)

  • bug fix on wrong date display

0.6 (2013/09/14)

  • Check on WordPress 3.6.1
  • New chart types: Bar Chart
  • auto detecting of column types: date, number, string

0.5 (2013/09/10)

  • Use different chart types (Pie Chart, Scatter Chart, Bubble Chart)

0.4 (2013/08/21)

  • Use multiple SQL statments and charts

 0.3 (2013/08/17)

  • Tested with WP 3.6
  • New default demo SQL to demonstrate how to insert additional columns

0.2 (2013/04/25)

  • NEW: Notepad function to store different SQL statement, ideas or whatever

0.1 (2013/04/16)

  • first test version