Veröffentlichungen

Update XenServer von 5.5 auf 5.6 im Pool

Wenn man XenServer upgrade möchte, muss man mehrere Schritte befolgen, die in den Manuels von Citrix erläuter sind. Ich möchte hier die Schritte kurz zusammenfassen und zusätzlich ein Ansatz für eventuelle Fehler geben.

Die Schritte müssen wie folgt erledigt werden:

  1. Update des XenCenters auf die neue Version
  2. Herunterfahren den Pool-Masters (wichtig nicht in den Maintance-Modus!)
  3. Upgrade des Pool-Masters
  4. Neustart des Pool-Masters
  5. Herunterfahren des ersten Slaves
  6. Upgrade des Slaves
  7. Neustart des Slaves

Wenn es im Punkt 4 Fehler gibt, dass keine IP-Adresse, Version usw nach dem Neustart angezeigt wird, muss der Master erneut ausgeschaltet werden. Im nächsten Schritt muss man heraus finden, wer der aktuelle Master ist (dieser wurde im Schritt 2 automatisch von den XenServers ausgehandelt). Nachdem dies geschehen ist, muss dieser “neue” Master auf die aktuelle Version gebracht werden. Dies geschieht auf dem normalen Wege. Man startet den Server durch und bootet von CD. Als Installationstyp wählt man “Upgrade XenServer 5.5″. Ist die Installation abgeschlossen, muss man den alten Master, der vor dem Upgrade-Prozess Master war, starten und nach dem dieser gestartet ist, den “neuen” Server. Nun dauert es wenige Sekunden bis die beiden Server sich abgesprochen haben. In meinem Fall war der alte Master nach dem Start im Maintance-Modus und der zweiter Server Master. Ich habe also den ersten Server wieder aus dem Maintance-Modus geholt und nachträglich den ersten Server wieder zum Pool-Master gemacht.

Typo3 Kalender ListView

Wenn man Typo3 mit der Extension cal im Einsatz hat und gerne eine Liste an Terminen anzeigen möchte, so erhält man unter der Kategorie meist die Ausgabe “Category: A,B,C” wobei A, B, C die Kategorien sind. Möchte man nun die Liste tabelarisch darstellen, muss man das Template sowie einige Änderungen TypoScript anpassen.

Unter Template gibt es im TypoScript-Objekt-Browser unter folgendem Tree plugin.tx_cal_controller.view.list.event.location.dataWrap kann man die Vorangestellte Beschreibung entfernen.

<div>%%%CATEGORY%%%: |</div>

Diesen Eintrag ändert in

|

Zusätzlich wird ein neues Template unter fileadmin/templates/kalender.tmpl:

<!–list.tmpl–>
<!– ###LIST_DAY_WRAPPER### begin –>
<dt><hr></dt>
<dd> — Event —</dd>
<!– ###LIST_DAY_WRAPPER### end –>

<!– ###LIST_WEEK_WRAPPER### begin –>
<dt><hr></dt>
<dd> — Week —</dd>
<!– ###LIST_WEEK_WRAPPER### end –>

<!– ###LIST_MONTH_WRAPPER### begin –>
<dt><hr></dt>
<dd> — Month —</dd>
<!– ###LIST_MONTH_WRAPPER### end –>

<!– ###LIST_TEMPLATE### begin –>

<!– ###PAGEBROWSER### begin –>
<p>
###PAGEOF###  ###PAGES###  ###PREVIOUS### ###NEXT###
</p>
<!– ###PAGEBROWSER### end –>

<table>
<thead>
<tr>
<th>&nbsp;</th>
<th>Datum</th>
<th>Beschreibung</th>
<th>Organisator</th>
<th>Ort</th>
</tr>
</thead>
<tbody>
<!– ###PRE_LIST_TEMPLATE### begin –>
<tr>
<!– ###PRE_LIST_TEMPLATE### end –>
<!– ###LIST### begin –>

<!– ###LIST### end –>
<!– ###POST_LIST_TEMPLATE### begin –>
</tr>
<!– ###POST_LIST_TEMPLATE### end –>
</tbody>
</table>

