Sonntag, 24. Dezember 2017

Error contacting apcupsd @ :3551: No such process

Ich hatte vor einiger Zeit mal den Befehl apcaccess verwendet um den Status meiner per USB angeschlossenen USV auf einem Ubuntu 16.04.2 abzurufen. Aus irgendeinem Grund funktionierte dies nicht mehr und der Aufruf des Befehls

apcaccess

hatte die Fehlermeldung

Error contacting apcupsd @ :3551: No such process

zur Folge. Nach einigem Googeln ergänzte ich die /etc/hosts um den hostnamen des Servers (vmhost) bei 127.0.0.1 nach localhost:


127.0.0.1    localhost vmhost

Es kam nun die Fehlermeldung

Error contacting apcupsd @ localhost:3551: No such process

Eine Durchführung div. Tests funktionierte aber:

sudo service apcupsd stop
sudo apctest


2017-12-24 00:18:33 apctest 3.14.12 (29 March 2014) debian
Checking configuration ...
sharenet.type = Network & ShareUPS Disabled
cable.type = USB Cable
mode.type = USB UPS Driver
Setting up the port ...
Doing prep_device() ...

You are using a USB cable type, so I'm entering USB test mode
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing USB UPSes.

Getting UPS capabilities...SUCCESS

Please select the function you want to perform.

1)  Test kill UPS power
2)  Perform self-test
3)  Read last self-test result
4)  View/Change battery date
5)  View manufacturing date
6)  View/Change alarm behavior
7)  View/Change sensitivity
8)  View/Change low transfer voltage
9)  View/Change high transfer voltage
10) Perform battery calibration
11) Test alarm
12) View/Change self-test interval
 Q) Quit

und auch der Dienst läuft

sudo service apcupsd status

   apcupsd.service - LSB: Starts apcupsd daemon
   Loaded: loaded (/etc/init.d/apcupsd; bad; vendor preset: enabled)
   Active: active (running) since Son 2017-12-24 00:19:24 CET; 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4611 ExecStop=/etc/init.d/apcupsd stop (code=exited, status=0/SUCCESS)
  Process: 5684 ExecStart=/etc/init.d/apcupsd start (code=exited, status=0/SUCCESS)
    Tasks: 3
   Memory: 236.0K
      CPU: 31ms
   CGroup: /system.slice/apcupsd.service
           └─5689 /sbin/apcupsd

aber der Dienst lauschte anscheinend nicht auf dem Port, denn mit

sudo netstat -tulpen

wurde er nicht angeführt.

Nun ergänzte ich die /etc/apcupsd/apcupsd.conf um den Wert NISIP 0.0.0.0 auf:

## apcupsd.conf v1.1 ##
UPSCABLE  usb
UPSTYPE usb
DEVICE
LOCKFILE /var/lock
UPSCLASS standalone
UPSMODE disable
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551

Nach einem

sudo service apcupsd force-reload

funktionierte das Kommando apcaccess wieder.

Donnerstag, 12. Oktober 2017

Libre Office Fußzeile wird abgeschnitten

Das Problem ist, dass die Fußzeile, bei dem aus einer Excel-Datei geöffneten Dokument, abgeschnitten ist. Dabei half die Anpassung der Seitenränder nicht. Wenn ich ein neues Dokument erstellt habe, hatte ich mit der Fußzeile auch kein Problem.

Abgeschnittene Fußzeile


Die Lösung ist, dass man unter Format->Seite...->Fußzeile den Haken bei "Höhe dynamisch anpassen" setzt.

Korrekte Fußzeile

Dieser Haken ist standardmäßig bei neuen ods-Dokumenten gesetzt, aber offensichtlich bei geöffneten Excel-Dokumenten nicht - da muss man den Haken dann setzen.

Donnerstag, 3. August 2017

Erstinstallation openHAB2 auf raspi3, Backupeinrichtung auf NAS via Samba, Installation Eclipse Smarthome Designer

OpenHAB2 wurde von mir als Grundlage für meine Heimautomatisierung ausgewählt. Es stand bereits ein eingerichteter Raspberry PI 3 Model B zur Verfügung. Die Schritte, die zur Einrichtung notwendig sind, sind großteils unter
http://docs.openhab.org/installation/linux.html#mounting-locally

sehr gut beschrieben. Allerdings fehlte mir im Detail:
  • beim Backup die Einrichtung einer CIFS-Freigabe zum Backup auf mein Synology-NAS sowie der cronjob, der das Backup regelmäßig durchführt.  
  • Außerdem bedarf es bei dem vorgegebenem Script einer Anpassung, um das Script auch auf einer gemounteten Freigabe anwenden zu können und 
  • das lokale mounten der Configuration zur Programmierung per Eclipse SmartHome Deisgner unter meinem Ubuntu 14.04 wird nicht behandelt.

