Schlagwort: Linux

Ingenieure, IT

Hier im Haus haben wir eine ziem­lich gute (ziem­lich ist unter­trie­ben) Lüf­tungs­an­la­ge eines deut­schen(?) Her­stel­lers — die­se.
Nun kann man heut­zu­ta­ge kaum noch Anla­gen ver­kau­fen, die nicht in irgend­ei­ner Wei­se über Com­pu­ter und/oder Apps bedient wer­den kön­ne, so auch unse­re Anla­ge.
Jeden­falls irgend­wie:

WLAN TCP / IP via Rou­ter ja
Anschluss Mod­bus / IP via Rou­ter ja

Das

via Rou­ter ja

ist natür­lich falsch: Das Gerät hat einen Ether­net-Anschluß, ist ein DCHP-Cli­ent (nix IPv6) und spricht dort nicht etwa HTTP, son­dern Mod­Bus. Die Anla­ge muß also nur ans LAN mit einem DHCP-Ser­ver (es läßt sich kei­ne fixe Adres­se ver­ge­ben) kom­men. Daß man im Tech­nik­raum Ether­net zu lie­gen hat, ist eher unwahr­schein­lich, aber für WLAN hat es aus wel­chen Grün­den auch immer nicht gereicht (nein, man kann es auch nicht nach­rüs­ten).

Hat man dann doch die Anla­ge ans Netz bekom­men, kann man sie mit einer App (Andro­id oder IOS) steu­ern, also jeden­falls wenn die App die Anla­ge fin­det, was immer­hin oft der Fall ist. nmap -sT -p502 fin­det die Anla­ge immer.

Aber man kann sie auch viel detail­lier­ter kon­fi­gu­rie­ren — dafür hat die Anla­ge einen USB-Anschluß. Mini-USB-B. Schon das ist gaga. Um das machen zu kön­nen, gibt es ein Pro­gramm namens iFlow, nur hipp mit dem i. Aller­dings nur für Win­dows. Es braucht .NET 3.5, das ist von anno dazu­mal. Es braucht genau die­se Ver­si­on, neue­re gehen nicht.
Ich habe kein Win­dows, in einer VM auf Linux wird die Anla­ge nicht gefun­den (ich wer­de wei­terfri­ckeln, viel­leicht doch irgend­wann?)
Wür­de ich eine Ver­bin­dung bekom­men, hät­te ich 3 Accounts:

  • User (ohne Paß­wort)
  • Instal­la­teur (mit Paß­wort)
  • Admin (mit ande­rem Paß­wort)

Die Paß­wör­ter sind hart codiert und ste­hen im Inter­net. Das GUI ähnelt der SPS-Steue­rung eines Atom­kraft­wer­kes (jeden­falls stel­le ich mir eine sol­che so vor)

Ehr­lich: So schafft sich Deutsch­land ab.

0

Apache unter CentOS 7 starten

Wenn der Apa­che nicht mit sys­temc­tl gestar­tet wer­den kann und sys­temd die­sen Feh­ler lie­fert:

 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: signal) since Fri 2018-10-12 18:55:13 CEST; 3min 0s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 3398 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 3411 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=killed, signal=KILL)
 Main PID: 3411 (code=killed, signal=KILL)

Oct 12 18:52:13 www.example.com systemd[1]: Starting The Apache HTTP Server...
Oct 12 18:53:43 www.example.com systemd[1]: httpd.service start operation timed out. Terminating.
Oct 12 18:55:13 www.example.com systemd[1]: httpd.service stop-final-sigterm timed out. Killing.
Oct 12 18:55:13 www.example.com systemd[1]: httpd.service: main process exited, code=killed, status=9/KIL
Oct 12 18:55:13 www.example.com systemd[1]: Failed to start The Apache HTTP Server.
Oct 12 18:55:13 www.example.com systemd[1]: Unit httpd.service entered failed state.
Oct 12 18:55:13 www.example.com systemd[1]: httpd.service failed.

dann fehlt wahr­schein­lich das ent­spre­chen­de Modul:

Load­Mo­du­le systemd_module modules/mod_systemd.so