<!– ###PAGEBROWSER### begin –>
<p>
###PAGEOF###  ###PAGES###  ###PREVIOUS### ###NEXT###
</p>
<!– ###PAGEBROWSER### end –>
<!– ###LIST_TEMPLATE### end –>
<!–/list.tmpl–>

Zusätzlich wird ein weiteres Template unter fileadmin/templates/event.tmpl

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>Calendar event example template</title>
</head>

<body>

<h1>CALENDAR EVENT TEMPLATE</h1>
<h2>EXAMPLE</h2>

<br />
<pre>

<strong>Common markers:</strong>
These are substituted in the event- and list-view templates:

<em>Markers:</em>

EDIT_LINK – According to the rights the edit and/or delete icon will be displayed
TITLE – The event title
STARTDATE – The startdate of the event parsed through “view.{view}.startdate_stdWrap” or if not available through “view.{view}.dateFormat”
ENDDATE – The enddate of the event parsed through “view.{view}.enddate_stdWrap” or if not available through “view.{view}.dateFormat”
STARTTIME – The starttime of the event parsed through “view.{view}.starttime_stdWrap” or if not available through “view.{view}.timeFormat”
ENDTIME – The endtime of the event parsed through “view.{view}.endtime_stdWrap” or if not available through “view.{view}.timeFormat”
ORGANIZER – The event organizer parsed through “view.{view}.organizer_stdWrap” if available or a link to the organizer-view if in allowedViews or view.organizer.organizerViewPid has been set
LOCATION – The event location parsed through “view.{view}.location_stdWrap” if available or a link to the location-view if in allowedViews or view.location.locationViewPid has been set
DESCRIPTION – The event description parsed through “view.{view}.description_stdWrap”
DESCRIPTION_STRIPTAGS – The event description parsed through “view.{view}.description_stdWrap” and being stipped of all tags afterwards
IMAGE – The event image(s) wrapped by “view.event.image_stdWrap”,
ATTACHMENT – The event attachment: File wrapped by “view.event.attachment_stdWrap.wrap”, “view.event.attachmentHeader_stdWrap” and “view.event.attachment”
MORE_LINK – Link to the ‘full’ event-view if the current view is a preview
<br />
Further markers are possible, condition: the markername has to be the same as a field in tx_cal_event. E.g. UID or PID. An according stdWrap can also be used: view.{view}.uid_stdWrap or view.{view}.pid_stdWrap

<em>Event Language Markers (see controller/locallang.xml):</em>
HEADING – The heading of the page -> l_event
TITLE_LABEL – The title label -> l_event_title
STARTDATE_LABEL – The startdate label -> l_event_startdate
ENDDATE_LABEL – The enddate label -> l_event_enddate
STARTTIME_LABEL – The startdate label -> l_event_starttime
ENDTIME_LABEL – The endtime label -> l_event_endtime
ORGANIZER_LABEL – The organizer label -> l_event_organizer
LOCATION_LABEL – The location label -> l_event_location
DESCRIPTION_LABEL – The description label -> l_event_description
ATTACHMENT_LABEL – The attachment label -> l_event_attachment
<br />
Further markers are possible, condition: the markername has to end with “_LABEL”. E.g. PID_LABEL will be replaced by l_event_pid form the controller/locallang.xml

<em>Subparts:</em>

</pre>

<br /><br /><br /><br /><hr />
<br />
<h3>TEMPLATE_PHPICALENDAR_EVENT</h3>
<em>This is the template for the standard calendar event.</em>
<br />
<br />
<br />
<br />

<!–###TEMPLATE_PHPICALENDAR_EVENT### begin –>
<!–phpicalendar_event.tmpl–>
<h1>###HEADING###</h1>
###EDIT_LINK###
###TITLE###
###STARTDATE###
###ENDDATE###
###STARTTIME###
###ENDTIME###
###ORGANIZER###
###LOCATION###
###DESCRIPTION###
###IMAGE###
###ATTACHMENT###
###ATTENDEE###
<!– ###ICS_LINK### start –><img src=”###IMG_PATH###/ics.gif” border=”0″/><!– ###ICS_LINK### end –>
###MORE_LINK###