Installation


Die Installationsschritte per Paketmanager (Stable Release) unter Raspbian 8 (Jessie) kurz Zusammengefasst:

wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
sudo apt-get install apt-transport-https  
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.listsudo apt-get update 
sudo apt-get install openhab2sudo systemctl start openhab2.service 
sudo systemctl status openhab2.servicesudo systemctl daemon-reloadsudo systemctl enable openhab2.service


Anmerkung: 
Da ich keinen Offlinebetrieb plane, habe ich mir die Installation aller Add-Ons via  sudo apt-get install openhab2-addons erspart.


Danach wechselt man im Browser auf seine Installation entweder per IP oder per Hostnamen https://10.0.0.100:8443 - ich habe mich für die Standard-Installation entschieden.

Backup


Wenn das vorüber ist, richtet man das Backup ein. Zuerst legt man - in meinem Fall auf meinem Synology DS216j - einen Benutzer (z.B. backupusr ) inkl. Passwort an und erstellt eine Freigabe, welche man diesem Benutzer zuteilt.

Samba-Freigabe auf NAS

Zum mounten und automatischem Verbinden der Freigabe benötigt man nun 3 Teile:
  1. einen Mountpoint
  2. einen fstab-Eintrag
  3. einen crontab-Eintrag
1. Mountpoint

ganz einfach angelegt per
sudo mkdir /mnt/backup


2. einen fstab-Eintrag

Wichtig: cifs-utils muss installiert sein! (sudo apt-get install cifs-utils)
Diese Zeile fügt man in die Datei /etc/fstab hinzu (sudo vi /etc/fstab):

//10.0.0.100/Backup/ /mnt/backup cifs username=backupusr,password=XXXyyyXXX,_netdev,uid=1000,gid=1000,iocharset=utf8, 0 0
3. einen crontab-Eintrag

 diese Zeile fügt man in die Datei /etc/crontab hinzu (sudo vi /etc/crontab):

@reboot         root    (sleep 30; /bin/mount /mnt/backup-auf-nas1.abtenau.comhome.at)&
Dieser sorgt dafür, dass die Freigabe beim Starten des Raspberrys automatisch gemounted wird. Der sleep von 30s ist notwendig, da es sonst sein kann, dass der raspberry noch nicht alles nötige gestartet hat, bevor er versucht die Verbindung aufzubauen.

Backupscript und Autostart 

Nun da die Freigabe eingerichtet ist, machen wir uns an das Backup-Script. Hier wird nun cp zum Kopieren verwendet. Dies führt zu vielen Fehlern ala:
cp: failed to preserve ownership for ‘/mnt/backup/openhab2-backup-20170803_112450/userdata/jsondb/backup/1501759478056--org.eclipse.smarthome.core.thing.link.ItemThingLink.json’: Permission denied
Bei der Suche nach der Fehlerbehebung stoß ich auf rsync. Also wurde das Script kurzerhand von cp -arv abgeändert auf (sudo vi /opt/backup/openhab2backup.sh):



# stop openhab instance (here: systemd service)
sudo systemctl stop openhab2.service

# prepare backup folder, replace by your desired destination
BACKUPDIR="/mnt/backup/openhab2-backup-$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUPDIR

# backup current installation with settings
rsync -a --no-owner --no-group "/etc/openhab2" "$BACKUPDIR/conf"
rsync -a --no-owner --no-group "/var/lib/openhab2" "$BACKUPDIR/userdata"
#cp -arv --preserve=mode,timestamps /etc/openhab2 "$BACKUPDIR/conf"
#cp -arv --preserve=mode,timestamps /var/lib/openhab2 "$BACKUPDIR/userdata"
rm -rf "$BACKUPDIR/userdata/cache"
rm -rf "$BACKUPDIR/userdata/tmp"

# restart openhab instance
sudo systemctl start openhab2.service
Änderungen am "Smarthome" haben für mich die Eigenschaften, dass sie auf einmal viel sind (wenn ich wieder an einem Wochenende eine neue Komponente dazuschließe oder Fehler behebe) und sich sonst nichts oder nur wenig ändert. Daher stelle ich mir ein Backup "vorsichtshalber" einmal im Monat ein und mache immer vor groben Änderungen ein manuelles Backup.
Das automatische habe ich in der /etc/crontab eingestellt (sudo vi /etc/crontab):

00 3    1 * *   root    bash /opt/backup/openhab2backup.sh