War­um man auch immer… Bei sys­temd wun­der ick mir über janüscht mehr.

0

Jetzt wächst zusammen, was nicht zusammen gehört

Wir haben unser Haus mit ein paar Tråd­fri-Lam­pen ver­se­hen. Das ist nett. Die wer­den von Fern­be­die­nun­gen bzw. Bewe­gungs­mel­dern gesteu­ert. Es gibt auch eine App, so daß man sie von den Smart­pho­nes aus, ja sogar von den Smart­wat­ches aus steu­ern kann.
Das ist nett, und eine Steue­rung vom Brow­ser aus wäre noch net­ter.
Also habe ich mir auf dem Raspber­ry mal Home Assi­stant instal­liert.
Gleich beim ers­ten Hoch­fah­ren fand er mei­ne Lam­pen und die Sono­se, damit hat­te ich gar nicht gerech­net.
Ich kann nun Lam­pen und Sono­se vom Brow­ser aus steu­ern, ja, schon nicht schlecht.
Aber kann ich auch auto­ma­ti­sie­ren? Also sagen: Wenn die­se Bedin­gung ein­trifft, dann tue jenes?
Ja, geht:

automation:
  - alias: Licht an, Musi aus
    trigger:
      platform: state
      entity_id: light.deckenlampe_arbeitszimmer
      to: 'on'
    action:
      service: media_player.media_stop
      entity_id: media_player.arbeitszimmer
  - alias: Licht aus, Musi an
    trigger:
      platform: state
      entity_id: light.deckenlampe_arbeitszimmer
      to: 'off'
    action:
      service: media_player.media_play
      entity_id: media_player.arbeitszimmer

Das macht: Wenn die Decken­lam­pe im Arbeits­zim­mer ange­schal­tet wird, dann mache bit­te den Sonos im Arbeits­zim­mer aus (und umge­kehrt)
Das ist natür­lich kom­plett sinn­frei, zeigt aber die Mög­lich­kei­ten. Als Trig­ger könn­ten auch Uhr­zei­ten die­nen zum Bei­spiel, Wet­ter­da­ten, alles mög­li­che.

Das könn­te der Beginn einer wun­der­ba­ren Freund­schaft wer­den 😉

0

Spritpreise in Zabbix/Grafana

Ges­tern nach­mit­tag habe ich mir mal mei­ne Tan­ke in Grafa­na rein­ge­den­gelt — sehr schön!

Bei mir wird Grafa­na von Zab­bix befeu­ert, also müs­sen wir erst­mal die Sprit­prei­se in Zab­bix bekom­men.
Es gibt eine schö­ne API bei tankerkoenig.de — die kann man anzap­fen, wenn man einen API-Key hat. Der ist schnell bean­tragt, Link in der Bestä­ti­gungs­mail kli­cken, fer­tig. Dau­ert kei­ne 10 Sekun­den.
Drei Items hät­te ich ger­ne in Zab­bix:

  • Die­sel
  • E 10
  • Super

Ich illus­trie­re das mal an Die­sel:

Das Update-Inter­vall 600 Sekun­den soll­te man nicht klei­ner wäh­len, um unnö­ti­ge Last auf dem API-Ser­ver zu ver­mei­den.
oil.diesel.sh ist, man ver­mu­tet es schon, ein Shellskript:

root@raspberrypi:/etc/zabbix/externalscripts# cat oil.diesel.sh
#!/bin/bash
/usr/bin/curl -s \
 "https://creativecommons.tankerkoenig.de/json/prices.php?ids=66f063b7-8883-4951-bc5c-f0754b48ce18&apikey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" | \
 /usr/bin/jq '.prices."66f063b7-8883-4951-bc5c-f0754b48ce18"."diesel"'
root@raspberrypi:/etc/zabbix/externalscripts#