<!– ###SUBSCRIPTION### start –>
<div id=”monitor_event”>
<!–###NOTLOGGEDIN### start–>
If you are logged in, you can set up monitoring for this event.
<!–###NOTLOGGEDIN### end–>
<!–###NOTLOGGEDIN_NOMONITORING### start–>
<h1>###NOTLOGGEDIN_NOMONITORING_HEADING###</h1>
###L_CAPTCHA_START_SUCCESS###
<form name=”tx_cal_controller” id=”tx_cal_controller_subscribe” method=”post” action=”###ACTIONURL###”>
###L_ENTER_EMAIL###
<input type=”text” size=30 name=”tx_cal_controller[email]” value=”"><br /><br />
###L_CAPTCHA_TEXT###<br />
###CAPTCHA_TEXT###&nbsp;&nbsp;&nbsp;
###CAPTCHA_SRC###<br />
<input type=”submit” value=”###NOTLOGGEDIN_NOMONITORING_SUBMIT###” />
</form>
<!–###NOTLOGGEDIN_NOMONITORING### end–>
<!–###NOTLOGGEDIN_MONITORING### start–>
<h1>###NOTLOGGEDIN_MONITORING_HEADING###</h1>
###L_CAPTCHA_STOP_SUCCESS###
<form name=”tx_cal_controller” id=”tx_cal_controller_unsubscribe” method=”post” action=”###ACTIONURL###”>
###L_ENTER_EMAIL###
<input type=”text” size=30 name=”tx_cal_controller[email]” value=”"><br /><br />
###L_CAPTCHA_TEXT###<br />
###CAPTCHA_TEXT###&nbsp;&nbsp;&nbsp;
###CAPTCHA_SRC###<br />
<input type=”submit” value=”###NOTLOGGEDIN_MONITORING_SUBMIT###” />
</form>
<!–###NOTLOGGEDIN_MONITORING### end–>
<!–###LOGGEDIN_NOMONITORING###–>
<form>
Do you want to be notified, on event changes? <input type=”hidden” id=”userid” value=”1″/> <input type=”submit” value=”monitor” />
</form>
<!–###LOGGEDIN_NOMONITORING###–>
<!–###LOGGEDIN_MONITORING###–>
<form>
Stop monitoring this event? <input type=”hidden” id=”userid” value=”1″/> <input type=”submit” value=”Stop monitoring” />
</form>
<!–###LOGGEDIN_MONITORING###–>

</div>
<!– ###SUBSCRIPTION### end –>

<!–/phpicalendar_event.tmpl–>
<!–###TEMPLATE_PHPICALENDAR_EVENT### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_ALLDAY### begin –>
<div><!– ###EVENT_LINK### start –>###TITLE###<!– ###EVENT_LINK### end –></div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_ALLDAY### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_DAY### begin –>
class=”eventbg2 ###BODYSTYLE###”>
<div>
<div>###STATUS###<b>###STARTTIME### – ###ENDTIME###</b></div>
<div>###EDIT_LINK###<!– ###EVENT_LINK### start –>###TITLE###<!– ###EVENT_LINK### end –></div>
</div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_DAY### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_WEEK### begin –>
class=”eventbg2 ###BODYSTYLE###”>
<div>
<div>###STATUS###<b>###STARTTIME### – ###ENDTIME###</b></div>
<div>###EDIT_LINK###<!– ###EVENT_LINK### start –>###TITLE###<!– ###EVENT_LINK### end –></div>
</div>

<!–###TEMPLATE_PHPICALENDAR_EVENT_WEEK### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH### begin –>
<div><span>&bull;</span><span><!– ###EVENT_LINK### start –>###STARTTIME###: ###TITLE###<!– ###EVENT_LINK### end –></span>###EDIT_LINK###</div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_ALLDAY### begin –>
<div><span>&bull;</span><span><!– ###EVENT_LINK### start –>###TITLE###<!– ###EVENT_LINK### end –></span>###EDIT_LINK###</div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_ALLDAY### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_MINI### begin –>
<span title=”###STARTTIME######TITLE###”>&bull;</span>
<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_MINI### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_MINI_ALLDAY### begin –>
<span title=”###STARTTIME######TITLE###”>&bull;</span>
<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_MINI_ALLDAY### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_YEAR### begin –>
<div><!– ###EVENT_LINK### start –><span>&bull;</span><!– ###EVENT_LINK### end –></div><br />
<!–###TEMPLATE_PHPICALENDAR_EVENT_YEAR### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_PREVIEW### begin –>
<h1>###HEADING###</h1>
###EDIT_LINK###