Mit diesen Einstellungen wird am Monatsersten ein Backup und 3 Uhr früh durchgeführt. 

Sonstige -notwendige- Einstellungen

Lokale Berechtigungen

Um auf USB- und GPIO-Pins zugreifen zu köennen fügt man den openhab-User der gruppen dialout und tty hinzu:

sudo adduser openhab dialout
sudo adduser openhab tty
Will man etwas mit Audio machen sollte man den Benutzer openhab auch der Gruppe audio hinzufügen:

sudo adduser openhab audio 
Um der Java-Umgebung die Ansteuerung der Schnittstellen ebenfalls zu ermöglichen, entfernt man das #-Zeichen in der Zeile

EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0:/dev/ttyS0:/dev/ttyS2:/dev/ttyACM0:/dev/ttyAMA0"
 in der /etc/default/openhab2.

Samba Share für Konfiguration

Etwas überrascht war ich, als ich hier gelesen habe, dass die empfohlene Entwicklungsumgebung Eclipse SmartHome Designer voraussetzt, dass man zugriff auf die Dateien hat. Hätte mir an dieser Stelle eine Standard-Empfehlung per SSH gewünscht (SFTP z.B) - aber wenns so Empfohlen ist, richt ichs mal so ein. Dazu:

sudo apt-get install samba samba-common-bin
Ist die Installation abgeschlossen konfiguriert man die Freigabe in:
sudo vim /etc/samba/smb.conf
 und fügt folgende Zeilen hinzu:

[openHAB2-userdata]
  comment=openHAB2 userdata
  path=/var/lib/openhab2
  browseable=Yes
  writeable=Yes
  only guest=no
  public=no
  create mask=0777
  directory mask=0777

[openHAB2-conf]
  comment=openHAB2 site configuration
  path=/etc/openhab2
  browseable=Yes
  writeable=Yes
  only guest=no
  public=no
  create mask=0777
  directory mask=0777

Weiters den Benutzer openhab als Sambabenutzer hinzufügen und ein Passwort vergeben:

sudo smbpasswd -a openhab
und noch sicherstellen, dass die Berechtigungen passen und die Samba-Konfiguration testen bevor man den smbd neu startet um die neue Konfiguration zu übernehmen:

sudo chown -hR openhab:openhab /etc/openhab2 /opt/openhab2/conf 
testparm
sudo systemctl restart smbd.service

Nun kann man als Ubuntu-Benutzer den Dateimanager (nautilus) öffen, per Strg+L die Eingabezeile aktivieren und mit der Eingabe

smb://openhab@10.0.0.100/
die Freigabe kontrollieren. Unter anderen Systemen hier die Erklärung.

Lokales Mounten unter Ubuntu 14.04

Zum automtischen Mounten der config-Pfade gibt es mehrere Optionen:
  1. Mounten bei Systemstart für alle Benutzer (fstab & script)
  2. Mounten bei Anmeldung eines Benutzers (fstab & script)
  3. Mounten erst bei Zugriff (autofs)
Da auf meinem PC mehrere Benutzer arbeiten und sonst niemand Zugriff haben soll bzw. diesen auch keiner Benötigt, habe ich mich für die Variante 2 entschieden, denn wenn die Freigabe erst bei Zuriff in Nautilus geöffnet wird, starte ich sicher öfter die Entwicklungsumgebung und bemerke erst dann, dass ich den mount vorher erst "aktivieren" muss.

Um das durchzuführen muss man folgende Schritte befolgen:
  1. Eintrag in der fstab mit den Optionen noauto und users sowie der Datei smbcredentials
  2. Ein kleines Mountscript anlegen
  3. Einen Eintrag in "Startprogramme" setzen
1. fstab + .smbcredentails Login

zuerst legt man die Logindatei an. In diese wird Benutzer und Passwort gespeichert und die Zugriffsberechtigungen so gesetzt, dass nur der Besitzer (und der Benuzter einer Live-CD!) die Dateien sehen kann.

vi ~/.smbredentialsopenhab

die Datei sieht so aus:


username=
password=
 die Datei speichert man ab und gleich danach setzt man die Berechtigungen so, dass man nur mehr selber an die Datei rankommt und erstellt auch gleich die nötigen Mountpoints (Ordner):

chmod 600 ~/.smbcredentialsopenhab
sudo mkdir /mnt/openhab /mnt/openhab2-conf /mnt/openhab2-user