Für den API-Key müßt ihr natür­lich euren ein­set­zen 🙂 Das lie­fert ein JSON-Objekt zurück, aus dem wir uns mttels jq den Preis für Die­sel raus­ho­len
Die ID der Tank­stel­le (66f063b7-8883–4951-bc5c-f0754b48ce18) war nur mit Tricks her­aus­zu­be­kom­men: Goog­le Maps auf­ru­fen und die Tan­ke suchen, bei mir die­ser Link. Danach Rechtsklick in die Kar­te unge­fähr auf die Tank­stel­le (auf ein paar Kilo­me­ter Abwei­chung kommt es nicht an). “Was ist hier?” aus­wäh­len — unten ste­hen dann die Koor­di­na­ten, und die benö­ti­gen wir.
Damit füt­tern wir die API — und bekom­men die ID der Tan­ke.
Das gan­ze auf drei Skrip­te ver­teilt, die sich nur im jq unter­schei­den: die­sel, e10, e5 (Super ist das).
Nun noch Grafa­na:
Wir kli­cken uns die 3 Prei­se in eine Gra­fik:

Und wir bekom­men einen schi­cken Gra­phen:

(Mehr Daten habe ich noch nicht, aber das ist ja nur eine Fra­ge der Zeit)

 

0

ClamAV mit eigenen Signaturen

Auf Arbeit haben wir in letz­ter Zeit ver­mehrt unter Viren­mails zu lei­den, die von kei­nem der bei uns ver­wen­de­ten Viren­scan­ner als Viren­mails erkannt wer­den.
Auf G+ wur­de ich auf ein schon älte­res Pos­ting auf­merk­sam gemacht, das erklärt, wie man eige­ne Signa­tu­ren schreibt.

Geht wun­der­bar (ich habe den Cla­mAV aus den Quel­len sel­ber über­setzt):

mailgate:/tmp # /usr/local/clamav/bin/clamscan invoice574206_1.pdf
invoice574206_1.pdf: OK

----------- SCAN SUMMARY -----------
Known viruses: 4137933
Engine version: 0.98.7
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.28 MB
Data read: 0.12 MB (ratio 2.29:1)
Time: 12.807 sec (0 m 12 s)
mailgate:/tmp #

Nix gefun­den, wir schie­ben die eige­ne Signa­tur an die rich­ti­ge Stel­le:

mailgate:/tmp # mv ISH-custumsigs.ndb /usr/local/clamav/share/clamav/
mailgate:/tmp #

Und dann noch­mal:

mailgate:/tmp # /usr/local/clamav/bin/clamscan invoice574206_1.pdf
invoice574206_1.pdf: ISH.Trojan.UNOFFICIAL FOUND

----------- SCAN SUMMARY -----------
Known viruses: 4137934
Engine version: 0.98.7
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.28 MB
Data read: 0.12 MB (ratio 2.29:1)
Time: 13.072 sec (0 m 13 s)
mailgate:/tmp #

Ich bin ent­zückt!

0

Ubuntu auf dem MacBookPro

Nach irgend­ei­nem Update von OSX ent­schloß sich die Nvi­dia-Kar­te, ver­läß­lich das MBP zum Absturz zu brin­gen.
Obwohl das offen­sicht­lich ein Trei­ber­pro­blem (also Soft­ware) ist, wur­de das nie gefixt. Mit­tels gfx­card­sta­tus ließ sich das zwar mil­dern, aber nicht end­gül­tig: Das schal­tet die Nvi­dia kom­plett ab (und ver­wen­det dann die Onboard-Intel-Kar­te) und muß nach jedem Start von “auto­ma­ti­scher Wech­sel” auf “Nimm aus­schließ­lich und immer die Intel-Kar­te” umge­stellt wer­den.
Mein per­sön­li­cher “Fix” war dann ein iMac 😀 Jeden­falls lag das MBP die letz­ten Mona­te dann nur so her­um und wur­de fak­tisch nicht ver­wen­det.

Ges­tern habe ich mich dann ent­schlos­sen, Ubun­tu drauf­zu­tun. Es ist ein MBP Mid 2010, also ein MBP 6,2. Ubun­tu meint dazu, ich sol­le 12.10 LTS ver­wen­den — also habe ich die Boot-CD gebrannt und los gings. Bereits wäh­rend der Instal­la­ti­on wur­den das WLAN und die ein­ge­bau­te iSight-Kame­ra gefun­den und waren ohne wei­te­res Zutun benutz­bar — Respekt!