###TITLE###
###STARTDATE###
###ENDDATE###
###STARTTIME###
###ENDTIME###
###DESCRIPTION###
###MORE_LINK###

<!–###TEMPLATE_PHPICALENDAR_EVENT_PREVIEW### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_TOMORROW### begin –>
<div><span>&bull;</span><span>###TITLE###</span></div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_TOMORROW### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_ORGANIZER### begin –>
<br />###STARTDATE### <!– ###EVENT_LINK### start –>###TITLE###<!– ###EVENT_LINK### end –>
<!–###TEMPLATE_PHPICALENDAR_EVENT_ORGANIZER### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_LOCATION### begin –>
<br />###STARTDATE### <!– ###EVENT_LINK### start –>###TITLE###<!– ###EVENT_LINK### end –>
<!–###TEMPLATE_PHPICALENDAR_EVENT_LOCATION### end –>

<!– ###TEMPLATE_PHPICALENDAR_EVENT_LIST_ODD### start –>
<td>
###CATEGORY###
</td>
<td>
###STARTDATE###
</td>
<td>
###DESCRIPTION###
</td>
<td>
###ORGANIZER###
</td>
<td>
###LOCATION###
</td>
<!– ###TEMPLATE_PHPICALENDAR_EVENT_LIST_ODD### end –>
<!– ###TEMPLATE_PHPICALENDAR_EVENT_LIST_EVEN### start –>
<dt>
<!– ###EVENT_LINK### start–>###IMAGE### ###TITLE###<!– ###EVENT_LINK### end–><br />
###STARTDATE### ###ENDDATE### <span>###STARTTIME### ###ENDTIME###</span><br />
<br /><span>###CATEGORY_LINK###</span>
</dt>
<dd>###DESCRIPTION###</dd>
<!– ###TEMPLATE_PHPICALENDAR_EVENT_LIST_EVEN### end –>

<!– ###TEMPLATE_PHPICALENDAR_EVENT_RSS### start –>
<item>
<title>###TITLE###</title>
<link>###EVENT_URL###</link>
<guid>###EVENT_URL###</guid>
<pubDate>###CREATE_DATE###</pubDate>
<content:encoded>
<![CDATA[
###CATEGORY###
###STARTDATE### ###STARTTIME###
###ENDDATE### ###ENDTIME###
###LOCATION###
###ORGANIZER###
###DESCRIPTION### <!-- ###EVENT_LINK### start -->###MORE_LABEL###<!-- ###EVENT_LINK### end -->
]]>
</content:encoded>
<description><![CDATA[
###CATEGORY###
###STARTDATE### ###STARTTIME###
###ENDDATE### ###ENDTIME###
###LOCATION###
###ORGANIZER###
###DESCRIPTION_STRIPTAGS### <!-- ###EVENT_LINK### start -->###MORE_LABEL###<!-- ###EVENT_LINK### end -->
<hr/>
]]>
</description>
</item>
<!– ###TEMPLATE_PHPICALENDAR_EVENT_RSS### end –>

<!– ###TEMPLATE_PHPICALENDAR_EVENT_ICS### start –>
BEGIN:VEVENT
UID:###GUID###
###DTSTAMP###
###DTSTART_YEAR_MONTH_DAY_HOUR_MINUTE###
###DTEND_YEAR_MONTH_DAY_HOUR_MINUTE###
###CATEGORY###
###TITLE###
###DESCRIPTION###
###LOCATION###
###ATTACHMENT_URL###
###RRULE###
###EXDATE###
###EXRULE###
###ORGANIZER###
###ATTENDEE###
END:VEVENT
<!– ###TEMPLATE_PHPICALENDAR_EVENT_ICS### end –>

Free And Busy views:

<!–###TEMPLATE_PHPICALENDAR_EVENT_FNB### begin –>
<!–phpicalendar_event.tmpl–>
###TITLE_FNB###
<!–/phpicalendar_event.tmpl–>
<!–###TEMPLATE_PHPICALENDAR_EVENT_FNB### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_ALLDAY_FNB### begin –>
<div>###TITLE_FNB###</div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_ALLDAY_FNB### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_DAY_FNB### begin –>
class=”eventbg2 ###BODYSTYLE###”>
<div>
<div>&nbsp;</div>
<div>###TITLE_FNB###</div>
</div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_DAY_FNB### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_WEEK_FNB### begin –>
class=”eventbg2 ###BODYSTYLE###”>
<div>
<div>&nbsp;</div>
<div>###TITLE_FNB###</div>
</div>

<!–###TEMPLATE_PHPICALENDAR_EVENT_WEEK_FNB### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_FNB### begin –>
<div><span>&bull;</span><span>###TITLE_FNB###</span></div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_FNB### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_ALLDAY_FNB### begin –>
<div><span>&bull;</span><span>###TITLE_FNB###</span></div>
<!–###TEMPLATE_PHPICALENDAR_EVENT_MONTH_ALLDAY_FNB### end –>

<!–###TEMPLATE_PHPICALENDAR_EVENT_YEAR_FNB### begin –>
<div><span>&bull;</span></div><br />
<!–###TEMPLATE_PHPICALENDAR_EVENT_YEAR_FNB### end –>

</body>
</html>

Um das ganze zu aktivieren müssen diese Template-Dateien unter Template ->Konstanten Editor -> Calendar Base unter Event (phpiCalendar) Template mit “event.tmpl” und List View Template mit “fileadmin/templates/kalender.tmpl”

XenServer neue NIC hinzufügen

Hat man eine neue Netzwerkkarte (NIC) eingebaut und wird diese nicht erkannt kann man via Command-Promt die ganze Sache dem System bekannt machen. Wie das ganze geschieht wird auf diesem Blog erklärt: http://www.virture.de/de/im-xenserver-eine-zusaetzliche-netzwerkkarte-einbinden/

Recht simple. Zuerst nach einer neuen Karte suchen, dann umbenennen und anschließend aktivieren.

Das gleiche gilt auch für Karten, die getauscht wurden. Da muss, sofern die alte noch im System existiert mittels

xe pif-forget uuid=xyz

die alte Karte vergessen werden und dann wieder die neue, wie oben im Blog beschrieben, hinzugefügt werden.

XenServer 5.5 nicht mehr erreichbar

Hat man nach dem umstellen des Managment Interface keine Netzwerkkarten mehr im XenServer, sollte man vorsichtshalber folgenden Befehl auf der Konsole aushühren:

xe pif-list

erhält man dabei folgenden Output:

The host failed to acquire an IP address on its management interface and therefore cannot contact the master.

sollte man folgende Befehl eintippen:

xe pool-emergency-transition-to-master

danach kann man wieder mit

xsconsole

in die XenServer-Console gehen und das Management-Interface ändern.

Degrade einer Partition

Wenn eine Partition einer Festplatte in einem Software als Fehlerhaft markiert wird, hat dies oft den Hintergrund, dass es im Bereich der Partition Bad-Block gibt, diese Verursachen beim Zugriff einen Fehler und es kann nicht mehr Synchronisiert werden. Als Ergebnis wird die Partition aus dem SoftwareRaid geschmissen.

Mann kann diese Partition nun immer wieder mittels

mdadm /dev/md0 -a /dev/sda1

hinzufügen, wird dies aber in 90% aller Fälle jeden Tag oder aber jeden zweiten Tag wieder holen. Abhilfe schafft, wenn man die Partition komplett entfernt und einen Plattencheck macht.

mdadm /dev/md0 -r /dev/sda1
fschk.ext3 /dev/sda1

Es wird die Festplatte nun geprüft. Hat man ein anderes Format sollte man natürlich den passenden Befehl nehmen. Ist der Check abgeschlossen fügt man die Partition wieder dem SoftwareRaid hinzu und wartet das Synchronisieren ab.

mdadm /dev/md0 -a /dev/sda1

Sollte nun das SoftwareRaid wieder degraded werden, sollte man sich Gedanken über den Tausch der Festplatte machen.

Den Status der Synchronisation kann man mit

more /prc/mdstat

begutachten. Wenn man dies als wieder kehrendes “Video” sehen möchte, kann man watch vor den Befehl schreiben und es wird der Befehl alle 2 Sekunden aufgerufen und auf dem Bildschirm dargestellt.