der Eintrag sieht folgendermaßen aus (sudo vi /etc/fstab):
//10.0.0.100/openhab /mnt/openhab cifs noauto,users,credentials=/home/user/.smbcredentialsopenhab  0 0
//10.0.0.100/openhab2-conf /mnt/openhab2-conf cifs noauto,users,credentials=/home/user/.smbcredentialsopenhab  0 0
//10.0.0.100/openhab2-userdata /mnt/openhab2-userdata cifs noauto,users,credentials=/home/user/.smbcredentialsopenhab  0 0 
Falls noch nicht vorhanden, muss nun cifs-utils installiert werden:

sudo apt-get install cifs-utils
Standardmäßig wird das SUID-Bit, welches dafür verantwortlich ist, dass auch ein User ohne root-Rechte mounten darf, gesetzt. Man kann es so überprüfen und die Ausgabe sollte so aussehen:

user@pc:~$ ls -lah /sbin/mount.cifs
-rwsr-xr-x 1 root root 35K Jun 01  2017 /sbin/mount.cifs
ist es nicht gesetzt kann man dies einfach nachholen:

sudo chmod +s /sbin/mount.cifs 
 Nun erstellt man ein kleines Script zum mounten der Freigaben beim Start (vi ~/openhabmount.sh):

#! /bin/bash
#
mount /mnt/openhab 
mount /mnt/openhab2-conf
mount /mnt/openhab2-userdata

nun muss man das Scipt ausführbar machen:

chmod +x ~/openhabmount.sh

Danach legt man den Autostart an. Dazu geht man zu den Startprogrammen per
 gnome-session-properties