Nach erfolg­rei­cher Instal­la­ti­on und Reboot mel­de­te sich sofort die Soft­ware­ak­tua­li­sie­rung und wies mich auf das Vor­han­den­sein von 14.04 hin — da ich ja ohne­hin alles geplät­tet hat­te — war­um nicht? Also Update, auch das ging pro­blem­los.

Dann fin­gen aber doch die Pro­blem­chen an: Das WLAN ätzend lang­sam. Das ließ sich durch die Ver­wen­dung des Broad­com-Trei­bers behe­ben.
Und da ich dadurch ohne­hin bei den pro­prie­tä­ren Trei­bern war, habe ich auch gleich den pro­prie­tä­ren Nvi­dia-Trei­ber genom­men. Kurz: der taugt nichts, und zwar alle ange­bo­te­nen Ver­sio­nen. Immer mal wie­der auf ein­mal ein schwar­zer Bild­schirm. Das ließ sich nur dadurch behe­ben, daß ich mich mit ssh auf dem Lap­top ein­logg­te, und dann ein

sudo apt-get purge nvidia-*

mach­te. Der Nou­veau-Trei­ber funk­tio­niert anstands­los.
Ein wei­te­res Pro­blem: Auf­wa­chen aus dem Schlaf­mo­dus (also Zuklap­pen und dann wie­der Auf­klap­pen): Der Bild­schirm blieb schwarz. Auch das ließ sich behe­ben:

sudo apt-get install linux-generic-lts-vivid

Wun­der­bar! Die Son­der­tas­ten für Bild­schirm­hel­lig­keit gehen, Laut­stär­ke geht. Die Medi­en-Tas­ten (Vor, Zurück, Play/Pause) gehen, zumin­dest in Rhyth­m­box. Die Magic Mou­se geht.
Nach Rechtsklick auf dem Touch­pad habe ich lan­ge gesucht: Nun, es ist ein­fach ein 2-Fin­ger-Tap!
Aller­dings alles nur in Unity, ich hät­te eigent­lich gern i3wm. Das ist dann eine Auf­ga­be für die nächs­te Zeit…

Etwas hake­lig ist die Tas­ta­tur. Das ist ja eine Apple-Tas­ta­tur.
Die meis­ten Son­der­zei­chen erreicht man über die rech­te Alt-Tas­te.

[ Alt-5
] Alt-6
{ Alt-8
} Alt-9
\ Alt-ß
| Alt-<
@ Alt-Shift-1

Soweit ich sehe, sind alle ande­ren Zei­chen genau dort, wo sie auch auf der Tas­ta­tur sind. Als Tas­ta­tur habe ich “Deutsch (Mac­in­tosh)”
Auch das funk­tio­niert in i3 nicht, solan­ge man da nichts kon­fi­gu­riert hat.

Bildschirmfoto vom 2015-11-29 12:42:53

Das gan­ze Sys­tem ist nicht ganz so flüs­sig wie OSX. Das Scrol­len (immer­hin ein­fach wie bei OSX: 2-Fin­ger-Zie­hen) ist nicht ganz so smooth, die Magic Mou­se auch bei gerings­ter Emp­find­lich­keit zu schnell.
Aber das ist Jam­mern auf sehr hohem Niveau.

Alles in Allem: Ich bin sehr zufrie­den!

0

Time Machine Probleme

Mir ist mei­ne Time­Cap­su­le gestor­ben — nicht schön, es gibt kei­ne Back­ups mehr.
Nun, mit neta­talk 3 wird Time Machi­ne direkt unter­stützt — wenn es denn neta­talk 3 für Debi­an in den Repos gäbe.
Gibts aber wegen Krü­mel­ka­cke­rei nicht: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685878 — der Paket-Main­tai­ner hat kei­nen Bock, an dem Paket wei­ter­zu­ar­bei­ten, gibt es aber nicht frei. Die “Pro­ble­me” sind der­weil gelöst: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751121 — es gibt nur noch ein “Pro­blem”:

However I found a couple of files with similar sentences and no further licensing:

include/atalk/dsi.h
include/atalk/server_child.h

Those say:

 * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
 * All rights reserved.