watch more /prc/mdstat

Nach SoftwareRaid degrade benarichtigen

Falls man mit bekommen möchte, wann ein SoftwareRaid degraded wird, sollte seine Email-Adresse in die Konfigurationsdatei vom mdadm eintragen. Diese liegt unter /etc/mdadm/mdadm.conf und der Eintrag lautet:

MAILADDR email@domain.tld

Speichern und /etc/init.d/mdadm restart ausführen. Danach sollte Benachrichtigung funktionieren.

bash: /etc/bash.bashrc: Permission denied

Bekommt man die obengenannte Fehlermeldung, so ist man erst mal erstaunt.

Auftreten tut das ganz dann, wenn man sich mit einem User außer root anmelden möchte. Zusätzliches Symthom dieses Fehler könnte der Benutzername in der Shell sein. Wenn da nämlich anstelle von “user1@server2#” etwas wie “No Name set yet!@server2#” in der Konsole steht.

Abhilfe bring ein

ls -a /

kommt dabei dann ein

drwx——   2 root root  16K 2007-08-31 14:34 etc

als Ergebnis heraus, so sollte man überlegen warum sich die Rechte geändert haben.

Richtig ist ein 755 auf /etc.  Korrigiert man dies mit

chmod 755 /etc

kommt man wieder zu dem richtigen Ergebnis:

drwxr-xr-x  97 root root 4.0K 2010-02-03 10:30 etc

Warum sich die Rechte geändert gilt natürlich heraus zu finden.

Mit Munin Windows-System überwachen

Wenn man ein Windows-System mittels Munin überwachen bzw. Monitoren möchte, so müss man ein paar Schritte unternehmen.

Zu erst muss auf dem Windows-System ein SNMP (Simple Network Management Protokoll) Dienst installiert werden. Dieser wird von Microsoft direkt mit aufgeliefert. Zu installieren ist dieser über Systemsteuerung -> Software -> Windowskomponente hinzufügen oder entfernen -> Verwaltungs- und Überwachungsprogramme -> Details -> SNMP (Simple Network Management Protokoll).

Ist der Dienst installiert muss man die Zugriffrechte setzten. Dieses kann man über Systemsteuerung -> Verwaltung -> Dienste -> SNMP auswählen -> Einstellungen -> Sicherheit -> Haken bei “Authentifizierungstrap senden” -> “SNMP-Packete von jedem Host annehmen” auswählen -> Übernehmen.

Damit ist das Windows-System fertig eingerichtet. Es ist dabei egal, ob es sich um ein Client-System (z.B. XP) oder Server-System (z.B. Windows Server 2008) handelt.

Auf dem Server, auf dem der Munin-Job läuft wird nun die weitere Einstellung vorgenommen. Es ist zwingend Notwendig, dass ebenfalls ein Munin-Node installiert ist.

Im Verzeichnis /usr/share/munin/plugins/ gibt es verschiedene snmp__ Skripte, die benutzt werden können. Um zu prüfen, welche Systemwerte von dem Windows-System zur Überwachung angeboten werden, kann ein von Munin mitgeliefertes Programm ausgerufen werden:

~#munin-node-configure-snmp client01

Es wird eine Reihe von Befehlen zurück gegeben, welche Plugins erstellt werden können bei mir sah es wie folgt aus:

ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_10
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_11
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_14
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_15
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_16
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_17
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_18
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_5
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_6
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_7
ln -s /usr/share/munin/plugins/snmp__if_err_ /etc/munin/plugins/snmp_client01_if_err_8

Diese kann man ausführen und es werden die Plugin in /etc/munin/plugins/ abgelegt.

Anschließend muss man lediglich die /etc/munin/munin.conf sowie /etc/munin/plugin-conf.d/munin-node angepasst werden.

In die munin.conf trägt man folgendes ein:

[gruppe;client01]
address 127.0.0.1

Es ist es wichtig, dass nach der gruppe; der gleiche Name genommen wird, wie er in den Namen der Plugins vorkommt.

Die Adresse muss auf den Server zeigen, auf dem die munin-node läuft, die die SNMP-Plugins geladen hat. Dies unterscheidet sich zu den anderen Plugins, weil auf dem Windows-System keine Munin-Node läuft.

