Jekyll2020-08-13T17:59:38-05:00http://frilug.de/feed.xmlFriLUGFriedberger Linux User GroupAde, dynamische Inhalte2018-05-14T00:00:00-05:002018-05-14T00:00:00-05:00http://frilug.de/2018/05/14/Ade-dynamische-Inhalte<p>So ein CMS wie <a href="https://wordpress.org/">Wordpress</a> oder zuletzt <a href="https://www.drupal.org/">Drupal</a> ist schon komfortabel. Jeder Laie kann ohne Vorkenntnisse eigene Inhalte
veröffentlichen und verwalten. Es gibt eine Benutzerverwaltung mit Berechtigungen, sodass nichts kaputt gehen kann. Auch
multimediale Inhalte, in unserem Fall nur ein paar Bilder, können einfach verwaltet werden. Und nicht zuletzt können von
Mitgliedern und Besuchern Kommentare (und SPAM) verfasst werden.</p>
<p>Der Nachteil: Wartungsarm ist das Ganze nicht. An der Hochschule gibt es Aufgrund interner Policies grundsätzlich keinen
SSH-Zugang aus dem öffentlichen Netz. Daher war meist ein VPN in die Hochschule nötig, um von dort dann unseren Server
zu administrieren. Einfacher war es jedoch, hinzufahren und alle Updates vor Ort im FriLUG-internen Netz durchzuführen.
Gerade in den Semesterferien (ja, für mich sind das Ferien!) ist das echt ätzend.</p>
<p>Sowohl Wordpress als auch Drupal glänzen mit (un-)regelmäßigen kritischen Sicherheitsupdates mit dramatischen
Auswirkungen (LFI, RFI, XSS, PHP Object Insertion, um mal einige zu nennen). Von Wordpress hatten wir uns vor einiger
Zeit hauptsächlich aufgrund enormer Performance-Problemen getrennt. Das auch Drupal nicht Wartungsarm ist, war mir von
vornerein klar. Hinzu kommt aber noch, dass Drupal (aus Sicherheitsgründen) kein Auto-Update bietet, und ich gefühlt
jede Woche im Maintenance Mode den neuen Core reinkopiert habe. Das führte natürlich dazu, dass viele Updates, gerade in
den Semesterferien, auf sich warten ließen.</p>
<figure><img src="/assets/posts/Ade-dynamische-Inhalte/Screenshot_20180517_220254.png" /><figcaption>
<p><em>Footer unseres ehemaligen Wordpress-Blogs:</em> Über drei Sekunden Pageload. Nach vielen Tagen Problemsuche haben wir
schließlich Wordpress den Rücken gekehrt.</p>
</figcaption></figure>
<p>Die Lösung? Weg mit Wartungsintensiven CMS, Weg mit PHP. Weg mit FastCGI. Weg mit dynamischen Inhalten. Wir sind alle
Nerds. Wir brauchen kein Klickbunti-CMS um einen Blog zu betreiben.</p>
<h2 id="hallo-jekyll">Hallo Jekyll</h2>
<p><a href="https://jekyllrb.com/">Jekyll</a> ist ein Generator für statische Seiten. Ich habe in der Vergangenheit schon die meisten meiner anderen betreuten
Seiten auf statische Inhalte umgestellt. Aber Jekyll erleichtert die Arbeit erst auf ein Level, das es tatsächlich
erträglich macht kein CMS zu haben.</p>
<h3 id="features">Features</h3>
<ul>
<li>Kein serverseitiges Scripting nötig</li>
<li>Artikel und Seiten können mit Markdown geschrieben werden</li>
<li>Liquid Template Engine erlaubt auch komplexe Strukturen und automatisierung</li>
<li>Vielzahl von fertigen Plugins und Möglichkeit für eigene Plugins</li>
<li>Ruby … ich mag Ruby</li>
</ul>
<h3 id="warum-jekyll-und-nicht--">Warum Jekyll und nicht … ?</h3>
<p>Es gibt einige gute Alternativen zu Jekyll</p>
<ul>
<li><a href="https://middlemanapp.com/">Middleman</a></li>
<li><a href="https://gohugo.io/">Hugo</a></li>
<li><a href="https://hexo.io/">Hexo</a></li>
<li><a href="https://getpelican.com">Pelican</a></li>
<li><a href="http://www.metalsmith.io/">Metalsmith</a></li>
<li><a href="http://octopress.org/">Octopress</a></li>
<li><a href="https://www.staticgen.com/">… und einige hundert weitere …</a></li>
</ul>
<p>Warum also Jekyll?</p>
<p>Pure Gewohnheit. Es gibt keinen anderen Grund. Ich arbeite schon länger mit Jekyll und bin zufrieden. Zunächst nur für
<a href="https://pages.github.com/">Github Pages</a>, wenig später dann auch “außerhalb”. Jekyll ist leicht zu lernen, schnell
genug und geht mir nicht auf die Nerven. Warum wechseln, wenn ich gut klarkomme? Das einzige was ich wirklich vermisse
ist ein sauberes Asset-Management für Artikel. Aber dafür gibt’s ja die Plugin-Schnittstelle, das bekomme ich schon
noch gelöst.</p>
<h3 id="und-wie-publiziert-man-nun-artikel">Und wie publiziert man nun Artikel?</h3>
<p>Im Hintergrund arbeitet ein Gitlab mit aktivierter CI. Der <code class="highlighter-rouge">master</code>-branch ist protected und kann nur über einen
Pull-Request verändert werden. Artikel werden von den Mitgliedern ein getrennten Branches erstellt und dann in den
<code class="highlighter-rouge">master</code> gemerged. Die CI baut daraufhin die Webseite neu und schiebt sie, sofern es keine Fehler gab ins
Webverzeichnis. Soweit die Theorie. In der Praxis ist derzeit alles manuell.</p>floSo ein CMS wie Wordpress oder zuletzt Drupal ist schon komfortabel. Jeder Laie kann ohne Vorkenntnisse eigene Inhalte veröffentlichen und verwalten. Es gibt eine Benutzerverwaltung mit Berechtigungen, sodass nichts kaputt gehen kann. Auch multimediale Inhalte, in unserem Fall nur ein paar Bilder, können einfach verwaltet werden. Und nicht zuletzt können von Mitgliedern und Besuchern Kommentare (und SPAM) verfasst werden.Kleiner Abstecher zur Inhalts-“Verschlüsselung” von Spiegel Online2016-08-19T00:00:00-05:002016-08-19T00:00:00-05:00http://frilug.de/2016/08/19/Kleiner-Abstecher-zur-Inhalts-Verschluesselung-von-Spiegel-Online<p>Neben einigen frei zugänglichen Artikeln bietet die Nachrichtenplattform von Spiegel Online auch bezahlpflichtige
Artikel (Spiegel Plus) zum online Lesen mittels LaterPay an. Nicht angemeldeten Nutzern wird dabei jeweils nur ein
kurzer Teil des Artikels zu Verfügung gestellt, der restliche Artikel erscheint verschwommen und unleserlich. Wie sich
nun raus stellte ist diese “Inhaltsverschlüsselung” mit Leichtigkeit zu überlisten.</p>
<figure><img src="/assets/posts/Kleiner-Abstecher-zur-Inhalts-Verschluesselung-von-Spiegel-Online/Screenshot_20160820_144207.png" /><figcaption>
<p><em>Versteckter Inhalt:</em> Zum Weiterlesen muss man ggf. für den Artikel zahlen oder einen Wochenpass bei
Spiegel Online kaufen.</p>
</figcaption></figure>
<h3 id="umgehen-in-nur-2-schritten">Umgehen in nur 2 Schritten</h3>
<p>Der Schutz muss dafür in 2 Schritten umgangen werden. Betroffen ist jeweils nur die Region die von der CSS-Klasse
<code class="highlighter-rouge">obfuscated-content</code> eingeschlossen wird. Der erste Schritt ist dabei recht simpel - der Effekt, der die verschwommene
Schrift erzeugt, ist der CSS-Filter <code class="highlighter-rouge">blur</code>. Dieser lässt sich Beispielweise über die Developer-Tools abschalten.
Alternativ geht das auch per Javascript:</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">obfuscated_content</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="dl">'</span><span class="s1">obfuscated-content</span><span class="dl">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
<span class="nx">obfuscated_content</span><span class="p">.</span><span class="nx">style</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">blur: none !important; opacity: 1 !important; filter: none !important;</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">obfuscated_content</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">style</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">blur: none !important; opacity: 1 !important; filter: none !important;</span><span class="dl">"</span><span class="p">;</span>
</code></pre></div></div>
<p>Dabei werden jeweils für das Element mit der CSS-Klasse <code>obfuscated-content</code> und das übergeordnete
Elternelement die CSS-Attribute <code>blur</code>, <code>filter</code> und <code>opacity</code> zurückgesetzt.</p>
<figure><img src="/assets/posts/Kleiner-Abstecher-zur-Inhalts-Verschluesselung-von-Spiegel-Online/Screenshot_20160820_150259.png" /><figcaption>
<p><em>Nur CSS:</em> Dieser Effekt ist nur CSS und lässt sich wie hier gezeigt einfach über die
Developer Tools abschalten (<kbd>Strg</kbd> + <kbd>Umschalt</kbd> + <kbd>I</kbd>).</p>
</figcaption></figure>
<p>Anschließend muss noch das LaterPay Overlay entfernt werden. Das <code class="highlighter-rouge">HTML-Element</code> hat leider keine permanente
ID oder Klasse zugewiesen bekommen, sondern eine (pro Aufruf) variierende Klasse. Deshalb ist es ein wenig schwieriger
an das Element ran zu kommen. Aber auch das ist möglich - wir navigieren einfach relativ zu einem bekannten Element,
<code class="highlighter-rouge">.obfuscated-content</code>, also zu dem Overlay-Element. Passenderweise ist dies recht simpel, es handelt sich
dabei um das nächste Kindelement hinter dem Elternknoten des <code class="highlighter-rouge">.obfuscated-content</code>-Elements.</p>
<figure><img src="/assets/posts/Kleiner-Abstecher-zur-Inhalts-Verschluesselung-von-Spiegel-Online/Screenshot_20160822_164410.png" /><figcaption>
<p><em>LaterPay Overlay:</em> Das Overlay befindet sich hinter (<code class="highlighter-rouge">nextSibling</code>) der <code class="highlighter-rouge">parentNode</code> des <code class="highlighter-rouge">.obfuscated-content</code>.</p>
</figcaption></figure>
<p>Auch das lässt sich mit Javascript einfach ansprechen. Wir blenden das Element mit der CSS-Eigenschaft <code class="highlighter-rouge">display: none</code>
einfach aus:</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">obfuscated_content</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">nextSibling</span><span class="p">.</span><span class="nx">style</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">display: none;</span><span class="dl">"</span><span class="p">;</span>
</code></pre></div></div>
<p>Ist dies erledigt offenbart sich dem Nutzer ein Wirrwarr aus Buchstaben, Zahlen und Sonderzeichen.</p>
<figure><img src="/assets/posts/Kleiner-Abstecher-zur-Inhalts-Verschluesselung-von-Spiegel-Online/Screenshot_20160820_144543.png" /><figcaption>
<p>Buchstaben-Wirrwarr: Auffällig ist, dass der Text keine Zufallskombination zu sein scheint, Leerzeichen sind an stimmigen Stellen positioniert und auffällig viele Sätze enden auf <code class="highlighter-rouge">/</code> oder beinhalten ein <code class="highlighter-rouge">-</code>.</p>
</figcaption></figure>
<p>Dabei fällt auf, dass Leerzeichen passend gesetzt scheinen. Ebenso fällt auf, dass erstaunlich viele Sätze auf einen
einfachen Slash / enden. Ein kurzer Blick auf <code class="highlighter-rouge">man ascii</code> erschien hier angebracht - und tatsächlich: der Slash steht
in der ASCII-Tabelle mit dem Index <code>0x2F</code> eine Position direkt hinter dem Punkt. Beim Bindestrich verhält es
sich ähnlich. Dieser steht an der Position <code>0x2D</code>; eine Stelle darüber in der ASCII-Tabelle, an Position
<code class="highlighter-rouge">0x2C</code> findet sich das Komma ;-). Verifiziert man diese Annahme nun mit dem ersten Wort “Ejf” erhält man als Klartext
“Der”.</p>
<figure><img src="/assets/posts/Kleiner-Abstecher-zur-Inhalts-Verschluesselung-von-Spiegel-Online/Screenshot_20160820_150957.png" /><figcaption>
<p><em>man ascii:</em> Ein Blick auf die ASCII-Tabelle offenbart den Mechanismus.</p>
</figcaption></figure>
<p>Um es nicht unnötig kompliziert zu machen entschied man sich bei Spiegel offenbar für eine sehr simple Variante der
<a href="https://de.wikipedia.org/wiki/Caesar-Verschl%C3%BCsselung">Caesar-Chiffre</a> in der jeweils nur um 1 Zeichen
verschoben wird. Auch diese Obfuscation lässt sich sehr simpel mittels etwas Javascript umkehren.</p>
<p>Aber eins nach dem anderen… zunächst müssen wir erst mal auf den Text zugreifen. Dieser steht in Absätzen mit der
Klasse <code class="highlighter-rouge">.obfuscated</code>:</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">obfuscated_tags</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="dl">'</span><span class="s1">obfuscated</span><span class="dl">'</span><span class="p">);</span>
</code></pre></div></div>
<p>An den Textinhalt des ersten Absatzes kommen wir nun recht bequem mittels:</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">obfuscated</span> <span class="o">=</span> <span class="nx">obfuscated_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="nx">ciphertext</span> <span class="o">=</span> <span class="nx">obfuscated</span><span class="p">.</span><span class="nx">innerText</span><span class="p">;</span>
</code></pre></div></div>
<p>Um nun jedes Zeichen durch das in der ASCII-Tabelle darüber stehende zu ersetzen, müssen wir auf den Index der
ASCII-Tabelle zugreifen. dies ist mittels <code class="highlighter-rouge">.charCodeAt(j)</code> für das Zeichen <code class="highlighter-rouge">j</code> möglich. Um den veränderten Indexwert
anschließend wieder zurück in ein Textzeichen zu wandeln benötigen wir die entsprechende Umkehrmethode
<code class="highlighter-rouge">String.fromCharCode()</code>:</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">(</span><span class="nx">ciphertext</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">%</span> <span class="mh">0xFF</span><span class="p">);</span>
</code></pre></div></div>
<p>Insgesamt lässt sich so ein simples Javascript erstellen, welches beispielsweise mittels dem Firefox-Plugin
<a href="https://addons.mozilla.org/de/firefox/addon/greasemonkey/">Greasemonkey</a> automatisch auf die Spiegel-Online
Website anwenden lässt:</p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// ==UserScript==</span>
<span class="c1">// @name Spiegel Online decrypt</span>
<span class="c1">// @namespace bueddl</span>
<span class="c1">// @include http://www.spiegel.de/*</span>
<span class="c1">// @version 1</span>
<span class="c1">// @grant none</span>
<span class="c1">// ==/UserScript==</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span>
<span class="p">{</span>
<span class="nx">obfuscated_content</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="dl">'</span><span class="s1">obfuscated-content</span><span class="dl">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
<span class="nx">obfuscated_content</span><span class="p">.</span><span class="nx">style</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">blur: none !important; opacity: 1 !important; filter: none !important;</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">obfuscated_content</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">style</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">blur: none !important; opacity: 1 !important; filter: none !important;</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">obfuscated_content</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">nextSibling</span><span class="p">.</span><span class="nx">style</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">display: none;</span><span class="dl">"</span><span class="p">;</span>
<span class="nx">obfuscated_tags</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByClassName</span><span class="p">(</span><span class="dl">'</span><span class="s1">obfuscated</span><span class="dl">'</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="k">in</span> <span class="nx">obfuscated_tags</span><span class="p">)</span>
<span class="p">{</span>
<span class="nx">obfuscated</span> <span class="o">=</span> <span class="nx">obfuscated_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="nx">ciphertext</span> <span class="o">=</span> <span class="nx">obfuscated</span><span class="p">.</span><span class="nx">innerText</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ciphertext</span> <span class="o">==</span> <span class="kc">undefined</span><span class="p">)</span>
<span class="k">continue</span><span class="p">;</span>
<span class="nx">plaintext</span> <span class="o">=</span> <span class="dl">''</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&</span><span class="nx">lt</span><span class="p">;</span> <span class="nx">ciphertext</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ciphertext</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span> <span class="o">==</span> <span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">)</span>
<span class="nx">plaintext</span> <span class="o">+=</span> <span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">;</span>
<span class="k">else</span>
<span class="nx">plaintext</span> <span class="o">+=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">(</span><span class="nx">ciphertext</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">j</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">%</span> <span class="mh">0xFF</span><span class="p">);</span>
<span class="nx">obfuscated</span><span class="p">.</span><span class="nx">innerText</span> <span class="o">=</span> <span class="nx">plaintext</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">};</span>
</code></pre></div></div>
<p>Selbstverständlich ist das ganze ein rein hypothetischer Gedanke. Interessant ist die ganze Sache allerdings auf jeden
Fall ;-)</p>sebastianNeben einigen frei zugänglichen Artikeln bietet die Nachrichtenplattform von Spiegel Online auch bezahlpflichtige Artikel (Spiegel Plus) zum online Lesen mittels LaterPay an. Nicht angemeldeten Nutzern wird dabei jeweils nur ein kurzer Teil des Artikels zu Verfügung gestellt, der restliche Artikel erscheint verschwommen und unleserlich. Wie sich nun raus stellte ist diese “Inhaltsverschlüsselung” mit Leichtigkeit zu überlisten.Mal eben schnell… ein Backup in die Ferne sichern (2)2016-08-14T00:00:00-05:002016-08-14T00:00:00-05:00http://frilug.de/2016/08/14/Mal-eben-schnell-ein-Backup-in-die-Ferne-sichern-2<p>Sicherungen von ganzen Disks wurden vor einiger Zeit bereits im <a href="/2015/10/31/Mal-eben-schnell-ein-Backup-in-die-Ferne-sichern-1.html">ersten Teil des Artikels</a> behandelt.
Für UNIX-artige (und somit auch GNU/Linux) Systeme ist diese Methode oft nicht angebracht. Hier stehen schon viele
weitere Optionen aus der Open-Source Szene bereit; rsync, Bacula, Backupninja, uvm.
Diese Tools sind alle mehr als ausreichend dokumentiert und eigenen sich z.T. für Voll- und Inkremental-Backups,
erfordern jedoch jeweils etwas Einarbeitung. Doch was tun, wenn man mal eben schnell ein vollständiges Backup seines
Systems benötigt, aber nicht ausreichend lokalen Festplattenspeicher für ein tar-Archiv zur Verfügung hat? - z.B. wenn
man sein System beim Basteln zerschossen hat und mal eben schnell neuinstallieren will (so wie ich).</p>
<p>Die Antwort bietet auch hier wieder eine Kombination von <code class="highlighter-rouge">ssh</code>, respektive <code class="highlighter-rouge">scp</code> und <code class="highlighter-rouge">dd</code>.</p>
<h2 id="sicherung">Sicherung</h2>
<p>Die Sicherung erfolgt analog zu der mittels <code class="highlighter-rouge">dd</code> aus dem ersten Teil der Artikelreihe. Hier verwenden wir zum Erstellen
allerdings nicht <code class="highlighter-rouge">dd</code> sondern den Archiver <code class="highlighter-rouge">tar</code>. Diesen lassen wir den Ausgabestrom an die Standardausgabe
leiten. Diese wird von uns dann durch <code class="highlighter-rouge">scp</code> zum Zielrechner geschleift und dort mittels <code class="highlighter-rouge">dd</code> in das Zielarchiv geschrieben.</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tar</span> <span class="nt">-cvf</span> - <pfad-der-daten> | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-zielarchiv>.tar
</code></pre></div></div>
<p>Wie auch schon zuvor muss natürlich <code class="highlighter-rouge"><user>@<host></code> durch ein Benutzer und die IP des Ziel-(Backup) host ersetzt und die
Pfade entsprechend angepasst werden. Das Ergebnis weicht von einem herkömmlichen Tar-Archiv nicht da wir es lediglich
über ssh übertragen haben, ohne es vorher lokal zu speichern.</p>
<h2 id="wiederherstellung">Wiederherstellung</h2>
<p>Auch die Widerherstellung bereitet keine großen Umstände und verläuft, erneut, analog zum Erstellen der Sicherung selbst.</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <user>@<host> dd if=<pfad-zum-archiv>.tar | tar -xf - <pfad-der-wiederherstellung>
</code></pre></div></div>
<p>Alternativ, wenn man dies vom Backuphost und nicht vom Zielrechner starten möchte:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>dd if=<pfad-zum-archiv>.tar | ssh <user>@<host> tar -xf - <pfad-der-wiederherstellung>
</code></pre></div></div>
<h2 id="weitere-möglichkeiten">Weitere Möglichkeiten</h2>
<p>Die Tatsache, dass wir das GNU-Tool <code class="highlighter-rouge">tar</code> verwenden eröffnet uns eine Menge weiterer Möglichkeiten. Das Komprimieren der
Daten lässt sich so sehr einfach über die Kommandozeilenoptionen von <code class="highlighter-rouge">tar</code> selber lösen. Zum Beispiel:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">tar</span> <span class="nt">-czvf</span> - <pfad-der-daten> | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-zielarchiv>.tar.gz
</code></pre></div></div>
<p>Soviel erstmal zum Desaster-Backup. Im nächsten Artikel werde ich dann auf das UNIX-Tool <code class="highlighter-rouge">rsync</code> eingehen. :-)</p>sebastianSicherungen von ganzen Disks wurden vor einiger Zeit bereits im ersten Teil des Artikels behandelt. Für UNIX-artige (und somit auch GNU/Linux) Systeme ist diese Methode oft nicht angebracht. Hier stehen schon viele weitere Optionen aus der Open-Source Szene bereit; rsync, Bacula, Backupninja, uvm. Diese Tools sind alle mehr als ausreichend dokumentiert und eigenen sich z.T. für Voll- und Inkremental-Backups, erfordern jedoch jeweils etwas Einarbeitung. Doch was tun, wenn man mal eben schnell ein vollständiges Backup seines Systems benötigt, aber nicht ausreichend lokalen Festplattenspeicher für ein tar-Archiv zur Verfügung hat? - z.B. wenn man sein System beim Basteln zerschossen hat und mal eben schnell neuinstallieren will (so wie ich).FLIP - Linux Install Party2016-04-03T00:00:00-05:002016-04-03T00:00:00-05:00http://frilug.de/2016/04/03/FLIP-Linux-Install-Party<p>Die FriLUG veranstaltet pünktlich zu beginn des Sommersemesters eine Install Party. Wir helfen dir bei der Installation
eines Linux Systems und gehen mit dir die ersten Schritte.</p>
<p><strong>Dienstag, 5. April 2016 ab 10:30 im B-Gebäude, Raum B1.001 in der THM Friedberg</strong></p>
<h2 id="was-ist-linux">Was ist Linux?</h2>
<p>Linux ist ein freies Betriebssystem. Frei ist in diesem Sinne nicht nur auf kostenlos bezogen, sondern auch auf die
vielen Freiheiten, die ein solches System bietet. Keine Lizenzschlüssel, keine langwierigen Aktivierungen, keine
Shareware (, Keine Toolbars *g*). Oben drauf gibt’s noch ein fast nach belieben einstellbares System, jede Menge
kompatibler Software und eine große Community.<br /><br />Wenn du von deinem bisherigen Betriebssystem gelangweilt bist,
mal etwas neues ausprobieren möchtest, interesse an Open Source/freier Software hast oder einfach mal Linux ausprobieren
möchtest, dann schau doch einfach mal unverbindlich vorbei.</p>
<p>Uns ist natürlich klar, dass man von heute auf morgen nicht einfach mal eben so das Betriebssystem wechseln kann. Linux
kann wunderbar neben einer vorhandenen Installation eines Betriebssystems (z.B. Windows) existieren. Du musst also nicht
um die Existenz deines Windows fürchten :)</p>
<h2 id="vorwissen">Vorwissen</h2>
<p>Vorwissen ist absolut nicht nötig. Auf der Install Party wollen wir dir die ersten Schritte erleichtern und Linux etwas
näher bringen. Wir zeigen dir, wie du das System benutzt und verwaltest. Es schadet natürlich nicht, wenn du mit
Computern umgehen kannst und ggf. auch schon etwas über Linux weißt.</p>
<h2 id="angebotene-systeme">Angebotene Systeme</h2>
<p>Da wir ja auch etwas planen müssen, bieten wir generell einen Einstieg in die folgenden, gängigen Linux-Distributionen:</p>
<ul>
<li>Mint</li>
<li>Ubuntu</li>
<li>Debian</li>
<li>openSUSE</li>
</ul>
<p>Wenn du möchtest, kannst du ja schon mal einen Blick auf die verschiedenen Systeme werfen. Falls du ein anderes System
möchtest, sprich uns einfach darauf an. Je nach Zeitaufwand können wir auch auf Wünsche eingehen.</p>
<h2 id="mitbringen">Mitbringen!</h2>
<ul>
<li>Einen funktionierenden Rechner</li>
<li>ggf. Ladekabel fürs Laptop</li>
<li>Gute Laune und ein bischen Zeit</li>
<li>(nötige Adapter um eine Internetverbindung herzustellen, falls dein Rechner keinen Netzwerkanschluss oder Wlan hat)</li>
</ul>floDie FriLUG veranstaltet pünktlich zu beginn des Sommersemesters eine Install Party. Wir helfen dir bei der Installation eines Linux Systems und gehen mit dir die ersten Schritte.Mal eben schnell … ein Backup in die Ferne sichern (1)2015-10-31T00:00:00-05:002015-10-31T00:00:00-05:00http://frilug.de/2015/10/31/Mal-eben-schnell-ein-Backup-in-die-Ferne-sichern-1<p>Backups sind wichtig. So viel sollte jedem mittlerweile klar sein. Doch wie sichert man richtig?</p>
<h2 id="gnulinux--unix">GNU/Linux & Unix</h2>
<p>Unter <strong>GNU/Linux und Unix</strong> stellt sich diese Frage kaum. Man kopiert eben das nicht gebootete System mit dem Kopiertool der eigenen Wahl. Ob man dazu nun cp, scp oder rsync einsetzt, man die Dateien einzeln sichert oder vorher mittels tar archiviert und an sie anschließend zur besseren Aufbewahrung komprimiert spielt dabei erstmal eine Rolle. Wichtig ist nur, dass das System dabei nicht gebootet ist.</p>
<p>Das hat zwei Gründe; Zum Einen natürlich die Konsistenz des Systems. Ist es sauber heruntergefahren, braucht man sich hier nicht sorgen. Zum Anderen erspart man sich dadurch das explizite Ausschließen der virtuellen Dateisysteme (/proc,/sys,/dev).
Die Lösung ist hier ebenso einfach wie die Sicherung selbst: Man bootet von einem USB Stick mit einem Live Linux Image oder, etwas langsamer, von einer Live CD.
Die Wiederherstellung ist ebenso einfach erledigt. Die Dateien werden einfach zurück kopiert, natürlich auch wieder durch ein Live Linux. Fertig ist das Backup unter Linux und anderen Unix-artigen Systemen.</p>
<p>Natürlich ist ein Voll-Backup, bzw. ein Image, wie es weiter unten für Windows beschrieben wird, auch für Linux/Unix Maschienen problemlos möglich, nur oft eben einfach nicht nötig.</p>
<h2 id="windows">Windows</h2>
<p>Doch manchmal muss man eben auch den Laptop der Schwester/Mutter/Vater/Tante/Onkel sichern. Leider trifft man dort oft noch <strong>Microsoft Windows</strong> an. Und da fangen auch schon die Probleme an. Eine Sicherung wie oben beschrieben führt spätestens bei der Widerherstellung oft zu Verzweifelung.
Einfacher ist es, ein Abbild der gesamten Platte zu erstellen, z.B. via dd. Mit dem noch aus Unix Zeiten stammende Tool sind auch den meisten Linux-Nutzern schon irgendwann mal in Berührung gekommen - z.B: beim Erstellen eines Linux Live-Sticks aus einem ISO-Abbild heraus ;-).</p>
<h3 id="sicherung">Sicherung</h3>
<p>Also wieder in das Live Linux von eben gebootet, externe Festplatte angeschlossen und los gehts!</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="nv">of</span><span class="o">=</span><pfad-zum-image> <span class="nv">status</span><span class="o">=</span>progress
</code></pre></div></div>
<p>Dabei muss /dev/sda durch die Platte ersetzt werden, die von Windows benutzt wird und für <pfad-zum-image> die Zieldatei auf der externen Platte eingesetzt werden. Das ganze führt dann zu einem 1:1 Abbild der Festplatte, wird also unter Umständen sehr, sehr groß!</pfad-zum-image></p>
<p>Oft fehlt es auch einfach an einer externen Festplatte oder man möchte auf einen entfernten (oder den eigenen) Rechner sichern. Hier springen ssh mit dd zusammen für uns ein!</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="nv">status</span><span class="o">=</span>progress | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-image>
</code></pre></div></div>
<p>Hier müssen entsprechend noch <user> und <host> durch den Benutzer und die Maschien auf die das Backup gesichert werden soll ersetzt werden. Allerdings bleibt das Problem der Größe unserer Sicherung. Wie so oft hilft einem auch hier das Kombinieren von GNU Tools weiter:</host></user></p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="nv">status</span><span class="o">=</span>progress | <span class="nb">gzip</span> <span class="nt">-1</span> - | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-image>.gz
</code></pre></div></div>
<p>Ob wir an der Stelle nun gzip, xz ein anderes Tool zum Komprimieren einsetzen bleibt wieder jedem selber überlassen. Ich habe hier gzip gewählt, da es schnell ist (zumdem noch mit der Option -1, d.h. niedrige Kompression, schnelle Komprimierung) und der Speicherplatz sekundär für mich ist. Steht die Speicherplatzersparnis im Vordergrund kann hier auch 9 für hohe Kompression gewählt werden.
Aber es spricht auch absolut nichts dagegen jegliches andere Verfahren zu wählen, einzige Vorraussetzung: der Vorgang muss über die Dateiströme stdin und stdout laufen.</p>
<p>Wer mehr auf BZip2 steht mag eventuell folgendes probieren:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="nv">status</span><span class="o">=</span>progress | <span class="nb">gzip</span> <span class="nt">-j1</span> - | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-image>.bz2
</code></pre></div></div>
<p>(oder)</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="nv">status</span><span class="o">=</span>progress | bzip2 <span class="nt">-1</span> - | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-image>.bz2
</code></pre></div></div>
<p>Glücklicherweise bietet xz eine verwandte Syntax, also müssen wir auch hier nicht viel ändern:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="nv">status</span><span class="o">=</span>progress | xz <span class="nt">-0</span> - | ssh <user>@<host> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-image>.xz
</code></pre></div></div>
<h3 id="wiederherstellung">Wiederherstellung</h3>
<p>Die Wiederherstellung läuft dann wieder analog, nur eben in umgekehrter Reihenfolge ab; wichtig dabei - die Komprimierung muss beim Wiederherstellen auch rückgangig gemacht werden.</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <user>@<host> <span class="nb">dd </span><span class="k">if</span><span class="o">=</span><pfad-zum-image>.gz | <span class="nb">gunzip</span> - | <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span>/dev/sda
</code></pre></div></div>
<p>Das ganze klappt natürlich auch analog mit den jeweils anderen Kompressionsverfahren:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <user>@<host> <span class="nb">dd </span><span class="k">if</span><span class="o">=</span><pfad-zum-image>.bz2 | <span class="nb">gunzip</span> <span class="nt">-j</span> - | <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span>/dev/sda
</code></pre></div></div>
<p>(oder)</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <user>@<host> <span class="nb">dd </span><span class="k">if</span><span class="o">=</span><pfad-zum-image>.bz2 | bunzip - | <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span>/dev/sda
</code></pre></div></div>
<p>Oder für xz:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <user>@<host> <span class="nb">dd </span><span class="k">if</span><span class="o">=</span><pfad-zum-image>.xz | unxz - | <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span>/dev/sda
</code></pre></div></div>
<h2 id="und-umgekehrt">…und Umgekehrt</h2>
<p>Natürlich ist das ganze weder auf Windows noch auf die Richtung beschränkt! Es geht nämlich auch umgekehrt. Bisher haben wir aus unserem Live Linux heraus gesichert und wiederherstellt. Manchmal ist es aber bequemer den Vorgang von der eigenen Maschiene aus zu steuern. Dafür ändern wir einfach unsere Ansicht auf die Dinge und nutzen:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh <user>@<host> <span class="nb">dd </span><span class="k">if</span><span class="o">=</span>/dev/sda <span class="se">\|</span> <span class="nb">gzip</span> <span class="nt">-1</span> - | <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span><pfad-zum-image>.gz
</code></pre></div></div>
<p>Für das Sichern und:</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">dd </span><span class="k">if</span><span class="o">=</span><pfad-zum-image>.gz | ssh <user>@<host> <span class="nb">gunzip</span> - <span class="se">\|</span> <span class="nb">dd </span><span class="nv">of</span><span class="o">=</span>/dev/sda
</code></pre></div></div>
<p>für die Widerherstellung.</p>
<p>Beachtet werden muss hierbei vor allem das Escaping der Pipe (also <code class="highlighter-rouge">\|</code>) vor, bzw. für die Wiederherstellung nach dem gzip Kommando, da der Befehl sonst nicht auf dem entfernten Rechner, sondern erst lokal, also nach der Übertragung der Daten durch das Netzwerk, ausgeführt wird. Das würde zwar auch funktionieren, aber das Netzwerk nur unnötig belastet.
Benutzername und Host sind an dieser Stelle natürlich die des Live Linux, auf dem dadurch ein aktivierter SSH-Server erfordert wird, und nicht, wie bisher, die der Zielmaschiene für das Backup.</p>
<p>Ab jetzt sollte also auch der Windows-Sicherung nichts mehr im Wege stehen :-)</p>sebastianBackups sind wichtig. So viel sollte jedem mittlerweile klar sein. Doch wie sichert man richtig?Ein erstes Fazit - der Umzug & ein Stammtisch2015-07-21T00:00:00-05:002015-07-21T00:00:00-05:00http://frilug.de/2015/07/21/Ein-erstes-Fazit-der-Umzug-und-ein-Stammtisch<p>Vor Anfang des Semesters wurden wir durch die Bibliothek unsanft aus unserem Raum entfernt. Für alle
<a href="/2015/02/24/Die-FriLUG-muss-weg.html">>hier<</a> noch einmal zum Nachlesen.</p>
<p>Inzwischen haben sich die Gemüter beruhigt. Man könnte fast sagen es ist eine Art Normalzustand eingekehrt. Und so nehme
ich mir nun die Freiheit, und berichte mal über die aktuelle Lage und Geschehnisse.</p>
<p>Das der neue Raum klein ist, war uns allen bewusst. Dennoch haben wir die Platzplanung zu optimistisch angegangen. Vom
ITS freundlicherweise gestellte Schränke passten garnicht erst durch das Treppenhaus. Unsere alten Tische konnten wir
ebenfalls nicht unterbringen. Auch das betagte, aber wunderbare Sofa musste das Zeitliche segnen. Drei schmalere Tische
konnten wir in einer gemeinsamen Aktion mit Mühe durch das Treppenhaus zwängen. An diesen Tischen wollten wir vier
Arbeitsplätze und einen Basteltisch realisieren. In der Realität können 3 Leute im Raum bequem sitzen. Jede weitere
Person muss sich zwischen Tür, Notausgangstreppe und Heizkörper kuscheln. Der Bastelplatz ist aufgrund völlig
fehlplatzierter Fenster und der damit verbundenen mangelhaften Belichtung, welche sich auch durch dezent gealterte,
spärlich verteilte Neonröhren an der Decke nicht verbessern lässt, eher eine Ablage für alle Sachen, die wir nicht in
oder auf den Schränken unterbringen konnten.</p>
<p>Viel Betrieb ist nicht. Ich persönlich bin jeden Montag dort vor Ort, meist zusammen mit Sebastian, manchmal auch
alleine. Gelegentlich trifft man auch mal andere Mitglieder. Außer uns beiden schaut anscheinend niemand selbstständig
in den Raum. Das sieht man unter anderem an der Ausleihliste des Schlüssels. Seit Anfang des Semesters steht dort nur
mein Name. Das hat für mich natürlich den Vorteil, dass ich den neuen Datensatz jeweils mit “ abkürzen kann.</p>
<p>Das ändert aber nichts an der Tatsache, dass der Raum quasi tot ist. Was früher ein belebter Raum war, der täglich
Stundenlang genutzt wurde, in dem Ideen geschmiedet, Probleme gelöst und viel Spaß gehabt wurde, ist nun im wahrsten
Sinne des Wortes eine Abstellkammer für alte Computer. Von Laufkundschaft kann man inzwischen nur noch träumen. Eher von
<em>Verlaufkundschaft</em>, die auf dem Weg zum Gebetsraum falsch abgebogen ist. Versteht mich nicht falsch, aber das sind in
der Tat die einzigen Menschen die gelegentlich in unseren Raum schauen und manchmal sogar freundlich grüßen.</p>
<p>Aus einem anderen Anlass hat sich vor einigen Monaten etwas neues gebildet. Eigentlich wollten wir die Semester-weisen
Gesamttreffen von den Tratsch-Themen entlasten. Diese waren zwar witzig, zogen die Treffen aber unnötig in die Länge.
Daher entstand die Idee eines <strong>Stammtisch</strong>es. Ein regelmäßiges Treffen, bei dem man sich ungehindert über
Tratschthemen auslassen kann.</p>
<p>Wir treffen uns jeden <strong>zweiten Donnerstag</strong>, ausgerichtet an den <strong>ungeraden Wochen</strong>, um <strong>19 Uhr</strong> im Musikbistro
<a href="http://musikbistro.de/">bei Costa</a>. Wer man vorbeischauen will, kann dies gerne auch ohne Ankündigung tun. Ich rate
jedoch mal kurz eine Mail an kontakt@frilug.de zu verfassen, da wir den Stammtisch gelegentlich zu einem Grillabend
umfunktionieren.</p>
<p>Ob die gleiche Taktung des Stammtischs in den Semesterferien sinnvoll ist, bleibt noch zu klären. Ich gehe davon aus,
dass jeder zweite Stammtisch stattfindet …</p>floVor Anfang des Semesters wurden wir durch die Bibliothek unsanft aus unserem Raum entfernt. Für alle >hier< noch einmal zum Nachlesen.Der Stammtisch: jeden zweiten Donnerstag um 19 Uhr in Friedberg2015-07-21T00:00:00-05:002015-07-21T00:00:00-05:00http://frilug.de/2015/07/21/Der-Stammtisch-jeden-zweiten-Donnerstag-um-19-Uhr-in-Friedberg<p>Seit einiger Zeit trifft sich die FriLUG regelmäßig zu einem Stammtisch. Der Stammtisch findet
<strong>jeden zweiten Donnerstag</strong> statt, ausgerichtet an der <strong>ungeraden Kalenderwoche</strong>. (ungerade Kalenderwoche = Stammtisch).
Wir treffen uns <strong>ab 19 Uhr</strong> im <a href="http://musikbistro.de/">Musikbistro <em>bei Costa</em></a> in Friedberg.</p>
<p>Kommen kann prinzipell jeder der Lust hat, es empfielt sich jedoch vorher eine Mail an kontakt[at]frilug[dot]de zu senden, da
der Stammtisch bei Gelegenheit auch mal als Grillabend <em>missbraucht</em> wird, und dann dementsprechend nicht an angegebener
Örtlichkeit stattfindet. Außerhalb der <a href="http://www.thm.de/site/studium/sie-studieren/semester-und-vorlesungszeiten.html">Vorlesungszeiten</a>
findet der Stammtisch nur sporadisch statt. Termine werden zu gegeben Zeiten bekannt gegeben.</p>floSeit einiger Zeit trifft sich die FriLUG regelmäßig zu einem Stammtisch. Der Stammtisch findet jeden zweiten Donnerstag statt, ausgerichtet an der ungeraden Kalenderwoche. (ungerade Kalenderwoche = Stammtisch). Wir treffen uns ab 19 Uhr im Musikbistro bei Costa in Friedberg.OFFTOPIC: Fröhliches Basteln mit Microsoft Office 20162015-06-26T00:00:00-05:002015-06-26T00:00:00-05:00http://frilug.de/offtopic/2015/06/26/Froehliches-Basteln-mit-Microsoft-Office-2016<p>Liebe Linux-Freunde!</p>
<p>Der Eine oder Andere dürfte sich an dieser Stelle sicher fragen, ob ich mich eventuell im Blog geirrt habe, oder gar auf die dunkle Seite gewechselt bin.
Beides ist (zum Glück?) nicht der Fall, ich bin in den vergangenen Tagen lediglich über ein paar interessante Dinge gestolpert, die ich mit euch teilen möchte.<!--break--></p>
<p><strong>Erstens: Microsoft Office 2016 ist da!</strong>
Wie in den vergangenen Tagen schwerlich zu übersehen, hat Microsoft die neue Version der Bürosuite veröffentlicht. Der
Grund warum ich das an dieser Stelle erwähne ist folgender: Als Student der THM ist erhält man Office356 kostenlos.
Alle, die das noch nicht mitbekommen haben, finden <a href="https://www.its.thm.de/hilfe/85-software6/642-office-365-fuer-hochschulangehoerige.html">hier weitere Informationen</a>.</p>
<p>Der Haken an der Sache: auch wenn man als Office356-Nutzer berechtigt ist, die Version 2016 zu verwenden, liefert das
Portal im Moment noch Version 2013 aus. Das mag für Viele kein Problem sein, wer aber schon jetzt die neue Version will,
kann sich mit einem Trick behelfen:</p>
<ol>
<li>Im Portal auf office.microsoft.com einloggen</li>
<li>Klick auf “Installieren”</li>
<li>Datei herunterladen.</li>
<li>Den Link herraussuchen, von dem das gerade heruntergeladen wurde. Dieser hat das Format <code class="highlighter-rouge">https://c2rsetup.officeapps.live.com/c2r/download.aspx?productReleaseID=O365ProPlusRetail&amp;platform=X86&amp;language=de-de&amp;TaxRegion=pr&amp;correlationId=&lt;ZENSIERT&gt;&amp;token=&lt;ZENSIERT&gt;&amp;version=O15GA&amp;source=O15OLSO365,%20https://portal.office.com/OLS/MySoftware.aspx</code></li>
<li>Link abändern: <code class="highlighter-rouge">version=O15GA&source=O15</code> zu <code class="highlighter-rouge">version=O16GA&source=O16</code></li>
<li>Neue Datei herunterladen, installieren, fertig.</li>
</ol>
<p>EDIT:
Office 2016 ProPlus kommt wohl in Q1/16:
https://community.office365.com/en-us/w/officeapps/office-2016-problems-and-solutions-and-frequently-asked-questions
Laut Microsoft kann Office 2016 auch mit dem Office Deployment Tool installiert werden:
*http://www.microsoft.com/en-us/download/details.aspx?id=49117
*Quelle: *
https://community.office365.com/de-de/f/106/p/410264/1015199?ss=e05b199d-49ea-4d41-99dc-e8287a547e54#1015199
*EDIT ENDE</p>
<p><strong>Zweitens: Duden Home 10 in MS Office 2016</strong>
Zur Korrektur längerer Texte benutze ich gern das Word-Plugin Duden Home (ehemals Duden Korrektor). Dieser wird seit
2013 leider nicht mehr weiterentwickelt und ist somit nur bis Office 2013 kompatibel. So funktioniert es auch unter
Office 2016:</p>
<ol>
<li>Duden Home auf Rechner mit Office 2013 installieren</li>
<li>Office 2016 installieren (Office 2016 wird ersetzt)</li>
<li>Wenn sich der Duden beschwert, dass die Prüfkomponenten fehlen, Klick auf “Ja”</li>
<li>Autostart im Tray-Menü deaktivieren, damit der Duden nicht bei jedem Systemstart nervt</li>
<li>Word starten. Sollte eine Meldung über Probleme mit diesem Plugin kommen, NICHT deaktivieren.</li>
<li>Duden wie gewohnt nutzen.</li>
</ol>
<p>Da dieser Weg natürlich nicht offiziell unterstützt wird, muss man sich bei Problemen leider selbst helfen….</p>
<p><strong>Drittens: Citavi 5 mit Microsoft Office 2016</strong>
Citavi 5 Free / Citavi 5 for Windows ist bisher nicht kompatibel und wird von Word 2016 automatisch deaktiviert. Eine
Beta-Version von Citavi 5, die Office 2016 unterstützt, soll laut Swiss Academic Software in den kommenden Tagen
erscheinen.</p>
<p>Viel Spaß beim Basteln!
Andreas</p>andiLiebe Linux-Freunde!The Cisco Project - Update 2: Hope at last2015-06-21T00:00:00-05:002015-06-21T00:00:00-05:00http://frilug.de/2015/06/21/The-Cisco-Project-Update-2-Hope-at-last<p>Liebe Linuxfreunde,</p>
<p>Heute nur ein ganz kurzer News-Eintrag von mir :-)</p>
<p>Nachdem sich die Konfiguration mit Asterisk doch ganz enorm in die Länge gezogen hat, dachte ich mir ich konfiguriere
<em>mal schnell</em> das Fon mit der Fritzbox, um zu schauen ob denn auch alles funktioniert.
Oh Andreas, how wast thou mistaken!</p>
<p>Nach mehr als 10-stündigem Debugging ging ich irgendwann auf dem Zahnfleisch und fragte im IP-Phone-Forum um Rat.
Wen es interessiert: http://www.ip-phone-forum.de/showthread.php?t=258141&page=11</p>
<p>Auch das brachte nicht die erhoffte Erlösung. Heute morgen fiel mir jedoch auf, dass ich mich nicht mehr mit meinen
IP-Telefonen registrieren konnte. Also Fritz!Box geupdatet, komplett neu aufgesetzt und nach vielem hin und her komme
ich zu folgenden Schlüssen:</p>
<ol>
<li>Das Cisco Fon mag keine Sonderzeichen im Passwort.</li>
<li>Die Fritzbox nimmt Verbindungen auf Port 5060 an. Und zwar nur da. Alle anderen Optionen aus der Konfiguration löschen!</li>
<li>Es existiert aktuell ein Bug in Fritz!OS, nach Passwort-Änderung wird das betreffende Gerät künftig automatisch abgelehnt. Löschen und neu erstellen hilft.</li>
</ol>
<p>Für heute soll es damit gut sein, wie üblich: viel Spaß beim Basteln.</p>
<p>Andreas</p>andiLiebe Linuxfreunde,The Cisco Project - Spotlight: Das Dial Template2015-06-18T00:00:00-05:002015-06-18T00:00:00-05:00http://frilug.de/2015/06/18/The-Cisco-Project-Spotlight-Das-Dial-Template<p>Liebe Linuxfreunde!
Unter der neuen Rubrik “Spotlight” möchte ich gelegentlich kurze Artikel über Dinge veröffentlichen, die mir neu sind
oder die ich einfach nur Klasse finde. Heute also zum Thema Dial Template. <em>Die folgenden Beispiele sind auf
Cisco-IP-Phones bezogen.</em></p>
<h3 id="was-ist-ein-dial-template">Was ist ein Dial Template?</h3>
<p>Ein Dial Template steuert das Verhalten des Telefons bei Aufbau einer Wählverbindung. Dabei kann festgelegt werden,
welche Nummern der Benutzer wählen kann; es kann während des Wählvorgangs ein Teil oder alles der gewählten Nummer
ersetzt werden oder ein automatischer Wählvorgang eingeleitet werden. Ist die zu wählende Nummer festgelegt, steuert
der Dialplan die Wartezeit, bis der Wählvorgang gestartet wird.</p>
<h3 id="wie-sieht-ein-dial-template-aus">Wie sieht ein Dial Template aus?</h3>
<p>Zunächst ist der Dateiname wichtig. Dieser muss mit dem in der Hauptkonfigurationsdatei (<code class="highlighter-rouge">SEP<Mac-Addresse>.cnf.xml</code>)
festgelegten übereinstimmen. Der entsprechende Tag kann beispielsweise so aussehen:</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><dialTemplate></span>dialtemplate.xml<span class="nt"></dialTemplate></span>
</code></pre></div></div>
<p>Die Datei selbst folgt einem festgelegten Aufbau. Zunächst der Header; dieser kann unverändert übernommen werden. Der
Version Stamp scheint normalerweise vom Cisco Call Manager festgelegt zu werden.</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><dialTemplate></span>
<span class="nt"><versionStamp></span>e68d54c1-0354-4b1a-aca4-adffc4b7de2f<span class="nt"></versionStamp></span>
<span class="c"><!-- ... --></span>
<span class="nt"></dialTemplate></span>
</code></pre></div></div>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>match Legt das zu suchende Muster fest. Kann aus mehreren Feldern bestehen.
0 1 2 3 4 5 6 7 8 9 Legt eine konkrete Ziffer fest
. Legt eine Ziffer, # oder * fest
* Legt beliebig viele Ziffern, # oder * fest
\* Legt ein "*" - Zeichen fest (Überschneidung mit dem *-match)
timeout Wartezeit bis zum Wählvorgang bei Erkennung eines Musters in Sekunden
line Nur auf eine bestimmte Leitung anwenden (optional)
rewrite Nummer vor dem Wahlvorgang bearbeiten (optional)
</code></pre></div></div>
<h3 id="beispiel">Beispiel:</h3>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><dialTemplate></span>
<span class="c"><!-- ... --></span>
<span class="nt"><TEMPLATE</span> <span class="na">match=</span><span class="s">"11."</span> <span class="na">timeout=</span><span class="s">"1"</span> <span class="nt">/></span>
<span class="nt"><TEMPLATE</span> <span class="na">match=</span><span class="s">"*"</span> <span class="na">timeout=</span><span class="s">"5"</span> <span class="nt">/></span>
<span class="nt"></dialTemplate></span>
</code></pre></div></div>
<p>Der erste Eintrag sorgt dafür, dass Notrufnummern schneller gewählt werden.Bei allen anderen Nummern hat der Benutzer 5
Sekunden Zeit, um die nächste Ziffer einzugeben.</p>
<p>Die oben gelisteten Befehle lassen sich auch zur automatischen Wahl einsetzen. Es lässt sich so bspw. in einem großen
Geschäft ein unbeaufsichtigter Apparat anbringen, mit dem ein Kunde einen Kundenberater rufen kann.</p>
<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><TEMPLATE</span> <span class="na">match=</span><span class="s">""</span> <span class="na">timeout=</span><span class="s">"0"</span> <span class="na">rewrite=</span><span class="s">"**620"</span><span class="nt">/></span>
</code></pre></div></div>
<p>Fügt man dem obigen Befehl noch einen <code class="highlighter-rouge">line-</code> Befehl hinzu, kann man dieses Verhalten auf bestimmte Leitungen beschränken.
Der unter <code class="highlighter-rouge">line</code> festgelegte Wert muss natürlich wieder zur Hauptkonfiguration passen.</p>
<p><em>Quelle: Die oben angegebenen Konfigurationsoptionen wurden von
http://docs.acsdata.co.nz/asterisk-cisco/dial-template-xml.shtml übernommen.</em></p>
<p>Viel Spaß beim Basteln,
Andreas</p>andiLiebe Linuxfreunde! Unter der neuen Rubrik “Spotlight” möchte ich gelegentlich kurze Artikel über Dinge veröffentlichen, die mir neu sind oder die ich einfach nur Klasse finde. Heute also zum Thema Dial Template. Die folgenden Beispiele sind auf Cisco-IP-Phones bezogen.