Everything else is either appropriately licensed, generated file, or contains no
claims at all.

Kin­der­gar­ten, das.
Also habe ich mir das Git-Repo­sito­ry von Adri­an Knoth (https://github.com/adiknoth/netatalk-debian) geclont und sel­ber ein Paket gebaut und instal­liert.
Geht auch. Also: eigent­lich. Unei­gent­lich brach das Back­up nach ca. 277 Giga­byte ab, im Log fand sich:

Nov 22 04:24:15.695665 afpd[6569] {directory.c:1259} (error:AFPDaemon): cname(did:17, name:'bands', cwd:'/timemachine/rainer/iMac.sparsebundle'): failed to add dir

Zu die­sem Zeit­punkt befan­den sich exakt 35339 Ver­zeich­nis­se in /timemachine/rainer/iMac.sparsebundle/bands/
Mög­li­cher­wei­se ist das ja ein Pro­blem mit ext4? Jeden­falls bin ich mal auf XFS umge­stie­gen und tes­te nun wie­der.
So siehts jetzt aus:
Bildschirmfoto 2015-11-22 um 11.12.55
Wir wer­den also im Lau­fe des mor­gi­gen Tages sehen, ob das ziel­füh­rend war.
Wenn nicht, wür­de ich es noch­mal mit HFS+ auf der Back­up-Plat­te ver­su­chen.

Ach ja, falls es jeman­den inter­es­siert: Die Kon­fi­gu­ra­ti­on ist furcht­bar ein­fach, aus /etc/netatalk/afp.conf:

[Global]
# hostname = timemachine
log file = /var/log/netatalk.log
spotlight = yes

# [Homes]
# basedir regex = /home

[TM_Papa]
path = /timemachine/rainer
time machine = yes
valid users = rainer
spotlight = no
# vol size limit = 500000
# maximale Volume-Groesse in MB, d.h. 500.000 MB = 500 GB

[Papa]
path = /usbplatte-2/home/rainer
time machine = no
valid user = rainer

/timemachine/rainer muß natür­lich exis­tie­ren und dem valid users rai­ner gehö­ren — also dem Linux-Nut­zer rai­ner.

0

OpenSuse 13.2, logrotate

Auf mei­nen Mail­ser­vern wur­de /var/log/mail nach einem Upgrade von 13.1 -> 13.2 nicht mehr rotiert und wur­de folg­lich immer grö­ßer.
Hier ist der Übel­tä­ter:

# systemctl status logrotate.timer
logrotate.timer - Daily rotation of log files
   Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; disabled)
   Active: inactive (dead)
     Docs: man:logrotate(8)
           man:logrotate.conf(5)

# 

Abhil­fe schafft:

# systemctl enable logrotate.timer
# systemctl start logrotate.timer
#

Dann sieht es auch rich­tig aus:

# systemctl status logrotate.timer
logrotate.timer - Daily rotation of log files
   Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled)
   Active: active (waiting) since Mon 2015-01-05 10:09:37 CET; 47s ago
     Docs: man:logrotate(8)
           man:logrotate.conf(5)

# 

Hin­ter­grund: cron soll wohl von sys­temd über­nom­men wer­den, Suse hat aber nur Tei­le nach sys­temd über­nom­men, was genau, steht in

# ls -l /usr/lib/systemd/system/*timer
-rw-r--r-- 1 root root 174 Nov  5 14:28 /usr/lib/systemd/system/fstrim.timer
-rw-r--r-- 1 root root 234 Sep 25 12:55 /usr/lib/systemd/system/logrotate.timer
-rw-r--r-- 1 root root 176 Dec  3 13:00 /usr/lib/systemd/system/mdadm-last-resort@.timer
-rw-r--r-- 1 root root 635 Nov 27 15:53 /usr/lib/systemd/system/systemd-readahead-done.timer
-rw-r--r-- 1 root root 450 Nov 27 15:53 /usr/lib/systemd/system/systemd-tmpfiles-clean.timer
#

Dann aber haben sie ver­ges­sen, die timer auch zu akti­vie­ren 🙁

3+
© Rainer Sokoll Frontier Theme