Alle Beiträge von adlerweb

Windows Shutdown per Linux

Ab und an möchte man entfernte Rechner mal runterfahren. Mit Linux-Zielen ist das per ssh üblicherweise kein Problem, möchte man jedoch von einem Linux-PC den Shutdown-Befehl an einen Windows-Rechner geben muss man schon einmal suchen. Abhilfe schafft wie üblich Samba, welches den „net“-Befehl mitbringt. Ein Shutdown sieht dann wie folgt aus:

net rpc SHUTDOWN -C "Grund für den Shutdown" -f -I 127.0.0.1 -U username%password

CUPS/foomatic/gutenprint: „Unable to get list of printer drivers: Success“

Eigenlich bin ich ja Verfechter papierloser Abläufe, leider sind viele Behörden damit nicht einverstanden oder schreiben sinnloserweise selbstgestrickte Vorgaben statt offener Standards vor. Zum Glück stehen hier noch ein paar Drucker aus den 80ern und 90ern rum, die nicht nach 10 Seiten das Zeitliche segnen. Also: Drucker raus, Papier rein. Error. Bei der Installation des Druckers auf meinen PCs – genauer der Suche nach möglichen Treibern – meldete CUPS teilweise folgende, sehr aussagekräftige, Fehlermeldung:

Unable to get list of printer drivers: Success

Auffällig dabei: Ein Perl-Script bezüglich Foomatic belagert zuvor einen CPU-Kern. Auch konnte ich bei einem System beobachten, dass der Fehler erst nach Installation zusätzlicher Treiber (foomatic-db & Co) auftrat, mit „leerer“ Treiber-Liste jedoch nicht. Der Fehler ist konstant, also sowohl in der Desktop-GUI als auch im CUPS-Webinterface reproduzierbar.

tl;dr: Don’t do gutenprint…

Schauen wir mal genauer auf den 100%-Prozess: Dieser wird vom Nutzer „daemon“ gestartet und hat kein nice-Level. Der genaue Aufruf lautet

/usr/bin/perl /usr/lib/cups/driver/foomatic list

Das Script selbst lässt sich auch auf der Konsole manuell starten. „list“ gibt hierbei nicht wirklich etwas – auch nach mehreren Minuten keine Ausgabe. „help“ am Ende zeigt die möglichen Optionen:

foomatic -A
foomatic -P
foomatic -p [-d ] [-w]
foomatic list
foomatic cat [-w]
foomatic -h

-A : show all Printer ID’s and compatible drivers
-P : show all Printer ID’s whose names and model
matched by the RE. For example:
-P HP will match all names with HP in them
-p : Printer ID
-d : Driver name
If the driver is not specified then the default driver
for the is used.
list : List all possible PPDs in the format needed by the
cups-driverd
cat : Generate PPD file appropriate to the .
Available CUPS PPD URIs are listed by
„foomatic list“.
-w : Generate PPD which is compatible with the CUPS PostScript
driver for Windows (GUI strings are limited to 39
characters).
-h : show help information

Leider scheint es – jedenfalls laut Hilfe – keinen verbose- oder debug-Modus zu geben. Strace to the rescue. Zu sehen nicht viel – die Treiber-Dateien werden nacheinander geladen, die letzten Zeilen lauten:

stat(„/usr/share/foomatic/db/source/driver/xes.xml“, {st_mode=S_IFREG|0644, st_size=522, …}) = 0
stat(„/usr/share/foomatic/db/source/driver/xes.xml“, {st_mode=S_IFREG|0644, st_size=522, …}) = 0
stat(„/usr/share/foomatic/db/source/driver/xes.xml“, {st_mode=S_IFREG|0644, st_size=522, …}) = 0
open(„/usr/share/foomatic/db/source/driver/xes.xml“, O_RDONLY) = 3
lseek(3, 0, SEEK_CUR) = 0
read(3, „\n

Dummerweise ist „xes.xml“ auch die alphabetisch letzte Datei, also eher kein Fehler darin zu vermuten. Narf. Nunja – räumen wir mal auf. Unter /usr/share/foomatic/db/source müssen die Dateien unter PPD, driver, opt und printer weichen. Success. Kind of. Der Foomatic-Prozess endet ohne Fehler, also muss einer der Treiber der Übeltäter sein. Als erstes wandert opt wieder zurück, hier ist nicht viel drin. Noch alles OK. Auch das zurückkopieren von PPD zeigt keine Änderung. Printer klingt interessanter, daher spiele ich hier jede Datei einzel zurück:

for i in * ;do mv $i ../printer && echo $i && (/usr/bin/perl /usr/lib/cups/driver/foomatic list || exit) ; done

Dauert zu lange – ich entscheide mich nur die XML-Dateien der für mich interessanten Hersteller zu nutzen. Läuft noch. Es folgt Drivers. Weniger dateien, trotzdem manuell. Erster Kandidat: necp6 – ein Treiber für meinen Nadeldrucker. Passt – foomatic list liefert nun eine Liste aller NEC-Nadeldrucker. Fehlt noch mein Laser. Da Gutenprint schnell sein soll kopiere ich deren XMLs – nichts geht mehr. Hört sich nach Verursacher an – kopieren wir alles außer Gutenprint: Passt. Auch in CUPS lässt sich nun der Drucker anlegen. Fehler Gefunden würde ich sagen…

Backup Exec: Speicherplatzbedarf bändigen

Symantec Backup Exec kennt seine Backups – leider für einige Fälle zu gut. Standardmäßig wird für jede Sicherung eine Liste der gesicherten Daten, also z.B. die Liste aller Dateien, im Katalog auf der Festplatte des Backupservers abgelegt. Wird das Zielmedium später überschrieben werden auch die Daten gelöscht – wer jedoch Langzeitsicherungen erstellt oder Sicherungsdatenträger aussortiert wird auf Dauer mit einem nicht unerheblichen Platzverbrauch konfrontiert. Mehrere hundert Gigabyte sind so schnell zusammen, welche üblicherweise unter %ProgramFiles%\Symantec\Backup Exec\Catalogs\*SERVERNAME* landen. Doch sind diese Daten wirklich noch notwendig? Ist es nicht auch akzeptabel bei Rücksicherungen, welche älter als einige Monate sind, einige Minuten länger zu warten und bei Bedarf den Katalog neu vom Zieldatenträger zu laden? Um hier Ordnung zu schaffen gibt es gleich drei Lösungen

1. Katalog verschieben

Wer noch an anderer Stelle genügend Platz hat und die Kataloge weiterhin im Direktzugriff haben möchte kann den Katalogordner an ein anderes Ziel verschieben. Die nötigen Infos sind unter TECH74582 zu finden – zwar für deutlich ältere Versionen, die Option sollte sich jedoch auch weiterhin in den Menüs verstecken.

2. Kataloglebensdauer einstellen

In den Optionen gibt es die Möglichkeit Dateilisten nach einer gewissen Zeitspanne zu verwerfen. Der zugehörige Artikel findet sich unter TECH7297 – die Option ist wie auch zuvor in den Menüs weiterhin zu finden. Leider greift die Option nur für neu angelegte Kataloge, ältere müssen ggf. manuell entfernt werden.

3. Manuelles löschen

Auch manuell lässt sich der Ordner aufräumen. Hierzu müssen erst alle Dienste des Backup Exec-Systems gestoppt werden. Im Anschluss löscht man alle *.fh und *.xml-Dateien im Katalogverzeichnis, welche älter als das gewünschte Datum sind. Andere Dateien sollen laut Symantec-Forum nicht gelöscht werden – zwar denke ich nicht, dass diese Aussage für Einträge mit gleichen UUIDs korrekt ist, da die übrigbleibenden Dateien jedoch nur wenige KB groß sind habe ich dies nicht weiter geprüft. Da nun Datenbank und Ordner inkonsistent sind ist ein Reinigungslauf notwendig, hierzu startet man im BE-Verzeichnis den Befehl „CatRebuildIndex.exe -r“ als Administrator. Dies kann einige Zeit in Anspruch nehmen.

Alles keine schönen Lösungen, aber irgendwann ist auch der größte Platz mal voll und Migrieren macht mit Windows keinen Spaß.

Gluon: Build vox x86-Images schlägt fehl

Seltsames Fehlerbild: Mit dem neuen Gluon-Release sind einige Hardwareplattformen hinzu gekommen, alle lassen sich Fehlerfrei bauen, nur die x86-basierten Images machen Probleme. Der Fehler ist im Debugmodus (make … V=s) schnell lokalisiert: Es wird versucht ein ext4-System zu konfigurieren, hierbei wird automatisch geprüft, ob das betroffene System irgendwo gemountet ist. In meinem Fall läuft der Build in einer chroot, da dort die mtab fehlt schlägt diese Prüfung und damit auch der Build fehl.

/home/openwrt/gluon-trunk/upstream/build/x86-generic/openwrt/staging_dir/host/bin/tune2fs  -O extents,uninit_bg,dir_index /home/openwrt/gluon-trunk/upstream/build/x86-generic/profiles/GENERIC/kernel/root.ext4
tune2fs 1.42.8 (20-Jun-2013)
ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file while determining whether /home/openwrt/gluon-trunk/upstream/build/x86-generic/profiles/GENERIC/kernel/root.ext4 is mounted.
Makefile:269: recipe for target 'install' failed

Da in der chroot /proc verfügbar ist lässt sich das Problem mit einem einfachen Symlink lösen:

ln -sf /proc/mounts /etc/mtab

…und schon läuft der Build wie erwartet.

Fujitsu Scanner-Fehler mit Sane & aktuellen Kernel

Dokumentenscanner von Fujitsu sind schnell und teuer – es sei denn die Windows-Unterstützung fällt weg. Ältere Modelle wie der fi-4120 laufen nur bis Windows XP zuverlässig, mit Windows 7/8/10 schaut man in die Röhre, vor allem wenn 64 Bit im Spiel sind. Kein Wunder, dass die ehemals fast 700€ teuren Geräte jetzt für gebraucht für wenig Geld zu finden sind. Unter Linux ist das ganze eigentlich recht entspannt: Die Geräte werden durch Sane unterstützt und sind entsprechend problemlos nutzbar. Ich selbst habe einen solchen schon länger an einem Raspi im Betrieb um Briefe & Co. zu digitalisieren.

Leider scheint das „Problemlos“ momentan eine Auszeit zu nehmen: Bei anderen Anwendern aus der hiesigen Linux User Group macht der Scanner in letzter Zeit Probleme: Nach dem Einschalten sieht alles OK aus, versucht man jedoch zu scannen erhält man einen „Error during device I/O“. Am OS sollte es nicht hängen – sowohl mein Raspi als auch der betroffene Rechner laufen mit Arch. Auch die „üblichen“ Tipps, namentlich „keine USB-Hubs“, trafen nicht zu.

Also: Debuggen. Während bei meinem Netbook und dem Raspi keine Fehler auftreten kann ich ihn mit Laptop und einem PC nachvollziehen. Erstere arbeiten mit ARM bzw. einer 32 Bit CPU und unterstützen nur USB 2.0, letztere sind 64 Bit mit USB 3.0. Zur Übersichtlichkeit habe ich erst mal alle Treiber außer Fujitsu aus /etc/sane/dll.conf entfernt. Den Debug-Modus für Sane und den Treiber aktiviert man mit folgenden Zeilen:

export SANE_DEBUG_DLL=255
export SANE_DEBUG_FUJITSU=35

Nach dem Einschalten taucht der Scanner wie üblich in lsusb auf. Auch sane-find-scanner kann die USB-ID erkennen. scanimage -L zeigt dem Scanner im ersten Durchlauf ebenfalls, führt man den selben Befehl jedoch erneut aus tauchen USB-Fehler auf. IO-Error, Invalid Argument, etc. Ausgerüstet mit den passenden Logs findet sich in den Quellen des Sane-Projektes ein passender Commit vom 16.12.2014, welcher einen Workarround für aktuelle Kernel-Images bereitstellt. Hier ist offenbar eine Regression, welche die Ansteuerung der Fujitsu-Scanner betrifft. Worth a try, also schnell mal das ältere sane-Paket deinstalliert und stattdessen sane-git aus AUR installiert. Siehe da: Läuft. Soweit ich erkenne betrifft der Fehler nur einige USB-Controller, was ggf. erklärt warum ich auf meinem Raspi keine Fehler finden konnte.

tl;dr: GIT ist manchmal doch funktionsfähiger als stable

[Javascript] Input-Felder klonen ohne JQuery

Für eine Parametererfassung benötige ich ggf. mehrere Felder für einen Wert. Generell kann man natürlich genügend Felder vorab erstellen, jedoch ist in meinem Fall nicht klar wie viele benötigt werden. Die Idee: Es ist nur ein Feld verfügbar, wird dies jedoch genutzt erstellt sich automatisch ein Weiteres hinter dem ersten Feld. Die meisten Beispiele nutzen JQuery, da meine Lust Externes einzupflegen nicht grade überwältigend groß ist musste VanillaJS herhalten.

<input type="text" name="Element1[]" onClick="clone.call(this)">

function clone() {
    var newNode = document.createElement(this.tagName);
    switch(this.tagName) {
         case "INPUT":
               newNode.type = this.type;
               newNode.name = this.name;
               newNode.value = "";
               newNode.onclick = function() { clone.call(this) };
               break;
                             
    }
    this.onclick = undefined;
    this.parentNode.insertBefore(newNode, this.nextSibling);
}

Sinnvoller als onclick wäre natürlich onchange, aber hey, Konzept funktioniert…

Konstante kWh über die Solaranlage

Etwa 1.5-2kWh lassen sich pro Tag realistisch gesehen mit der momentanen Ausstattung meiner Solaranlage und wolkenlosem Himmel abdecken – wenn man sie denn konsequent auslastet. In den meisten Fällen ist dies nur am Wochenende der Fall, denn nur da bin ich tagsüber zu Hause und nutze energieintensive Geräte wie den Laptop oder stecke die Tiefkühltrue beaufsichtigt an den Inverter des Solarsystems um den Überschuss im Griff zu halten. In der Woche durch ist meist nach wenigen Stunden der Akku voll und die Solaranlage wird massiv gedrosselt. Immer wieder hatte ich seit letztem Sommer weitere Geräte auf meine 12V-Solaranlage umgestellt und auch mein Verhalten angepasst – mit Erfolg: In den letzten Tagen waren konstant mehr als 1kWh in den Statistiken zu sehen – trotz Wochentag. Wichtige Bausteine waren sicher die Umstellung weiterer Dauerläufer wie den Netzwerkverteilern sowie die Tatsache, dass ich nun abends den Laptop mit dem internen Akku betreibe und ihn morgens pünktlich zum Sonnenaufgang an das Ladegerät verfrachte.

Etwas Luft ist noch: Auch jetzt ist bei wolkenlosem Himmel noch Drosselung erkennbar, hier wird dann aber langsam etwas mehr Steuerung und aufwändigere Netzteile erforderlich. Genug Bastelspaß für die nächste Zeit. Erst mal wird jedoch das Verteilernetz erweitert werden müssen – die bisherigen Verteiler stoßen zu Spitzenzeiten langsam an ihre Grenzen, vor den nächsten Erweiterungen müssen hier also noch ein paar Gramm Kupfer nachgerüstet werden.

Der neue Fuß- und Radweg Saffig ? Miesenheim

Seit Jahren wurde er angekündigt, jetzt tut sich etwas: Parallel zur K63 zwischen Saffig und dem Andernacher Stadtteil Miesenheim ist in den letzten Wochen ein neuer Fuß und Radweg entstanden. Auch wenn noch nicht offiziell eröffnet: Die Baufahrzeuge sind vor einigen Tagen erst mal abgerückt und der Weg nutzbar – und er liegt auf einer täglichen Strecke. Zeit zu schauen, ob die jahrelangen Streitereien zu etwas Brauchbarem geführt haben.

Warum überhaupt ein Fuß und Radweg?

Bild: https://adlerweb.info/blog/wp-content/uploads/2015/05/radweg4-186×300.png Fuß- und Radweg Saffig ? Miesenheim
Map data © OpenStreetMap contributors
Tiles CC-BY-SA 2.0
http://www.openstreetmap.org/copyrightUm von Saffig nach Miesenheim – oder umgekehrt – zu gelangen hatte man als Fußgänger oder Radfahrer bisher zwei Möglichkeiten:

Einerseits kann man über den alten Mühlenweg und das Freibad Pellenz die Strecke überwinden. In Saffig trifft man nahezu direkt am Sportplatz ein, in Miesenheim im Bereich der Regionalen Schule. Da die Strecke zu einem großen Teil aus Feldwegen oder wenig befahrenen Zufahrten besteht kann man Gemütlichkeit walten lassen. Etwas unangenehmer ist der Abschnitt zwischen Nettetal/Freibad und der weiterführenden Straße: Durch das Gefälle wird die persönliche Fitness bei dem ein oder anderen doch stark strapaziert. Wer in Richtung Kernstadt weiter möchte darf den soeben erklommenen Hügel auch direkt wieder bergab fahren.

Eine weitere – und die von mir häufig genutzte – Möglichkeit bietet die K63, welche in Saffig an nahezu selber Stelle startet, jedoch an großen Teilen Miesenheims vorbei führt und direkt auf den Sportplatz sowie den Nette-Rundweg nach Andernach trifft. Die Straße selbst hat ein leichtes, stetiges Gefälle, ein ständiges auf und ab entfällt. Die flachere Wegführung und bessere Verkehrsanbindung erkauft man sich jedoch mit einer an anderer Stelle nicht ganz angenehmen Fahrt: Die K63 ist eine der Hauptstrecken für Berufspendler zwischen beiden Orten und im ersten Abschnitt nicht geschwindigkeitsbegrenzt. Auch Seitenstreifen oder andere Ausweichmöglichkeiten sucht man vergebens. Bei Gegenverkehr ist einem die gute Laune der nachfolgenden Autofahrer sicher.

Der parallel laufende Weg soll es den Muskelnutzern ermöglichen eine direkte Anbindung an das weitere Fuß- und Radwegenetz Andernachs ermöglichen ohne den Kraftverkehr wie bisher auszubremsen.

Erster Abschnitt: Von Höhen und Tiefen

Der Beginn des Weges findet sich in Saffig direkt an der Andernacher Straße/K63 an der Einmündung Drieschweidenweg. Auf der linken Seite trennt eine Baumreihe den Weg von der Straße, rechts befinden sich Felder. Der sehr breit geratene Weg ist nicht weiter befestigt, die Erde jedoch gut verdichtet und angenehm zu befahren. Während die Straße sich mit leichtem Gefälle in Richtung Andernach bewegt muss man auf dem neuen Weg erst eine leichte Steigung in Kauf nehmen, welche kurz vor Ende des Abschnitts rasant abfällt. Aus Richtung Saffig keine besondere Anstrengung, in Gegenrichtung jedoch sicher keine angenehme Angelegenheit.

Zweiter Abschnitt: Guten Rutsch!

Etwa in Höhe des ersten Feldweges, welche von der K63 abgeht und den Fuß- und Radweg kreuzt, endet das Saffiger Gebiet. Andernach hat hier etwas mehr versprochen, jedoch in Etappen. Während im Endausbau nach meinem Wissen eine Alphaltschicht vorgesehen war muss man sich für’s Erste mit einer Splittschicht anfreunden. Diese Befestigungsmethode ist hier in der Gegend sehr verbreitet – nicht zuletzt da es sich um ein lokales Erzeugnis handelt und bei Regen das Wasser gut abfließen lässt. Leider bietet dieses Material nur wenig Halt und man sollte Kurven als Radfahrer mit entsprechend niedriger Geschwindigkeit angehen. Mit Beginn des Abschnitts endet auch die trennende Baumreihe und wird durch einen Graben bzw. im weiteren Vertauf einen Grünstreifen ersetzt. Das Höhenprofil entspricht grob jenem der angrenzenden Kreisstraße, die Übergänge zu den bestehenden Wirtschaftswegen sind gut befestigt und ohne größere Anstrengungen überwindbar.

Dritter Abschnitt: Ziel verfehlt?

In Höhe des Sportplatzes endet nach 1¼km der neue Weg an der Zufahrt zur Schützenhalle. Fußgänger können die Kreisstraße überqueren und den gegenüberliegenden Fußweg zwischen Sportplatz und Ort nutzen, Hilfseinrichtungen gibt es hierzu nicht. Als Radfahrer muss man sich für etwa 200m wieder auf die Kreisstraße bemühen – dann beginnt der nächste Radweg nach Andernach. Immerhin: In diesem Bereich ist die Straße mit einer Begrenzung auf 50km/h ausgeschildert. Trotzdem bedauerlich, dass jene Lücke nicht geschlossen werden konnte.

Und nu?

Die Trennung vom fließenden Verkehr ist eine schöne Sache, leider kostet der rutschige Belag auf Andernacher Seite Zeit: Etwa 15% mehr sollte man für die Strecke nach meinen Messwerten einplanen. Der fehlende direkte Zugang zu den weiteren Radwegen, welcher seitens der Politik immer wieder als wichtiger Punkt aufgegriffen wurde, ist sicher unglücklich. Da ich persönlich ohnehin durch den Ort fahre um über die Wege auf der anderen, flacheren Seite der Nette nach Andernach zu gelangen, ist dieser Lapsus für mich allerdings nicht relevant. Ob der Weg für meine Belange eine Zukunft hat werden die nächsten Regenschauer zeigen: Dem Saffiger Bereich wird dies zwar sicher nicht gut tun, wenn dafür jedoch der darauf folgende Splitt durch angespülte Erde befestigt wird nehme ich das gerne in Kauf.

Des Admins 10 Gebote

Ich bin root, dein Admin, der dir den Rechner eingerichtet hat.

  1. Du sollst neben mir keine anderen Admins haben. Du sollst dir kein Bild von jenem machen, was der Admin an Tätigkeiten ausübt. Du sollst nicht zweifeln an seinen Entscheidungen, denn das Firmennetz des Allmächtigen ist nicht dein Heimrechner. Du sollst dich nicht vor anderen Admins niederwerfen und dich nicht verpflichten, ihnen deinen Addressbuch freizugeben.
  2. Du sollst den Namen des roots, deines Admins, nicht missbrauchen; denn der root lässt den nicht ungestraft, der seinen Namen missbraucht.
  3. Gedenke des Sabbats: Halte ihn heilig. Sechs Tage darfst du schaffen und jede Arbeit tun. Der siebte Tag ist ein Ruhetag, denn dort wird der Admin seine Updates einspielen und möchte nicht gestört werden.
  4. Ehre dine Gruppenrichtlinie und deinen Virenscanner, damit du lange arbeitest an dem Rechner, den der root, dein Admin, dir gibt.
  5. Du sollst nicht rooten.
  6. Du sollst nicht die Richtlinie brechen.
  7. Du sollst nicht Raubkopieren.
  8. Du sollst nicht falsch gegen deinen Nächsten aussagen, denn das Log wird jene strafen.
  9. Du sollst nicht nach dem Rechner deines Nächsten verlangen, nach seinem Handy oder seinem Tablet, seiner Tastatur oder seinem Monitor oder nach irgendetwas, das deinem Nächsten gehört, denn der Admin hat auch so schon genug zu tun und weiß um deine Klagen.
    So achte Allzeit auf diese Gebote und erfreue dich an der Arbeit, welche du durch des Admins Schöpfung erledigen kannst. Ist sie erledigt so ziehe hinaus aus der Knechtschaft des Büros, kehre zurück zu Heim und Familie, wende dich deinen Privatgeräten zu und habe Spaß am Gerät. Enter.

    (Ist gcc jetzt fertig? Noch mehr blöde Ideen aus dem Chat vertrag ich nicht ;))

Monitorprofile mit xrandr-mgr

Mehrere Monitore machen Spaß. An meinem Hauptplatz werkeln 4 TFTs an einem Rechner – Mail, Code, Testausgaben, Medien – alles ist irgendwo dauerhaft sichtbar. Was etwas nervig ist sind jedoch Spiele: Diese landen unabhängig von der Primärmonitordefinition immer auf dem linken Monitor. Bisher habe ich hier manuell mit xrandr nachgeholfen und vor Start des Spiels meinen Desktop auf den TFT vor meiner Nase beschränkt. Leider hat xrandr keine undo-Button, das heißt nach dem Spielen musste ich immer wieder per Hand nachhelfen.

Heute ich mir das Tool xrandr-mgr begegnet, welches das anlegen von benannten Profilen erlaubt. Für mich nicht direkt nutzbar, da sich meine Konfiguration häufig ändert, aber für ein temporäres Merken des vorherigen Konfiguration trotzdem Ideal.