In die munin-node.conf tragen wir nun für jedes Windows-System folgendes ein:

[snmp_client01*]
env.host 198.168.0.10
env.port 161
env.community public

env.host muss dabei die IP des Windows-Systems enthalten.

Nach dem alles eingestellt ist muss nur noch der Munin-Node neugestartet werden und es werden die Graphen für das Windows-System gezeichnet. Dies kann aufgrund der Munin-Einstellung natürlich einige Minuten dauern.

/etc/init.d/munin-node restart

Postfix und Postgrey

Wer sich wundert, dass eine Email nicht sofort ankommt und die Logs des Mailservers mittels tail -f /var/logs/mail.info überwacht und auf folgende Einträge stößt:

postfix/policyd-weight[5588]: weighted check:  NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 CL_IP_EQ_FROM_MX=-3.1; <client=xx.xx.xx.xx> <helo=sender.domain.tld> <from=user@domain.tld> <to=recipient@example.net>; rate: -7.6
postfix/policyd-weight[5588]: decided action=PREPEND X-policyd-weight:  NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 CL_IP_EQ_FROM_MX=-3.1; rate: -7.6; <client=xx.xx.xx.xx> <helo=sender.domain.tld> <from=user@domain.tld> <to=recipient@example.net>; delay: 1s
postgrey[3235]: action=greylist, reason=new, client_name=srv01.it-kessler.de, client_address=xx.xx.xx.xx, sender=user@domain.tld, recipient=recipient@example.net
postfix/smtpd[17870]: NOQUEUE: reject: RCPT from sender.domain.tld[xx.xx.xx.xx]: 450 4.2.0 <recipient@example.net>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/sim-hiorg.de.html; from=<user@domain.tld> to=<recipient@example.net> proto=ESMTP helo=<sender.domain.tld>

Sollte nicht gleich bei dem Wort NOQUEUE erschrecken und denken, dass Postfach ist voll. In Verbindung mit der Code-Nummer 450, wird lediglich die aktuelle Verbindung vom Server angelehnt. Der Versender versucht es nach einer gewissen Zeit (meist wenige Minuten) erneut und dann wird die Email angenommen.

Das Prinzip des Postgrey-Filters ist nämlich, so lange eine Domain nicht whitelistet ist, den ersten Versuch abzulehnen, da dann die meisten Spambots es aufgeben weitere Mails ausliefern zu wollen. Ein zweiter Versucht mit gleichen Empfänger wird dann zugelassen und die Domain für eine gewisse Zeit auf die Whitelist gesetzt. Die weitere Kommunikation geht also schneller als der erstmalige Kontakt.

XenServer mit Debian Gast

Wenn man einen Server virtualisieren und dort ein Debian als Gast-System starten möchte, so muss man sich ein eigenes Debian-Image erstellen.

Um dies zu bewerkstelligen gibt es ein Tool mit dem namen jigdo (http://atterer.org/jigdo/). Dies lädt man herunter und entpackt es. Man öffnet eine Konsole (Start->Ausführen->cmd->Ok) und navigiert in das neu erstellte Verzeichnis. In dieses Verzeichnis platziert man am besten auch schon ein Debian-Iso.

Das Programm kann mit dem aufruf

jigdo-lite.bat

gestartet werden.

Zusätzlich empfiehlt es sich ein Template sowie die Config-Datei herunter zu laden, die Debian bereits bereitstellt: http://www.debian.org/CD/jigdo-cd/

Nachdem starten von jigdo-lite gibt man nun die .jigdo-Datei an. Ist die Datei im gleichen Verzeichnis platziert wie die .bat-Datei von jidgo so reicht es den Dateinamen anzugeben. Ansonsten muss der Pfad ebenfalls angegeben werden.

Die nächste Abfrage wird einfach mit ENTER bestätigt. Die Nachfrage nach einem Repositiory habe ich mit ftp://ftp2.de.debian.org/debian beantwortet. Es kann aber auch jeder andere Mirror genommen werden. Nach dem diese Frage beantwortet wurde, fängt jigdo an die nötigen Daten vom Mirror herunter zu laden und das Image zu erstellen.

(weiterlesen…)