(evtl. andere Distributionen: HIER. Dort wählt man Hinzufügen, vergibt einen namen, Wählt bei Befehl das Script aus und vergibt optional einen Kommentar.


Ohne Neustart kann man die Freigaben nun per
bash ~/openhabmount.sh
mounten.

Installation Eclipse SmartHome Designer unter Ubuntu 14.04

Zuerst muss man das Archiv herunterladen ( akutell: wget http://eclipse.org/downloads/download.php?file=/smarthome/releases/0.8.0/eclipsesmarthome-incubation-0.8.0-designer-linux64.zip ) und es dann z.B unter /opt/eclipsesmarthome entpacken:

cd ~/Downloads
sudo mkdir /opt/eclipsesmarthome/
sudo unzip eclipsesmarthome-incubation-0.8.0-designer-linux64.zip -d /opt/eclipsesmarthome/
Nun muss man die Berechtigungen noch setzen, sonst startet das Programm mit Fehlern:

sudo chown -R USERNAME:USERNAME /opt/eclipsesmarthome

Dann kann man das Programm öffnen:

/opt/eclipsesmarthome/SmartHome-Designer

und mit Klick auf das Ordnersymbol links oben den conf-ordner "/mnt/openhab2-conf" mit den Unterordnern items, rules,... auswählen.


Mittwoch, 24. Mai 2017

file per table: Convert InnoDB - mit Verkleinerung der ibdata1

Auf meinem zabbix-System ging der Speicherplatz zur neige. Ich dachte mir, dann konsolidiere ich die Daten, passe die Werte was gespeichert werden soll und wie lange etwas an und dann ist wieder genug Platz.

Dem ist aber leider nicht so, denn mein MySQL-Server war standardmäßig so eingestellt, dass er alle Datenbanken und Tabellen in ein großes file schreibt. Dieses /var/lib/mysql/ibdata1 auf meinem Ubuntu 12.04.5-Server wird aber nach dem Löschen von Daten nicht mehr kleiner.

Nach einer kurzen Suche fand ich heraus, dass man in der /etc/mysql/my.cf zwar den Parameter innodb_file_per_table = 1 in der [mysqld] Sektion machen kann - das betrifft aber dann nur neu angelegte Datenbanken und Tabellen - die alten Tabellen bleiben noch in dem alten großen ibdata1-file erahlten.

Darum muss man die Tabellen exportieren und wieder importieren um den gewünschten Effekt zu erziehlen, die ibdata1 löschen zu können. Das ist natürlich wieder mit dem Problem verbunden, dass der Export eben so groß ist wie die Datenbank vorher war und daher wird der gleiche Speicherplatz nochmals benötigt.

Ich denke mal, ich bin nicht der Einzige, der sich erst dann darum gekümmert hat, als nicht mehr viel Speicher übrig war. Wenn das Gerät jetzt nicht physisch vor einem steht oder man im Rechenzentrum nicht die Möglichkeit hat, die Festplattengröße zu erweitern, muss man die Datenbank woanders umziehen.

Ich erstellte mir eine virtuelle Maschine, lud mir die Daten runter und suchte mir ein passendes Script zur Umstellung, welches ich auf:

http://thecpaneladmin.com/how-to-convert-innodb-to-innodb_file_per_table-and-shrink-ibdata1/ fand.

Damit das script bei mir lief musste ich noch folgende Schritte vorher durchführen:

1. apt-get install python-pip python-dev libmysqlclient-dev
2. pip install MySQL-python
3. Anlegen eines .my.cf-files

Sind die Voraussetzungen geschaffen, startet man das Script

exec su mysql ./innodb_export_import.py --export --dir=/root

###to be continued....

Installation REINERSCT cyberJack secoder Ubuntu 16.06

Kurze Anleitung, weil es einfach läuft!

Habe, bevor ich ihn in der frischen Installation angeschlossen habe, nur:

sudo apt-get install libifd-cyberjack6v5

ausgeführt, und schon konnte ich das Lesegerät für mein Onlinebanking nutzen.



Freitag, 17. Februar 2017

MySQL Error: Access denied for user 'root'@'localhost' (using password: NO) when running sript

I wanted to run a python script to reformat my MySQL Database, but everytime I try to run it, it shows the error

MySQL Error 1045: Access denied for user 'root'@'localhost' (using password: NO)
Unable to determine MySQL version
I found out that in the script there is no trigger for username or password, so I should run the script as the right user. The problem is my recovery enviroment is chrooted and so I can't just su - USER to change user and than run the script with mysql privileges.

The script offers another option that I don't know before: A userbased .my.cnf file. With this script mysql reads out the login credentials from a file in the user account, in my case: /root/.my.cf.

I wrote into it:
[client]
password="1234"
[mysqladmin]
 user = root
 password = 1234
[mysql]
 user = root
 password = 1234
[mysqldump]
 user = root
 password = 1234
I don't know if I need all parameters because when I run the script without the [client]-section it won't start but with it the error has gone. 

Montag, 30. Januar 2017

HowTo: Installation von Unison unter Windows mit grafischer Oberfläche GTK

Da ich das Programm rsync unter Ubuntu nutze, verwende ich es auch gerne unter Windows. Um es einfacher zu machen, gibt es dafür eine grafische Oberfläche: Unison.

Da es einmal eingerichtet sehr stabil läuft muss ich es nicht of neu einrichten und möchte es hier gerne Dokumentieren und es euch auch gleich auch zugänglich machen.


Grundsätzlich sind zu einem lauffähigem Unison 3 Sachen nötig:

  1. Setup bzw. die Programmdateien von Unison >>hier<<
  2. GTK-Paket (zu finden im Projekt Pidgin) >>hier<<
  3. Microsoft Visual C++ Redistributeable 2008 SP1 >>hier<<
Letzteres war aber unter meinem Win8.1 schon vorinstalliert, deswegen gehe ich hier nicht genauer auf die Installation ein, die aber auch sonst kein Problem sein dürfte.

Im Schnelldurchlauf


1. Erstellen eines Programmordners "unter" z.B. unter C:\Program Files (x86)
2. Entpacken des GTK-Downloads in den Ordner Unison
3. Entpacken des Unison-zips in den "bin" Ordner des GTK
4. Verknüpfung zum Programm z.B. am Desktop erstellen

Detailierte Beschreibung


Download

Zuerst laden wir die 2 benötigten Downloads herunter (wie oben beschrieben wird hier nicht genauer auf die evtl. Installation des Microsoft Visual C++ Redistributeable eingegengen).

1. Unison >>Download<<
In meinem Fall war gerade die Version 2.48.4 aktuell:

 2. GTK+ vom Messenger-Projekt Pidgin >>Download<<
hier ist gerade die Version 2.16.6.3 aktuell:


Erstellen des Programmordners

Einen neuen Ordner, z.B. mit dem Namen Unison, in einem gewünschtem Verzeichnis erstellen, z.B. unter C:\Program Files (x86)


Entpacken der Dateien

Entpacken des GTK-Zips in den Erstellten Ordner mit rechtsklick auf die Datei, dann auf "Alle extrahieren..." und den Pfad auswählen.





Nun entpacken wir das unison-zip in den Ordner "C:\Program Files (x86)\unison\Gtk\bin"




Verknüpfung anlegen


Nun sind wir schon fast fertig! Wenn ihr das Häkchen bei "Dateien nach Extrahierung anzeigen" drin gelassen habt, seit ihr jetzt scho im richtigem Ordner. 

Nun müsst ihr nur noch eine Verknüpfung mit der Datei unison 2.48.4 GTK.exe erstellen!


Nach dem Start könnt ihr euer gewünschtes Sync-Profil anlegen  - FERTIG!