<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux - AHA</title>
	<atom:link href="http://linux-aha.de/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://linux-aha.de/wordpress</link>
	<description>Kleine und große Linux AHAs</description>
	<lastBuildDate>Mon, 06 May 2013 08:27:01 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>RPM-Frühjahrsputz</title>
		<link>http://linux-aha.de/wordpress/2013/05/06/rpm-fruhjahrsputz/</link>
		<comments>http://linux-aha.de/wordpress/2013/05/06/rpm-fruhjahrsputz/#comments</comments>
		<pubDate>Mon, 06 May 2013 08:22:56 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[einfachso]]></category>
		<category><![CDATA[Systemmanagement]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[repo]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[system management]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1938</guid>
		<description><![CDATA[Lange habe ich eine Lösung gesucht, wie ich alte RPMs aus einem yum Repository, möglichst ohne viel Aufwand löschen kann, denn ein Repo mit mehr als 6000 RPMs nervt bei yum update&#8230; Und siehe da, die Lösung lag, wie so oft bei Linux Themen die ganze Zeit direkt vor meinen Füßen: rm -f $(repomanage --old [...]]]></description>
				<content:encoded><![CDATA[<p>Lange habe ich eine Lösung gesucht, wie ich alte RPMs aus einem yum Repository, möglichst ohne viel Aufwand löschen kann, denn ein Repo mit mehr als 6000 RPMs nervt bei yum update&#8230;</p>
<p>Und siehe da, die Lösung lag, wie so oft bei Linux Themen die ganze Zeit direkt vor meinen Füßen:</p>
<p><code>rm -f $(repomanage --old -k 2 myrepodir)</code></p>
<p>&#8230; behalte zu jedem RPM die zwei neuesten und lösche alle alten raus.</p>
<p>repomanage ist Bestandteil vom yum-utils RPM.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/05/06/rpm-fruhjahrsputz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk: Reanimation in Highspeed</title>
		<link>http://linux-aha.de/wordpress/2013/04/02/asterisk-reanimation/</link>
		<comments>http://linux-aha.de/wordpress/2013/04/02/asterisk-reanimation/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 06:40:05 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Hints]]></category>
		<category><![CDATA[ScriptHints]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[netzwerk]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1935</guid>
		<description><![CDATA[Ob das nun an der von mir genutzten Version liegt oder &#8211; und diese Vermutung habe ich &#8211; daran dass ein Nutzer irgendetwas &#8220;drückt&#8221; was dem Prozess das Genick bricht &#8211; es gibt hier und da einen Absturz des Asterisk Prozesses (meist Segfaults). Ich setze zur Zeit die Version 1.8.7 ein, plane jedoch auf 1.8.20 [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://linux-aha.de/wordpress/wp-content/uploads/2011/09/asterisk_project.png"><img class="aligncenter size-thumbnail wp-image-1372" alt="asterisk_project" src="http://linux-aha.de/wordpress/wp-content/uploads/2011/09/asterisk_project-150x99.png" width="150" height="99" /></a></p>
<p>Ob das nun an der von mir genutzten Version liegt oder &#8211; und diese Vermutung habe ich &#8211; daran dass ein Nutzer irgendetwas &#8220;drückt&#8221; was dem Prozess das Genick bricht &#8211; es gibt hier und da einen Absturz des Asterisk Prozesses (meist Segfaults). Ich setze zur Zeit die Version 1.8.7 ein, plane jedoch auf 1.8.20 zu gehen. Möglicherweise ist das Problem dann auch behoben.</p>
<h2>Und bis dahin?</h2>
<p>Ja, bis dahin muss das System irgendwie so konfiguriert sein, dass die Schäden bzw. die Außenwirkung recht klein gehalten wird. Nun könnte man ein Script schreiben, welches den Prozess prüft und ggf. neu startet. Oder das ganze an das Monitoring übergeben und über ein Event den Dienst vom Monitoring neu starten lassen. Alles möglich &#8230; aber meiner Meinung nach zu kompliziert und auch nicht Zielführend. Warum? Ich möchte, dass der Dienst SOFORT wieder gestartet wird. Das ganze über Monitoring zu machen (egal ob lokal oder remote) bedeutet, dass ich immer maximal eine Minute habe, bis dass das System den Ausfall bemerkt.</p>
<h2>So ähnlich wie &#8230;</h2>
<p>Es gibt bereits ein fertiges Script, welches so was in der Richtung macht wie ich es mir vorgestellt habe. Das ganze ist ein Wrapper um den Asterisk Prozess herum. Wrapper? Naja, ein einfaches Bash Script welches den Asterisk Prozess innerhalb eines Loops startet. Wird der Prozess beendet, startet er über den Bash Loop sofort wieder.</p>
<p>Das Problem dabei ist, dass &#8211; bei einem Problem &#8211; der Prozess immer und immer wieder gestartet wird. Fällt er beim Start auf die Nase, so wird er trotzdem immer und immer wieder gestartet. Am Ende kann das fatal sein.</p>
<h2>So hab ich das gemacht &#8230;</h2>
<p>Warum sich nicht vorhanden Mechanismen bedienen. Es gibt da was, das ist seit gefühlten 100 Jahren im Einsatz und macht seinen Dienst perfekt &#8211; ok, es wird zur Zeit so langsam abgelöst, aber das ist jetzt mal egal. Wovon ich spreche? Der Init Prozess.</p>
<p>Mit Hilfe der inittab ist es möglich Prozesse in definierten runlevel zu starten und &#8211; was uns interessiert &#8211; quasi zu überwachen. Der Init Prozess startet den Prozess und sobald dieser beendet wird, startet er ihn sofort wieder. Genau das brauchen wir, damit der Asterisk bei einem Crash sofort wieder zur Verfügung steht. Dabei sind dann natürlich die aktuellen Gespräche weg, jedoch kann sofort wieder telefoniert werden ohne dass jemand erst etwas tun muss oder ein Monitoring Prozess das ganze prüft.</p>
<h3>Wie sieht das nun in der inittab aus?</h3>
<p>Ganz einfach:</p>
<pre class="brush: bash; title: ; notranslate">

as:2:respawn:/usr/sbin/asterisk -f -U asterisk

</pre>
<p>Aber Vorsicht! Der Asterisk darf bei der Umstellung auf die Inittab nicht laufen. Ansonsten versucht der Init Prozess Asterisk zu starten, was nicht möglich ist. Er wird das ein paar Mal versuchen und dann eine Karenzzeit warten, bis er das ganze wieder versucht.</p>
<p>Nach der Änderung der inittab mit &#8220;init q&#8221; die inittab neu einlesen. Dabei wird dann der Prozess ggf. gestartet. Vorsicht ist auch geboten bei Wartungsarbeiten &#8211; man sollte daran denken, dass der Asterisk Prozess nicht einfach so gestoppt werden kann <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';-)' class='wp-smiley' />  Vorher die Zeile auskommentieren und über &#8220;init q&#8221; die inittab neu einlesen.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/04/02/asterisk-reanimation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>rsr &#8211; run script remote</title>
		<link>http://linux-aha.de/wordpress/2013/03/20/rsr/</link>
		<comments>http://linux-aha.de/wordpress/2013/03/20/rsr/#comments</comments>
		<pubDate>Wed, 20 Mar 2013 08:24:26 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Systemmanagement]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1681</guid>
		<description><![CDATA[Nicht selten stehe ich vor der Aufgabe Informationen von mehreren Servern zu sammeln oder &#8220;schnell mal&#8221; kleine Konfigurationsänderungen durchzuführen. Wenn die Anzahl der Systeme, die man betreut in die hunderte geht, artet das recht schnell in stumpfsinnige Arbeit aus. Vor langer Zeit habe ich mir ein kleines Tool namens rsr gestrickt, das ich vor kurzem [...]]]></description>
				<content:encoded><![CDATA[<p>Nicht selten stehe ich vor der Aufgabe Informationen von mehreren Servern zu sammeln oder &#8220;schnell mal&#8221; kleine Konfigurationsänderungen durchzuführen. Wenn die Anzahl der Systeme, die man betreut in die hunderte geht, artet das recht schnell in stumpfsinnige Arbeit aus.</p>
<p>Vor langer Zeit habe ich mir ein kleines Tool namens rsr gestrickt, das ich vor kurzem mit weiteren Features (inspiriert von <a href="http://sourceforge.net/projects/mussh/" title="mussh">mussh</a>) erweitert habe. Nun möchte ich es auch anderen zur Verfügung stellen und hoffe natürlich auf bugfixes und Verbesserungsvorschläge. <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';)' class='wp-smiley' /><br />
Es gibt zwar auch andere parallel ssh Tools, aber die haben mich nie wirklich glücklich gemacht. Immer hat etwas gefehlt.</p>
<h3>Das kann rsr</h3>
<ul>
<li>Skript oder einzelne Kommandos auf einer Liste von Hosts ausführen</li>
<li>Parallelität der Bearbeitung einstallbar (bis hin zu alle gleichzeitig)</li>
<li>Sortierte Ausgaben der entfernten Hosts anzeigen und/oder speichern sowie autoamtisches ausräumen</li>
<li>Zusammenfassung aufgetretener Fehler</li>
<li>Short- und Option mode</li>
<li>SSH Optionen als defaults mitgeben</li>
</ul>
<h3>Ein Beispiel</h3>
<pre class="brush: bash; title: ; notranslate">

pinky:/tmp/rsr # cat myhosts.txt
brain
snowball
billie
pharfignewton
pinky:/tmp/rsr # cat myscript.sh
#!/bin/sh
grep acl /etc/fstab
pinky:/tmp/rsr # rsr myscript.sh myhosts.txt
brain: /dev/system/root     /           ext3      acl               1 1
brain: LABEL=boot           /boot       ext2      acl,user_xattr    1 2
snowball: /dev/system/tmp     /tmp        ext3      acl              1 2
snowball: LABEL=boot          /boot       ext3      acl,user_xattr   1 2
billie: /dev/system/root     /           ext3      acl               1 1
billie: LABEL=boot           /boot       ext2      acl,user_xattr    1 2
billie: /dev/system/tmp      /tmp        ext3      acl               1 2
billie: /dev/system/usr      /usr        ext3      acl               1 2
billie: /dev/system/var      /var        ext3      acl               1 2

Errors occured on hosts:
pharfignewton.error_255:ssh: Could not resolve hostname pharfignewton: Name or service not known
pinky:/tmp/rsr #
</pre>
<p>In diesem Beispiel möchte ich einfach prüfen welche Server acls in der fstab enthalten (OK, ich gebs zu, reichlich sinnlos). Bei Host &#8220;pharfignewton&#8221; ist ein Fehler aufgetreten, was am Ende des Laufes ausgegeben wird.<br />
Alle anderen Ausgaben die das Skript auf den entfernten Servern erzeugt, werden auf der Console sortiert ausgegeben.</p>
<p>Hier habe ich den &#8220;short mode&#8221;, in dem nur der Skriptname und optional die Serverlistendatei angeben werden muss verwendet. Möchte man rsr nicht mit den default Werten ausführen versteht es auch im &#8220;Option mode&#8221; eine Menge Parameter.</p>
<h3>Die wichtigsten Paramenter</h3>
<p>-C &lt;script>: Skript, das ausgeführt werden soll.<br />
-c &lt;command>: einzelnes Kommando für den remote Host (kann mehrfach angegeben werden).<br />
-H &lt;hostlistfile>: Hostliste.<br />
-h &lt;hostname>: einzelner host (kann mehrfach angegeben werden).<br />
-m [n]: Anzahl der parallelen SSH Sitzungen. Wird [n] nicht angegeben werden alle Hosts gleichzeitig bearbeitet.<br />
-k [n]: Die Ausgaben werden in einem Verzeichnis, sortiert in &#8220;Host&#8221;-Ausgabedateien gespeichert. [n] gibt an, wieviele Läufe aufbewahrt werden. Wird für [n] nichts angegeben, werden Ausgaben älterer Läufe nicht gelöscht.</p>
<h3>Hier die ganze Usage</h3>
<pre>Usage:
   rsr [OPTIONS]  [-c cmd] [-C scriptfile]
   rsr &lt;script&gt; [&lt;hostfile&gt;]
            Short mode: run &lt;script&gt; on &lt;hostfile&gt; hosts.
            If &lt;hostfile&gt; not given use file "allhosts.txt".
   rsr --help
            for full help text

Send a command or a script to multiple hosts.

OPTIONS:
   --help          This text.
   -m [n]          Run concurrently on 'n' hosts at a time.
                   Use '0' (zero) for infinite. (Default if -m)
                   If option is not set then default is 10
   -i &lt;identity&gt; [identity ..]
                   Load an identity file.  May be used
                   more than once.
   -o &lt;ssh-args&gt;   Args to pass to ssh with -o option.
   -a              Force loading ssh-agent.
   -A              Do NOT load ssh-agent.
   -u              Unique.  Eliminate duplicate hosts. (Default)
   -U              Do NOT make host list unique.
   -P              Do NOT fall back to passwords on any host. This
                   will skip hosts where keys fail.
   -l &lt;login&gt;      Use 'login' when no other is specified with
                   hostname.
   -L &lt;login&gt;      Force use of 'login' name on all hosts.
   -s &lt;shell&gt;      Path to shell on remote host. (Default: bash)
   -t &lt;secs&gt;       Timeout setting for each session.
                   (requires openssh 3.8 or newer)
   -V              Print version info and exit.
OUTPUT ARGS:
   -d [n]          Verbose debug.  Prints each action, all hosts
                   and commands to be executed to STDERR. 'n' can
                   be from 0 to 2.
   -v [n]          Ssh debug levels.  Can be from 0 to 3.
   -q              No output unless necessary.
   -k [n]          Keep last 'n' host output directories (If set
                   without argument then all output dirs kept. If
                   this option is not set no output will be kept)
   -O &lt;dir&gt;        Use &lt;dir&gt; for host output directory
                   with timestamp
PROXY ARGS:
   -p [user@]&lt;host&gt;
                   Host to use as proxy.  (Must have rsr installed)
   -po &lt;ssh-args&gt;  Args to pass to ssh on proxy with -o option.
HOST ARGS:
   -h [user@]&lt;host&gt; [[user@]&lt;host&gt; ..]
                   Add a host to list of hosts.  May be
                   used more than once.
   -H &lt;file&gt; [file ..]
                   Add contents of file(s) to list of hosts.
                   Files should have one host per line.  Use
                   "#" for comments.
COMMAND ARGS:
If neither is specified, commands will be read from standard input.
   -c &lt;command&gt;    Add a command or quoted list of commands and
                   args to list of commands to be executed on
                   each host.  May be used more than once.
   -C &lt;file&gt; [file ..]
                   Add file contents to list of commands to be
                   executed on each host.  May be used more
                   than once.
</pre>
<h3>Download</h3>
<p><a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/03/rsr-2.0.tar.gz"><img src="http://linux-aha.de/wordpress/wp-includes/images/crystal/archive.png" alt="rsr-2.0.tar.gz" /><br />rsr-2.0.tar.gz</a></p>
<p>Bei Bedarf kann ich auch gerne ein SLES/RHEL RPM schnüren.</p>
<h3>Installation</h3>
<p>Da rsr lediglich ein Bash Skript ist, kann man es einfach irgendwo, am Besten aber in den $PATH legen.<br />
Achtung: Wird die -O Option nicht angegeben wird temporär ein Arbeitsverzeichnis im aktuellen Pfad angelegt. Man muss daher im aktuellen Verzeichnis Schreibrechte besitzen.</p>
<h3>Tipps:</h3>
<p>Sinnvoll wäre der ssh-agent, das Verteilen seines public keys und das Füllen der SSH known_hosts mit den Fingerprints aller Server. Wenn einem die Sicherheit und Fingerprints egal ist, kann auch eine entsprechende SSH Optionen für das Nichtbeachten der Fingerprints in den Defaults (im Skript) eingetragen werden. Anderfalls gibts viele, viele Fehlermeldungen!</p>
<p>Ich würde mich freuen, wenn rsr auch anderen Admins so viel Zeit und Stumpfsinnarbeit erspahren würde wie uns&#8230;</p>
<p>Vorschläge und Bugfixes gerne an mich!</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/03/20/rsr/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TFTP &#8220;file exists&#8221; Problem umschiffen</title>
		<link>http://linux-aha.de/wordpress/2013/03/04/tftp-file-exists-problem-umschiffen/</link>
		<comments>http://linux-aha.de/wordpress/2013/03/04/tftp-file-exists-problem-umschiffen/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 06:45:40 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[einfachso]]></category>
		<category><![CDATA[Hints]]></category>
		<category><![CDATA[Systemmanagement]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1841</guid>
		<description><![CDATA[TFTP ist relativ dämlich &#8211; was ihn für diverse Anwendungsfälle attraktiv macht. Ohne viel hin&#38;her mit Benutzerkonten oder ähnlichem kann man Dateien zur Verfügung stellen oder auch ablegen. Aus dem Grund wird TFTP gerne von Hardwareherstellern für Updates oder Bootkonfigurationen eingesetzt. Diverse Geräte lassen sich auch über diesen Mechanismus sichern. So die von uns für [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/02/Anonymous_Network.png"><img class="aligncenter  wp-image-1842" alt="Anonymous_Network" src="http://linux-aha.de/wordpress/wp-content/uploads/2013/02/Anonymous_Network-150x150.png" width="105" height="105" /></a></p>
<p style="text-align: left;">TFTP ist relativ dämlich &#8211; was ihn für diverse Anwendungsfälle attraktiv macht. Ohne viel hin&amp;her mit Benutzerkonten oder ähnlichem kann man Dateien zur Verfügung stellen oder auch ablegen. Aus dem Grund wird TFTP gerne von Hardwareherstellern für Updates oder Bootkonfigurationen eingesetzt.</p>
<p style="text-align: left;">Diverse Geräte lassen sich auch über diesen Mechanismus sichern. So die von uns für die Telefonanlage eingesetzten Patton Geräte als auch die Aastra DECT Basisstationen.</p>
<h2 style="text-align: left;">&#8220;file exists&#8221;</h2>
<p style="text-align: left;">Ein Problem bei TFTP &#8211; wenigstens bei einem der sich an die RFC hält &#8211; ist, dass es quasi kein überschreiben gibt. Liegt eine Datei auf dem Server, so kann sie nicht überschrieben werden. Entweder muss also das schreibende oder sichernde Gerät den Namen für die Datei ändern oder das ganze schlägt fehl. Was nun, wenn ich den Dateinamen nicht beeinflussen kann und dazu auch den Sicherungszeitpunkt nicht beeinflussen kann?</p>
<p style="text-align: left;">Genau das Problem hatte ich. Die Aastra DECT Sender sichern ihre Datenbank (Konfigurationsdatenbank) per TFTP. Die Datei hat im Namen zwar das Datum, jedoch keine Uhrzeit o.ä. . Die Datenbank wird gesichert sobald Änderungen an dem System vorgenommen werden &#8211; also keine feste Zeit. Am Ende bedeutet das, dass die Änderung von früh morgens gesichert wird und die Änderung eine Stunde später schlägt fehl da die Sicherungsdatei den gleichen Namen hat.</p>
<h2 style="text-align: left;">Elegant drumherum</h2>
<p style="text-align: left;">Spontan hatte ich nur eine Idee, die ich aber auch nicht wirklich schlecht finde. Mit &#8220;incron&#8221; (<a title="Incron – Ein Fileevent basierter Cron" href="http://linux-aha.de/wordpress/2010/02/01/incron-ein-fileevent-basierter-cron/">von Sascha vor längerer Zeit beschrieben</a>) &#8211; dem Filesystem Event Cron. incron kann so eingerichtet werden, dass er eine Aktion ausführt, sobald etwas in einem Pfad geschieht. Also sowas wie Datei erstellt, Datei gelöscht, Datei umbenannt &#8230;</p>
<p style="text-align: left;">Im Fall TFTP sieht die Konfiguration aus wie folgt (/etc/incron.d/rfpbackup):</p>
<p style="text-align: left;">
<pre class="brush: bash; title: ; notranslate">
 /srv/tftp/rfpBackup IN_CLOSE_WRITE /bin/mv $@/$# $@/sav-$#
 </pre>
</p>
<p style="text-align: left;">Als erstes das Verzeichnis welches beobachtet werden soll, dann das Event (IN_CLOSE_WRITE -&gt; nach dem schreiben) und am Ende der Befehl. Das einzige was ich hier mache ist die Datei umbenennen in sav-&lt;Originaldatei&gt;. Damit habe ich immer die letzte Sicherung und kann neue Sicherungen empfangen. Da innerhalb des Dateinamens das Datum enthalten ist, habe ich somit immer eine Sicherung pro Tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/03/04/tftp-file-exists-problem-umschiffen/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>simples XML Monitoring</title>
		<link>http://linux-aha.de/wordpress/2013/02/28/simples-xml-monitoring/</link>
		<comments>http://linux-aha.de/wordpress/2013/02/28/simples-xml-monitoring/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 09:02:57 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[einfachso]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Quickies]]></category>
		<category><![CDATA[ScriptHints]]></category>
		<category><![CDATA[Systemmanagement]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[icinga]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1835</guid>
		<description><![CDATA[XML ist ja wahnsinnig angesagt für alle möglichen Dinge. Ich selbst kann mich damit nicht so recht anfreunden &#8211; zumindest ist manuelles editieren immer ein Krampf. Ich habe meist mit Konfigurationsdateien in XML zu tun. So auch mit meinem Telefonprojekt. Die Snom Telefone nutzen für das Provisioning eine XML Datei, welche über einen Webserver abgerufen [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/02/file-icon-xml.png"><img class="wp-image-1836 aligncenter" alt="file-icon-xml" src="http://linux-aha.de/wordpress/wp-content/uploads/2013/02/file-icon-xml-150x150.png" width="90" height="90" /></a></p>
<p style="text-align: left;">XML ist ja wahnsinnig angesagt für alle möglichen Dinge. Ich selbst kann mich damit nicht so recht anfreunden &#8211; zumindest ist manuelles editieren immer ein Krampf. Ich habe meist mit Konfigurationsdateien in XML zu tun. So auch mit meinem Telefonprojekt. Die Snom Telefone nutzen für das Provisioning eine XML Datei, welche über einen Webserver abgerufen wird. Da ich die Konfiguration sehr dynamisch gemacht habe (Webfrontend etc.) wird auch die XML Konfig für die Telefone dynamisch erstellt. Diese Datei sollte sich unbedingt an den XML Standard halten, da ansonsten die Telefone mit dem ganzen nichts anfangen können (dabei habe ich schon die seltsamsten Fehler erlebt).</p>
<h2 style="text-align: left;">XML validieren</h2>
<p style="text-align: left;">Um XML zu validieren gibt es ein recht einfaches Tool unter Linux &#8211; xmllint. Einfach als Parameter eine XML Datei angeben und gut. xmllint kommt auch mit http Links zurecht &#8211; was mir ebenfalls gerade recht kommt <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':-)' class='wp-smiley' /> </p>
<h2 style="text-align: left;">Icinga Plugin</h2>
<p style="text-align: left;">Absolut simpel kann man das ganze nun in ein Icinga/Nagios Plugin verwandeln:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash

# validation of a remote XML File

# Ronny Becker, 02.2013

RET=&quot;`xmllint --noout $1 2&gt;/dev/null; echo $?`&quot;

case $RET in
 &quot;0&quot; )
 echo &quot;XML Validation OK&quot;
 exit 0
 ;;
 &quot;1&quot; )
 echo &quot;XML Validation NOT OK&quot;
 exit 2
 ;;
 * )
 echo &quot;unknown return code&quot;
 exit 3
 ;;
esac
</pre>
<p style="text-align: left;">Das ganze als command einbinden, als ersten Parameter bekommt das Plugin die remote Adresse (http://&#8230;) und fertig.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/02/28/simples-xml-monitoring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mein kleines backup Skript</title>
		<link>http://linux-aha.de/wordpress/2013/02/07/mein-kleines-backup-skript/</link>
		<comments>http://linux-aha.de/wordpress/2013/02/07/mein-kleines-backup-skript/#comments</comments>
		<pubDate>Thu, 07 Feb 2013 11:20:36 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[Hints]]></category>
		<category><![CDATA[Quickies]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1793</guid>
		<description><![CDATA[&#8220;Moment, bevor ich die Config ändere, noch schnell ne Sicherungskopie von der original Datei machen. cp yum.conf yum.conf-201302 ... .. äh, welches Datum haben wir heute? So ein mist, na dann eben cp yum.conf yum.conf-$(date +%Y%... Großes M oder kleines m? Ich kann&#8217;s mir einfach nicht merken, außerdem zuviel Tipparbeit. Da muss was einfacheres her.&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p>
&#8220;Moment, bevor ich die Config ändere, noch schnell ne Sicherungskopie von der original Datei machen. <code>cp yum.conf yum.conf-201302 ...</code> .. äh, welches Datum haben wir heute? So ein mist, na dann eben <code>cp yum.conf yum.conf-$(date +%Y%...</code> Großes M oder kleines m? Ich kann&#8217;s mir einfach nicht merken, außerdem zuviel Tipparbeit. Da muss was einfacheres her.&#8221;
</p>
<p>
.. und hier ist mein, zugegeben sehr einfaches aber wie ich finde recht nützliches bash-Skript für die Lösung des &#8220;Problems&#8221;.</p>
<p>Es hat den einfallsreichem Namen: backup     <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';)' class='wp-smiley' /> </p>
<p>Meine Kollegen und ich verwendes es mittlerweile immer und überall. Auch in anderen Skripten, die mit Dateiänderungen arbeiten, kommt backup mit der -k Option zum Einsatz.</p>
<h5>Kleines Beipiel</h5>
<p><code>[root@myhost etc]# backup yum.conf<br />
[root@myhost etc]# ls -l yum.conf*<br />
-rw-r--r-- 1 root root 346 May 22 2012 yum.conf<br />
-rw-r--r-- 1 root root 346 May 22 2012 yum.conf.20130207-084855<br />
[root@myhost etc]# backup<br />
usage: ./backup [-k &lt;num&gt; ] [-yv] file_to_backup [file_to_backup...]<br />
options:<br />
   -k keep last backups and remove older files<br />
   -y assume 'yes' if backup a directory<br />
   -v verbose<br />
[root@myhost etc]#<br />
</code></p>
<h5>Features</h5>
<ul>
<li>Sicherungskopien von mehreren Dateien und/oder Verzeichnissen erstellen</li>
<li>Automatisches löschen alter Sicherungen mit der -k Option (nach dem Erstellen von Neuen).</li>
</ul>
<h5>Download und Installation</h5>
<p>Einfach das Skript kopieren und irgendwo in den $PATH legen. Fertig.</p>
<p>Hier das backup Skript:</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
#
# Creates a copy with timestamp of the file(s) given in argument.
# Optionally removes old copies
#
# by sascha.nowak@dfs.de
#

KEEPNUM=0        # 0 = disabled

function printhelp() {
        echo &quot;usage:  $0 [-k &lt;num&gt;] [-yv] file_to_backup [file_to_backup...]&quot; &gt;&amp;2
        echo &quot;options:&quot; &gt;&amp;2
        echo &quot;      -k    keep last &lt;num&gt; backups and remove older files&quot; &gt;&amp;2
        echo &quot;      -y    assume 'yes' if backup a directory&quot; &gt;&amp;2
        echo &quot;      -v    verbose&quot; &gt;&amp;2
        exit 1
}

[ &quot;$1&quot; == &quot;&quot; ] &amp;&amp; printhelp

while getopts &quot;:k:yvh&quot; opt
do
        case $opt in
                k)
                        [ ${OPTARG:0:1} = &quot;=&quot; ] &amp;&amp; KEEPNUM=${OPTARG/=} || KEEPNUM=$OPTARG
                        ;;
                y)
                        YES=&quot;y&quot;
                        ;;
                v)
                        VERBOSE=&quot;v&quot;
                        ;;
                *)
                        printhelp
                        ;;
        esac
done

shift $(($OPTIND-1))

FILENAMES=$*

[[ $KEEPNUM == [0-9]* ]] || printhelp


# pre check
ERROR=0
for FILENAME in $FILENAMES; do

        if [ ! -e $FILENAME ]; then
                echo &quot;file not found or unsupported filetype: $FILENAME&quot; &gt;&amp;2
                ERROR=1
        fi
        if [ -L $FILENAME ]; then
                echo &quot;file is a symlink: $FILENAME&quot; &gt;&amp;2
                ERROR=1
        fi
        if [ -d $FILENAME -a $ERROR != 1 ] ; then
                if [ &quot;$YES&quot; != &quot;y&quot; ]; then
                        echo -n &quot;Do you want to backup the whole directory $FILENAME? [Y/n] &quot;
                        read YN
                        if [ &quot;$YN&quot; == 'n' ] ; then
                                echo OK, nothing backuped &gt;&amp;2
                                exit 1
                        else
                                YES=y
                        fi
                fi
        fi
done
if [ &quot;$ERROR&quot; == 1 ] ; then
        echo 'Operation stopped because of previous errors. Nothing backuped!' &gt;&amp;2
        exit 1
fi



# copy files
for FILENAME in $FILENAMES; do
        # evtl / am Ende entfernen
        FILENAME=$(echo $FILENAME | sed 's#/$##')
        cp -pr$VERBOSE $FILENAME $FILENAME.`date +%Y%m%d-%H%M%S`
        RETVAL=$?
        if [ &quot;$RETVAL&quot; -ne 0 ] ; then
                echo Copy error at file: $FILENAME &gt;&amp;2
                exit $RETVAL
        fi
done

# remove old files
if [ $KEEPNUM -gt 0 ]; then
        for FILENAME in $FILENAMES; do
                # evtl / am Ende entfernen
                FILENAME=$(echo $FILENAME | sed 's#/$##')
                I=0
                for FILE in `ls -dr $FILENAME.????????-??????`; do
                        I=$(( $I + 1 ))
                        [ $I -gt $KEEPNUM ] &amp;&amp; rm -rf$VERBOSE $FILE
                done
        done
fi
</pre>
<p>Für Ideen und Anmerkungen bin ich offen.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/02/07/mein-kleines-backup-skript/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Leipziger Allerlei fein püriert, oder: Viele Dokumente in .pdf umwandeln</title>
		<link>http://linux-aha.de/wordpress/2013/01/25/leipziger-allerlei-fein-puriert-oder-viele-dokumente-in-pdf-umwandeln/</link>
		<comments>http://linux-aha.de/wordpress/2013/01/25/leipziger-allerlei-fein-puriert-oder-viele-dokumente-in-pdf-umwandeln/#comments</comments>
		<pubDate>Fri, 25 Jan 2013 07:16:42 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[Hints]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1774</guid>
		<description><![CDATA[Das Problem hat bestimmt schon jeder mal gehabt. Man hat einen Haufen Dokumente in verschiedenen Formaten wie .doc, .odt, .ppt, .xls, &#8230; und möchte diese, beispielsweise für eine Präsentation oder einfach nur zum Verschicken, in einem Dateiformat (bspw. .pdf) vorliegen haben. Nur wie? Für Leute die Zeit haben &#8230; Wenn man Zeit hat, dann kann [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/documents.png"><img class="aligncenter size-medium wp-image-1775" title="documents" src="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/documents-300x74.png" alt="" width="300" height="74" /></a></p>
<p>Das Problem hat bestimmt schon jeder mal gehabt. Man hat einen Haufen Dokumente in verschiedenen Formaten wie .doc, .odt, .ppt, .xls, &#8230; und möchte diese, beispielsweise für eine Präsentation oder einfach nur zum Verschicken, in einem Dateiformat (bspw. .pdf) vorliegen haben. Nur wie?</p>
<h2>Für Leute die Zeit haben &#8230;</h2>
<p>Wenn man Zeit hat, dann kann man einfach jede Datei in LibreOffice öffnen und dann als .pdf exportieren.</p>
<h2>&#8230; für die anderen</h2>
<p>Man kann durchaus auch mit LibreOffice auf der CLI arbeiten. Für unser Problem würde der Befehl entsprechend so aussehen:</p>
<pre class="brush: plain; title: ; notranslate">

libreoffice --headless --invisible --nologo --convert-to pdf *.{doc,docx,odp,odt,ppt,pptx,&lt;wbr&gt;xls,xlsx}

</pre>
<p>Aber Achtung! Man sollte bei LibreOffice vorher einmalig unter &#8220;Datei&#8221;-&gt;&#8221;Exportieren als PDF..&#8221;, beim Reiter &#8220;Allgemein&#8221; die Option PDF/A-1a aktivieren. Die so erzeugten PDFs eignen sich besser für die Archivierung und die Darstellung ist besser, da benötigte Schriftarten gleich mit eingebettet werden. Habe leider noch nicht herausgefunden, wie man das Verhalten ohne GUI beeinflussen kann.</p>
<p><a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/serviert_thomas.png"><img class="alignright  wp-image-1782" title="serviert_thomas" src="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/serviert_thomas.png" alt="" width="92" height="74" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/01/25/leipziger-allerlei-fein-puriert-oder-viele-dokumente-in-pdf-umwandeln/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Startstecker: Wie macht Ihr&#8217;s Euch?</title>
		<link>http://linux-aha.de/wordpress/2013/01/22/startstecker-wie-macht-ihrs-euch/</link>
		<comments>http://linux-aha.de/wordpress/2013/01/22/startstecker-wie-macht-ihrs-euch/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 12:50:56 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[einfachso]]></category>
		<category><![CDATA[Quickies]]></category>
		<category><![CDATA[Systemmanagement]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1761</guid>
		<description><![CDATA[&#8220;Damals&#8221; musste man immer eine CD brennen um die neueste Distribution auszuprobieren. Das hat &#8211; das herunterladen übrigens auch &#8211; immer lange gedauert und war im vergleich zu heute auch weniger bequem. Dann kamen die wiederbeschreibbaren CDs. Damit wurde schon mal der Müll reduziert &#8211; in der Theorie. Denn diese waren nicht von jedem Laufwerk lesbar und [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/usb-creator_big.png"><img class="aligncenter size-full wp-image-1763" title="usb-creator_big" src="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/usb-creator_big.png" alt="" width="115" height="115" /></a></p>
<p>&#8220;Damals&#8221; musste man immer eine CD brennen um die neueste Distribution auszuprobieren. Das hat &#8211; das herunterladen übrigens auch &#8211; immer lange gedauert und war im vergleich zu heute auch weniger bequem. Dann kamen die wiederbeschreibbaren CDs. Damit wurde schon mal der Müll reduziert &#8211; in der Theorie. Denn diese waren nicht von jedem Laufwerk lesbar und teurer <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':-)' class='wp-smiley' /> </p>
<h2>Alles wird gut &#8230;</h2>
<p>Mittlerweile sind USB Sticks der Standard als Installationsmedium. Wenn auch nicht bei jedem Laptop ein USB Stick beiliegt oder auch andere Software oft noch als CD zu kaufen ist, so hat sich innerhalb der IT der USB Stick als Medium für Installationsmedien gegen die CD überwiegend durchgesetzt. Schon lange her, dass ich mir für eine Installation eine CD gebrannt habe &#8230;</p>
<h2>&#8230; aber wie?</h2>
<p style="text-align: center;">Die Frage die nun den ein oder anderen interessieren wird ist, wie man denn einen solchen Stick erstellt!?! Es gibt &#8211; und wir sprechen nur von Linux &#8211; einen Haufen Tools für diese Aufgabe. Eines der bekanntesten GUI-Tools ist wahrscheinlich <a title="Unetbootin Homepage" href="http://unetbootin.sourceforge.net/" target="_blank">Unetbootin</a>. Unetbootin bietet beispielsweise auch an, das gewünschte .iso der Distribution selbst herunterzuladen. Des Weiteren gibt es Optionen wie ein persistentes Home. Spielt man mit einer Live CD, so können Daten erstellt und Änderungen gemacht werden, die auf dem USB Stick verbleiben und beim nächsten Start wieder zu Verfügung stehen.<a href="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/liveusb-creator.png"><img class="size-medium wp-image-1764 aligncenter" title="liveusb-creator" src="http://linux-aha.de/wordpress/wp-content/uploads/2013/01/liveusb-creator-300x293.png" alt="" width="300" height="293" /></a></p>
<p>Der <a title="Fedora LiveUSBCreator" href="https://fedorahosted.org/liveusb-creator/" target="_blank">liveusb-creator</a> von Fedora hat einen vergleichbaren Funktionsumfang wie Unetbootin, fühlt sich allerdings im Fedoraumfeld um einiges wohler. Beide Programme sind übrigens auch für das gekachelte Badezimmer OS verfügbar. <span style="font-size: 13px; line-height: 19px;">Das sind die meiner Meinung nach am meisten bekannten GUI Tools. Doch wie das unter Linux so ist, kann man auch diese Aufgabe recht einfach über die CLI lösen. Und wie ich finde sogar einfacher.</span></p>
<p>Das Tool &#8220;dd&#8221; sollte ein Begriff sein. Auch damit kann man einen bootbaren USB Stick erstellen. Der Befehl ist simpel:</p>
<pre class="brush: bash; title: ; notranslate">

dd if=/path/to/iso/image.iso of=/dev/usbdevice (bspw. sdc)

</pre>
<p>fertig.</p>
<h2>Mein Favorit</h2>
<p>Mein Favorit ist dd. Nicht weil ich ein CLI Junkie bin, sondern weil es damit ein Problem einfach nicht gibt &#8211; und das ist folgendes: Unetbootin erstellt einen eigenen Bootloader auf dem Stick und sucht innerhalb des .iso Files nach dessen Bootloader. Dieser wird analysiert und die Einträge werden dann soweit möglich übernommen. Das funktioniert leider nicht immer so gut. Dadurch fehlen öfters mal Einträge wie z.B. der Booteintrag um ein Rettungssystem zu starten oder ähnliches.</p>
<p>Bei dem Fedora Tool sieht das ganze nicht anders aus. Es funktioniert am besten mit Fedora, RHEL oder CentOS Images. Bei anderen gibt es ebenfalls das ein oder andere Mal Probleme.</p>
<p>Bisher keine Probleme hatte ich, wenn ich dd benutzt habe. Es bootet der Bootloader des .iso Images ohne Veränderungen und es stehen entsprechend alle Menüeinträge zur Verfügung.</p>
<p>Einen Nachteil hat die Sache mit dd natürlich. Es befindet sich im Gegensatz zu den anderen Tools kein &#8220;normales&#8221; Filesystem auf dem Stick und die Partitionstabelle ist auch nicht so, wie man es von einem Stick erwarten würde. Ein persistentes Home, wie es von den Tools angeboten wird, wird damit nicht so einfach funktionieren. Da muss man sich eben die Frage stellen, ob man das möchte bzw. braucht. Ich benötige meistens einfach nur ein Installationsmedium zur Installation oder zum Test und das sollte funktionieren.</p>
<h2>Was nutzt ihr?</h2>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/01/22/startstecker-wie-macht-ihrs-euch/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Patton analog SmartNode: Fax bitte redundant</title>
		<link>http://linux-aha.de/wordpress/2013/01/21/patton-analog-smartnode-fax-bitte-redundant/</link>
		<comments>http://linux-aha.de/wordpress/2013/01/21/patton-analog-smartnode-fax-bitte-redundant/#comments</comments>
		<pubDate>Mon, 21 Jan 2013 09:34:46 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[einfachso]]></category>
		<category><![CDATA[Hints]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[auto config]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1756</guid>
		<description><![CDATA[Konfigurationsbeispiele für Patton Geräte sind relativ schwer im Netz zu finden. Daher möchte ich hier einen weiteren Tipp platzieren. Fax redundant? Wer braucht denn sowas? Ein redundantes Fax? Also ich denke das ist nicht wirklich selten. Was macht man im Büro, wenn ein zentrales Faxgerät defekt ist? Natürlich versucht man für Ersatz zu sorgen, was [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://linux-aha.de/wordpress/wp-content/uploads/2011/09/asterisk_project.png"><img class=" wp-image-1372 aligncenter" title="asterisk_project" src="http://linux-aha.de/wordpress/wp-content/uploads/2011/09/asterisk_project.png" alt="" width="157" height="99" /></a></p>
<p style="text-align: left;">Konfigurationsbeispiele für Patton Geräte sind relativ schwer im Netz zu finden. Daher möchte ich hier einen weiteren Tipp platzieren.</p>
<h2 style="text-align: left;">Fax redundant? Wer braucht denn sowas?</h2>
<p style="text-align: left;">Ein redundantes Fax? Also ich denke das ist nicht wirklich selten. Was macht man im Büro, wenn ein zentrales Faxgerät defekt ist? Natürlich versucht man für Ersatz zu sorgen, was jedoch nicht immer möglich ist, bzw. auch zuerst einmal seine Zeit braucht. Besser finde ich es, wenn ein defektes Fax einfach ausgeschaltet oder abgezogen werden kann und die Faxe einfach an einem anderen &#8211; vorher definierten &#8211; Faxgerät ankommen.</p>
<h2 style="text-align: left;">Schlagwort: Distribution Group</h2>
<p style="text-align: left;">Wir sprechen hier von Geräten der Firma Patton (<a title="Patton Homepage" href="http://www.patton.com" target="_blank">www.patton.com</a>) und im speziellen von analog Gateways (z.B. SmartNode 4324).</p>
<p style="text-align: left;">Eine Distribution Group kann für diverse Anwendungsfälle herangezogen werden. Beispielsweise wenn mehrere Telefone gleichzeitig signalisieren sollen oder wenn &#8211; wie unserem Beispiel &#8211; erst eines und dann ein anderes klingeln soll. Eine solche DG ist über das Webfrontend schnell eingerichtet und auch nicht wirklich eine Herausforderung <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';-)' class='wp-smiley' />  Allerdings &#8230; Bei der Portkonfiguration wird die Nummer des Ports gesetzt &#8211; die sog. &#8220;subscriber-number&#8221;. Ist diese gesetzt, so empfängt dieser Port lediglich Anrufe für diese entsprechende Nummer. Was passiert nun wenn der Anruf auf die zweite Nummer innerhalb der DG geschickt wird? Die Zielnummer stimmt nicht mehr &#8211; der Anruf wird nicht beantwortet.</p>
<p style="text-align: left;">Daher ist es notwendig über ein &#8220;routing-table&#8221; und eine Funktion die Zielnummer vor der Weiterleitung umzuschreiben. Für die Nummer 105 (Zielnummer 1) und als Backup die Nummer 321 sieht das ganze dann z.B. so aus:</p>
<pre class="brush: plain; title: ; notranslate">
# das standard routing table
# die route zeigt nicht mehr auf ein Interface, sondern auf die
# Distribution Group
routing-table called-e164 RT_LOCAL
  route 105 dest-service DG_redundant_105

# das spezielle routing-table und die mapping-table
# um die Nummer von Ziel 105 auf Ziel 321 umzuschreiben
routing-table called-e164 RT_FAX_REDUNDANT_105
  route default dest-interface FXS_0_6 MAP_REDUNDANT_105

mapping-table called-e164 to called-e164 MAP_REDUNDANT_105
  map default to 321

# die Distribution Group, dort wird zuerst auf das eigentliche Ziel
# und dann auf die routing-table verwiesen
service distribution-group DG_redundant_105
  timeout 7
  min-concurrent 1
  max-concurrent 1
  route call 1 dest-interface FXS_0_3
  route call 2 dest-table RT_FAX_REDUNDANT_105
</pre>
<p>Ab dem zweiten Ziel kann das ganze natürlich auch x-mal gemacht werden. Für weitere Ziele muss dann entsprechend ein routing-table und ein mapping-table angelegt werden.</p>
<p>Ich hoffe das ganze ist verständlich &#8211; falls nicht einfach fragen <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/01/21/patton-analog-smartnode-fax-bitte-redundant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACPI Probleme gehören der Vergangenheit an &#8230; Denkste !!!</title>
		<link>http://linux-aha.de/wordpress/2013/01/16/acpi-probleme-gehoren-der-vergangenheit-an-denkste/</link>
		<comments>http://linux-aha.de/wordpress/2013/01/16/acpi-probleme-gehoren-der-vergangenheit-an-denkste/#comments</comments>
		<pubDate>Wed, 16 Jan 2013 14:43:16 +0000</pubDate>
		<dc:creator>Ronny</dc:creator>
				<category><![CDATA[Systemmanagement]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[kleinigkeiten]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[tipps]]></category>

		<guid isPermaLink="false">http://linux-aha.de/wordpress/?p=1751</guid>
		<description><![CDATA[Früher, ja da gab es das oft. Eine Installation auf recht neuer Hardware erforderte den Kernelparameter &#8220;acpi=off&#8221;, damit die Installation durchgeführt werden konnte. Ansonsten wurden teils Festplatten nicht erkannt oder es gab die wundersamsten Probleme. Dass ich das letzte Mal diesen Parameter für eine Installation benötigt habe ist allerdings schon recht lange her. BIS HEUTE&#8230; [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://linux-aha.de/wordpress/wp-content/uploads/2010/02/cry.png"><img class=" wp-image-762 aligncenter" title="black_smilie_cry" src="http://linux-aha.de/wordpress/wp-content/uploads/2010/02/cry.png" alt="" width="128" height="128" /></a></p>
<p style="text-align: left;">Früher, ja da gab es das oft. Eine Installation auf recht neuer Hardware erforderte den Kernelparameter &#8220;acpi=off&#8221;, damit die Installation durchgeführt werden konnte. Ansonsten wurden teils Festplatten nicht erkannt oder es gab die wundersamsten Probleme. Dass ich das letzte Mal diesen Parameter für eine Installation benötigt habe ist allerdings schon recht lange her.</p>
<h1 style="text-align: left;">BIS HEUTE&#8230;</h1>
<p style="text-align: left;">Heute hab ich ihn wiedereinmal gebraucht. Ja. Nachdem ich einen Tag lang das Problem gesucht habe.</p>
<p style="text-align: left;">Neue HP DL380G7 Server wurden geliefert und sollten installiert werden. Ein löbliches Debian (6.0.6) sollte sich dort heimisch fühlen. Schon das erste Menü des Installers machte mich nachdenklich. Normalerweise kann man aus allen möglichen Sprachen auswählen &#8211; dort stand aber lediglich C (no localization) und English. Sonst nix. Dabei ging dann der halbe Tag drauf, da ich gedacht habe das Image ist defekt. Neues geladen &#8211; wieder nix. Auf einem anderen Rechner geladen und auf den Stick gepumpt &#8211; nix. Egal, einfach mal so versuchen &#8230; weiter geht&#8217;s. Dann wollte das System Firmware nachziehen &#8230; auch diese auf den Stick gemacht und wieder auf&#8217;s Neue gebootet &#8230;</p>
<h3 style="text-align: left;">Zwischenruf</h3>
<p style="text-align: left;">Nur als Zwischeninformation. Die Rechner heute werden zwar immer schneller, jedoch brauchen sie immer länger bis die Initialisierung durch ist. Das dauert durchaus 5 Minuten und länger. Gefühlt wird das mit jedem weiteren Mal natürlich immer noch mehr <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':-)' class='wp-smiley' /> </p>
<h3 style="text-align: left;">Zwischenruf fertig</h3>
<p style="text-align: left;">Die Installation lief durch. Ohne weitere Probleme. Nach dem ersten reboot wollte ich mich dann einloggen. Nada. Das root Passwort welches ich während der Installation vergeben hatte wurde nicht angenommen. Naja, es wurde ja zweimal eingegeben. Tippfehler würde ich ausschließen &#8211; es ging einfach nicht.</p>
<p style="text-align: left;">Da mir das Problem mit der Sprachauswahl nicht aus dem Kopf ging wollte ich weiter testen. Auf einem anderen Server &#8211; allerdings ein G6 &#8211; lief das ganze richtig. Im Bios war auch nichts zu finden was irgendwie Sinn machen würde oder wo ich mir vorstellen konnte, dass Probleme dadurch entstehen.</p>
<p style="text-align: left;">Am Ende hab ich mich dann an den acpi Parameter für den Kernel erinnert. Da ich eh keinen Rat mehr wusste hab ich diesen dann ausprobiert und siehe da &#8211; es geht!! Diesen Parameter hab ich schon ewig nicht mehr gebraucht. Und warum das ganze sich so äußerte kann ich auch nicht wirklich erklären. Ich möchte es hier dokumentieren, damit vielleicht jemand anderes nicht so lange suchen muss <img src='http://linux-aha.de/wordpress/wp-content/plugins/tango-smilies/tango/face-wink.png' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://linux-aha.de/wordpress/2013/01/16/acpi-probleme-gehoren-der-vergangenheit-an-denkste/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
