Posts Tagged ‘ shell ’

Perlen auf der Kommandozeile (10): logger

terminal1 Perlen auf der Kommandozeile (10): logger ubuntu shell perlen logfile debian bash arch admin /var/log Linux ist ja ein System, das sehr protokollierfreudig ist. Viele Probleme lassen sich so schon alleine durch einen Blick in das entsprechende Logfile in /var/log/... lösen.

Wenn man mit eigenen Skripten arbeitet (z.B. als Cronjobs), wird jedoch zunächst mal gar nichts geloggt. Das Kommandozeilentool logger schließt diese Lücke und loggt vordefinierte Nachrichten nach /var/log/messages.log (für Arch Linux, Debian: /var/log/messages). Starten wir z.B. das folgende Skript …

#!/bin/sh
logger "Warnung! Test-Skript gestartet!"

… taucht folgende (oder ähnliche) Logmeldung in /var/log/messages.log auf:

Nov 28 06:47:12 localhost nutzer1: Warnung! Test-Skript gestartet!

Perlen auf der Kommandozeile (9):pwck, grpck

terminal1 Perlen auf der Kommandozeile (9):pwck, grpck  shell pwck passwd linux grpck gpasswd bash admin pwck und grpck prüfen die Nutzer- und Gruppeninformationen in den Dateien /etc/passwd und /etc/shadow (pwck) bzw. /etc/group und /etc/gshadow (grpck). Fehlerhafte Einträge werden dabei erkannt und können interaktiv bereinigt werden.

Beide Kommandos werden als root aufgerufen. Zu einer Inkonsistenz kann es z.B. kommen, wenn man einen Nutzer manuell einer Gruppe durch editieren der /etc/group hinzufügt, statt dies mit …

gpasswd -a user10 group13

…zu tun. Solche Inkonsistenzen erkennt grpck.

$ grpck
'user10' is a member of the 'group13' group in /etc/group but not in /etc/gshadow

Read more »

Perlen auf der Kommandozeile (8): pv

terminal1 Perlen auf der Kommandozeile (8): pv zufallszahlen urandom terminal shell prozess mmcblk0 linux dd bash pv ist ein praktisches Kommandozeilentool, das es ermöglicht, den Fortgang eines Prozesses in der Shell mit Hilfe einer Pipe zu beobachten.

Wenn man z.B. mit dd eine Partition mit Zufallszahlen überschreibt, zeigt dd standardmäßig nicht an, wieweit die Aufgabe fortgeschritten ist. Man sieht nur einen blinkenden Cursor. Bei einer großen Partition kann sich das Überschreiben mit z.B. /dev/urandom über viele Stunden hinziehen. Während dieser Zeit ist man aber ziemlich im Ungewissen, was hinter den Kulissen läuft und wie lange es noch dauern könnte.

Mit Hilfe von pv können folgende Informationen des Schreibvorgangs sichtbar gemacht werden:

  • Menge der bereits geschriebenen Daten
  • Datenmenge/Sekunden
  • Verstrichene Zeit seit Beginn des Schreibvorgangs Read more »

Perlen auf der Kommandozeile (7): watch

terminal1 Perlen auf der Kommandozeile (7): watch watch ubuntu shell script open source linux konsole date bash Mit dem Befehl watch können Kommandozeilenbefehle periodisch ausgeführt und aktualisiert auf dem Bildschirm angezeigt werden.

watch nimmt den auszuführenden Befehl als Argument. Mit der Option watch -n wird festgelegt, wie oft sich die Bildschirmausgabe für den Befehl aktualisieren soll. Damit lässt sich z.B. der Befehl date jede Sekunde (watch -n1) auf dem Bildschirm aktualisiert anzeigen, womit man eine simple Uhr simulieren kann. Read more »

Jingle-GUI für Audio-Live-Aufnahmen

Ich war schon länger auf der Suche nach einem simplen Tool, mit dem ich kurze Soundschnippsel (z.B. Jingles) während eines Live-Mixes schnell auswählen und einspielen kann. Das Tool sollte dabei übersichtlich, unmittelbar und ohne Zeitverzögerung arbeiten (z.B. für Podcasts, Radio, DJ usw.).

Größere DJ-Tools wie die Internet DJ Console schießen für diese simple Aufgabe ein bisschen über das Ziel hinaus und erfordern eine gewisse Einarbeitungszeit. Medienplayer wie VLC (mit Playlist) fühlen sich für solche Zwecke ungelenk an und haben manchmal das Problem der Zeitverzögerung.

Vor kurzem habe ich dann erstmals mit Zenity herumgespielt. Damit kann man Shellskripten in simple GUI-Fenster umsetzen (basierend auf GTK+). Ich habe gestaunt, wie einfach sich mit ein paar Zeilen Skript eigentlich genau das umsetzen lässt, was ich gesucht habe:
jinglebox1 Jingle GUI für Audio Live Aufnahmen zenity vlc skript shell radio podcast linux jingles idjc gui gtk+ DJ bash audio

Neben dem Paket zenity sollte sox installiert sein,welches das Paket play enthält, mit dem Audiodateien auf der Kommandozeile abgespielt werden können. Oder ihr nutzt einfach einen anderen Kommandozeilenplayer wie z.B. aplay.

Das folgende Skript “Jinglebox” wird einfach in dem Ordner abgelegt, in dem (u.a.) die abzuspielenden Dateien liegen. Beim Aufruf filtert das Skript die Audiodateien (hier: mp3 und wav) und bietet sie zum Abspielen an. Den Sound einfach auswählen und “OK” (oder per Doppelklick starten).

Durch den “while true” Loop (und da play in den Hintergrund gesendet wird) öffnet sich sofort die nächste Instanz von “Jinglebox”, so dass auch mehrere Sounds kurz hintereinander überlappend abgespielt werden können. Zum Download von “Jinglebox” bitte diesen Link nutzen, da Copy & Paste nicht funktioniert (irgendwas haut hier mit der Demaskierung nicht hin, das Demaskierungszeichen für den Zeilenumbruch ist hier im Blogeintrag nicht sichtbar…)

#!/bin/sh
while true
        do
                INPUT=$(zenity \
                --title "Jingle Box" \
                --text="Choose sound and doubleclick or hit OK" \
                --width=400 \
                --height=800 \
                --list \
                --column Sounds `ls | grep -Ei "(.wav|.mp3)"`)

                play $INPUT &
        done

Arch Linux – ein Erfahrungsbericht

archwiki Arch Linux   ein Erfahrungsbericht xfce X udev ubuntu shell rolling release rhythmbox openbox ndiswrapper linux installation gpodder gdm eeepc dbus backintime asus arch linux arch alsa 1005PX Seit rund 3 Wochen läuft nun Arch Linux auf meinem Netbook Asus EeePc 1005PX . Arch ist eine leichtgewichtige und stark anpassungsfähige Distribution, der der Ruf vorauseilt, schwierig zu installieren und zu konfigurieren zu sein.

Arch ist zwar nicht gerade für Einsteiger geeignet. Ohne fundierte Grundkenntnisse und ein sicheres Bewegen auf der Kommandozeile wird die Installation bis hin zu einem glatt funktionierenden System wahrscheinlich scheitern.

So schwierig wie oft dargestellt ist die Installation und Konfiguration dann aber auch wieder nicht. Eine gewisse Hartnäckigkeit bei eventuell auftretenden Problemen kann natürlich nicht schaden.

Installation und Konfiguration

Die gute Nachricht ist, dass die Community rund um Arch hervorragend organisiert ist. Das Arch Wiki gehört in seiner Gilde zu den Besten und ist auch für Nutzer anderer Distributionen eine gute Anlaufstelle.  Das Wiki stellt zwei Anleitungen für den Installationsprozess zur Verfügung. Zum einen gibt es die offizielle Installationsanleitung . Sie ist sehr generell gehalten und setzt umfangreiches Wissen voraus.

Meine klare Empfehlung ist deshalb (auch an den “fortgeschrittenen” Benutzer), sich an die hervorragende Anleitung für “Anfänger” zu halten. Dieser Beginners’ Guide ist sehr ausführlich und manches, was darin beschrieben ist, wird der eine oder andere wohl getrost überspringen bzw. überfliegen können. Der flüchtige Blick auf das umfangreiche Inhaltsverzeichnis am Anfang des Guides sollte deshalb nicht entmutigen.

Benutzerorientierung vs Benutzerfreundlichkeit

Doch warum ist der Prozess der Installation und Konfiguration so komplex? Nun, Arch ist eben kein Ubuntu, das sich Benutzerfreundlichkeit auf die Fahnen geschrieben hat. Kaum ist Ubuntu installiert, kann man im Prinzip schon loslegen und muss nur noch wenig anpassen. Das ist toll, doch der Nachteil dieses Prinzips der Benutzerfreundlichkeit ist natürlich, dass die Basiskonfiguration des Systems auf ein durchschnittliches Benutzerprofil ausgelegt ist. Und zugrundeliegende, eigentlich simple Strukturen werden oft zu Gunsten der Benutzerfreundlichkeit verkompliziert.

Arch legt den Schwerpunkt dagegen nicht auf Benutzerfreundlichkeit, sondern auf  Benutzerorientierung. Arch ist in hohem Maße individuell anpassungsfähig. Arch an sich ist deshalb weder gut noch schlecht. Gut oder schlecht ist lediglich, was der Einzelne daraus macht. Schlanker und funktionaler Code hat bei Arch eine hohe Priorität. Auch die Benutzerfreundlichkeit muss sich im Konfliktfall diesem Prinzip beugen. Was der Einzelne will, muss explizit installiert und konfiguriert werden.

Baukasten mit Lerneffekt

Nach dem Baukastenprinzip wird zunächst ein minimales System der Grundfunktionen ohne grafische Oberfläche installiert (z.B. via CD, USB…). Ab diesem Punkt obliegt die Installation weiterer Komponenten und deren Konfiguration den Wünschen des Benutzers.  Willkommen auf einer interessanten und lehrreichen Reise durch das Innenleben des Systems!

Begriffe wie dbus oder udev sind wahrscheinlich zwei gute Beispiele für Funktionen, von denen zwar viele schon gehört haben.  Wie man sie installiert und wozu man beide brauchen könnte, wissen wahrscheinlich schon weniger Menschen. Während der Installation habe ich mich z.B. auch erstmals damit auseinandergesetzt, was eigentlich genau ein Displaymanager wie gdm macht und bin zu dem Schluss gekommen, dass ich gut auf ihn verzichten kann.

Der Aha-Effekt

Für eine erste Testinstallation auf einem ausrangiertem Acer brauchte ich ca. 6 Stunden, wobei ich allein eine Stunde verbrachte, eine proprietäre WLAN-Karte per ndiswrapper einzubinden. Auch die Syntax des Paketmanagers pacman ist erst mal ungewohnt.

Gute 4 Stunden dauerte dann nur noch die Basisinstallation auf dem EeePC. Installiert und konfiguriert habe ich u.a. dbus, udev, alsa und X. Nicht ganz banal ist die Installation von X (hier habe ich mich entschieden für die Desktopumgebung Xfce und dem Windowmanager Openbox). Umso befriedigender dann das erlösende “Aaaaaah!“, als Xfce dann endlich startete. Hier im Bild ein aktuellerer Screenshot nach der Installation von zusätzlicher Software:

arch xfce Arch Linux   ein Erfahrungsbericht xfce X udev ubuntu shell rolling release rhythmbox openbox ndiswrapper linux installation gpodder gdm eeepc dbus backintime asus arch linux arch alsa 1005PX

Viele Konfigurationsdateien der Grundkonfiguration müssen manuell bearbeitet werden. Dank des Wikis ist das wirklich keine große Hürde. Wie bei jedem anderen frisch installierten System zieht sich die Feinabstimmung und die Installation der gewünschten Anwendungen über ein paar weitere Tage hin.

Rolling Release

Arch Linux ist eine Rolling Release Distribution. Bei Ubuntu, Debian, Fedora usw. gibt es eine bestimmte Version (Ubuntu Lucid, Maverick, Natty…) samt Versionsnummer. Diese Releases greifen auf z.T. veraltete Softwarepakete zu und werden oft nur bei Sicherheitslücken aktualisiert. Diese Distributionen könnte man als Punctual Releases bezeichnen. In Bezug auf die Aktualität der Software machen sie sprunghafte Fortschritte (z.B. alle sechs Monate bei Ubuntu).

Bei Arch finden neue Softwarereleases ihren Weg relativ zügig über den Zweig “testing” in die aktuellsten Pakete der stabilen Arch Repositories. Arch wird einfach regelmäßig mit pacman aktualisiert und so auf den aktuellsten Stand gebracht (rolling release). Veröffentlichungszyklen gibt es im herkömmlichen Sinn nicht. Es gibt nur ein Release – und das ist ein permanent andauernder Prozess.

Stabilität

Basierend auf den “stabilen” Paketquellen läuft Arch mit Xfce auf meinem Netbook sehr stabil und es fühlt sich sehr “schlüssig” und “integriert” an. Arch bootet schnell. WLAN, Drucker, Scanner, Webcam, Sound und die üblichen Verdächtigen wie Firefox und VLC ließen sich alle tadellos einrichten.

Ein Problem gab es einmal, als der Mauszeiger verschwunden war. Durch das Leeren des Cache in /home/$USER/.cache/sessions konnte ich das Problem jedoch beheben. Außerdem lässt mich Rhythmbox keine Podcastfeeds hinzufügen. Na dann, ich habe Gpodder als gute Alternative entdeckt. Und ich hatte ein Problem mit dem Backup-Programm Backintime. Dies stellte sich als Upstream-Bug heraus, für den ich einen workaround gefunden habe.

Ach ja, Backups. Gerade bei einer Rolling Release, die neben der neuesten Software auch mal einen Bug auf die Platte schaufeln kann (trotz “stabiler” Paketquellen), fühle ich mich mit regelmäßigen Backups besser. Richtig darauf zurückgreifen musste ich noch nicht.

Maßgeschneidert und aktuell

Wer die anfänglichen Hürden genommen hat, der wird mit einer schlanken, stabilen und maßgeschneiderten Distribution belohnt, die mit aktueller Software ausgestattet ist. Vielleicht liegt es ja daran, dass jede frisch aufgesetzte Distribution eine gewisse Begeisterung ausübt. In den letzten drei Wochen war ich jedenfalls nur noch auf meinem Netbook mit Arch Linux unterwegs.

Wenn alles weiter so flüssig und problemlos läuft, dann kann es gut sein, dass Ubuntu 10.04 LTS irgendwann von meinem Hauptrechner fliegt und ich es durch Arch ersetze. Schau mer mal.

[UPDATE 1.11.2011: Inzwischen sind vier Monate seit der Installation vergangen. Wie es mir mit Arch seitdem ergangen ist, könnt ihr hier lesen: Arch Linux - eine persönliche Zwischenbilanz ]

Texte online in Sprache umwandeln

Heute will ich Euch mein kleines Projekt OTAC vorstellen.

OTAC (Online Text to Audio Converter) ist ein auf Linux und Open Source Software basierender Webservice, der Texte online in gesprochene Sprache umwandelt:

otac1 Texte online in Sprache umwandeln windows web service wav umwandlung text2speech sprachroboter sprache skript shell script robo otac open source linux language internet free service free firefox festival convert browser bash audio

In einem Artikel im September 2009 (“Wir basteln uns einen Sprachroboter“) habe ich ja mal eine einfache Methode vorgestellt (“robo”, mehr Infos im Artikel und auf der Homepage), wie man mit Hilfe der Software Festival Texte in Sprache umwandeln kann (auch skriptgesteuerte, dynamisch erzeugte Texte). Um sich z.B. die aktuelle Kernelversion vorlesen zu lassen, würde man das Skript robo z.B. so nutzen:

robo `uname -r`

Lässt sich auch alles schön mit Cron kombinieren. Diese Methode ist auch für Linux-Einsteiger eine wirklich simple Angelegenheit und in ca. 5 Minuten eingerichtet.

Manch einer will aber nur mal schnell einen kurzen Text in Sprache umwandeln, z.B. um die Mitteilung beim Erhalt einer E-Mail anzupassen (“Attention: New mail!“). Oder es fehlt ihm an grundlegendem Wissen über Linux bzw. er nutzt gar ein anderes Betriebssystem, wie z.B. Windows.

Da ist es natürlich praktischer, auf einer Webseite einfach nur einen Text einzugeben und ihn umgehend in eine Audio-Datei umgewandelt zu bekommen. Und das ist genau das, was OTAC (hoffentlich) tut.

Eine bahnbrechende Neuheit ist das natürlich nicht. Ähnliche Angebote gibt es im Netz schon länger.

otac2 Texte online in Sprache umwandeln windows web service wav umwandlung text2speech sprachroboter sprache skript shell script robo otac open source linux language internet free service free firefox festival convert browser bash audio

Und so funktioniert’s hinter den Kulissen (verkürzt dargestellt):

Die Texteingabe wird importiert, gefiltert und dann weitergeleitet. Der gefilterte Text bekommt eine 16-stellige Zufalls-ID zugeordnet. Dann wird der Text (ähnlich wie bei “robo”) in eine WAV-Datei umgewandelt und gespeichert (mit der ID im Dateinamen). Ein HTML-Code wird generiert, der dem Nutzer als Rückmeldung einen Link zu seiner Audio-Datei präsentiert, die er dann herunterladen kann oder (entsprechende Unterstützung durch den Browser vorausgesetzt) direkt abspielen kann.

Einschränkungen: OTAC ist beta und nutzt eine englische männliche Stimme. Wer also deutsche Texte eingibt, wird keine realistischen Ergebnisse bekommen (oder hat was zum Lachen). Selbst mit der englischen Sprache kann es vorkommen, dass das darunterliegende Sprachsynthesesystem von Festival schon mal eine eigenwillige Interpretation vornimmt. Auch werden etliche Sonderzeichen (noch) nicht korrekt erkannt.

Aktuell ist die Eingabe auf 256 Zeichen begrenzt. Bei einfach gehaltenen Texten in Englisch solltet ihr zu brauchbaren Ergebnissen kommen. Für Rückmeldungen zur (Nicht-)Funktion wäre ich dankbar, insbesondere zu Ladezeiten, Browserverhalten (Mobile Geräte?), sprachliche Unzulänglichkeiten usw.

Viel Spaß beim Testen auf otac.netz10.de!

“Guitar Geezer”: Gitarre stimmen mit der Shell

guitar Guitar Geezer: Gitarre stimmen mit der Shell tuner stimmgerät stimmen sox skript shell script python musik music linux gui gtk+ gitarre bash In meinem Feedreader ist kürzlich das Thema “Gitarre stimmen” verstärkt aufgeschlagen. In einem Gastartikel über Open Source Musiksoftware auf picomol.de schlägt der Autor Macks das Programm GuitarTuner vor. Und Christoph von Linux und Ich empfiehlt einen Screencast zum Programmieren eines Tools zum Stimmen der Gitarre mit GTK+ und Python.

Das ist die Gelegenheit, noch mal darauf hinzuweisen, dass ich mich ja auch schon mal mit dem Thema beschäftigt habe und ein Shellskript zum Stimmen der Gitarre verfasst habe. Das Skript nannte ich einfach GuitarTuner. Na und wenn ich das alte Skript jetzt noch mal aus dem Hut zaubere, dann kann ich es auch gleich umbenennen. Schließlich gibt es schon einen GuitarTuner (siehe weiter oben) und der war vor mir da.

Guitar Tuner heißt deshalb ab sofort Guitar Geezer icon mrgreen Guitar Geezer: Gitarre stimmen mit der Shell tuner stimmgerät stimmen sox skript shell script python musik music linux gui gtk+ gitarre bash .  Das Skript setzt nur voraus, dass das Paket sox installiert ist. Die Resonanz auf das Skript und die Downloadzahlen waren damals gering. Vielleicht deshalb, weil man sich schwer vorstellen kann, wie man auf der Kommandozeile eine Gitarre stimmen soll (nur so eine Vermutung). Das Skript erlaubt es, die einzelnen Saiten seperat anzuspielen oder alle 6 Saiten auf einmal durchzuspielen.

Hörprobe “Guitar Geezer” (mp3)

Dank sox klingen die abgespielten Töne superrealistisch und entsprechen exakt den Tonhöhen der 6 Seiten der Gitarre. So oft greife ich zwar zur Zeit nicht zur Gitarre, doch Guitar Geezer icon mrgreen Guitar Geezer: Gitarre stimmen mit der Shell tuner stimmgerät stimmen sox skript shell script python musik music linux gui gtk+ gitarre bash ist vollkommen ausreichend, um das Instrument zu stimmen. Hier noch mal ein Screenshot der “GUI”, damit Ihr eine Vorstellung habt, was da auf Euch zukommen würde:

guitartuner1 Guitar Geezer: Gitarre stimmen mit der Shell tuner stimmgerät stimmen sox skript shell script python musik music linux gui gtk+ gitarre bash

Download Guitar Geezer

Und für alle die, die sich für das Skript an sich interessieren, hier bitte. “Copy & Paste” garantiert kein funktionierendes Skript, besser downloaden.

#!/bin/sh
# Guitar Geezer v 1
# requires the paket "sox"
###### FUNCTION: HEADER
header ()
{
clear
echo "
#########################################
############# Guitar Geezer #############
#########################################
############# To tune press #############
########### e, a, d, g, h, E ############
################ [ENTER] ################
#########################################
######### To play all press #############
##################  i  ##################
################ [ENTER] ################
#########################################
############ To quit press ##############
############## [STRG]+[C] ###############
#########################################"| grep --colour "#"
}
###### FUNCTION: INTRO
playall ()
{
header
for i in E2 A2 D3 G3 B3 E4
	do
		play -n synth 4 pluck $i 2>/dev/null &
		sleep .4
	done
}
###### TUNE
playall
while true
do
header
read INPUT
echo "Now playing:	$INPUT" | grep --colour  $INPUT
case $INPUT in
	e)
	play -n synth 4 pluck E2 repeat 2 2>/dev/null
	;;
	a)
	play -n synth 4 pluck A2 repeat 2 2>/dev/null
	;;
	d)
	play -n synth 4 pluck D3 repeat 2 2>/dev/null
	;;
	g)
	play -n synth 4 pluck G3 repeat 2 2>/dev/null
	;;
	h)
	play -n synth 4 pluck B3 repeat 2 2>/dev/null
	;;
	E)
	play -n synth 4 pluck E4 repeat 2 2>/dev/null
	;;
	i)
	playall
	;;
esac
done
# Guitar Tuner:
# Written by linuxnetzer
# Contact: linuxnetzer*-.aet.-*netz10.de
# web: http://netz10.de/2010/12/19/guitartuner/

Shell Skript: Ist mein RSS-Feed gültig?

rss Shell Skript: Ist mein RSS Feed gültig? wordpress w3m validator skript shell script rss lynx linux feed cronjob cron blog bash Irgendwann war ich es Leid, alle paar Wochen auf die Seite eines Feed-Validators (z.B. W3C) zu gehen, um die Gültigkeit meines Feeds zu prüfen. Manchmal musste ich dabei feststellen, dass mein RSS-Feed von manchen oder gar allen Feedreadern nicht gelesen werden konnte.

Eine Alternative aus den Paketquellen wäre python-feedvalidator. Und sicher gibt es dafür auch ein WordPress-Plugin. Nachdem sich im Juni 2011 ein Bösewicht Zugriff auf das offizielle Plugin-Verzeichnis von WordPress verschafft hatte und eine Backdoor in drei populäre Plugins eingebaut hatte, wollte ich das Problem lieber selbst lösen. Ein bisschen Skripten macht ja auch Spaß.

Herausgekommen ist das Shell-Skript rsschecker, das nun bei mir als täglicher Cronjob läuft. Sobald es ein Problem mit dem Feed gibt, schickt mir das Skript eine E-Mail. Natürlich kann das Skript auch direkt aufgerufen werden.

Download rsschecker (Copy & Paste wird nicht funktionieren)

Das Skript stützt sich auf die externe Analyse von http://www.rssboard.org/rss-validator/. Es ruft das Testergebnis mit einem Textbrowser (w3m, links, lynx …) auf und speichert das Testergebnis als temporäre Datei. Dann analysiert es das Ergebnis (wenn es grep nicht gäbe, müsste man es erfinden…). Eine E-Mail wird gesendet, wenn …

  • der Feed ungültig ist
  • der Feed kleinere Fehler enthält, so dass er von manchen Feedreadern nicht gelesen werden kann

Die E-Mail enthät einen Link zum Testergebnis, wo es nähere Einzelheiten zu den Fehlern gibt. Im direkten Aufruf (hier für einen nicht existierenden Feed stupid.com/invalidfeed) sähe das z.B. so aus:

rsschecker Shell Skript: Ist mein RSS Feed gültig? wordpress w3m validator skript shell script rss lynx linux feed cronjob cron blog bash

Oder am nächsten Morgen per E-Mail:

rsschecker email Shell Skript: Ist mein RSS Feed gültig? wordpress w3m validator skript shell script rss lynx linux feed cronjob cron blog bash

Klickt man dann den Link, bekommt man den Fehler im Code auf dem Präsentierteller serviert. Wenn Ihr das Skript direkt in /etc/cron.daily ablegt solltet ihr es so umbenennen, dass es keinen Punkt im Dateinamen gibt, zB. /etc/cron.daily/rsschecker.

Das Skript sollte ziemlich selbsterklärend sein:

#!/bin/sh
# This script will check, if a given RSS feed is valid code.
# It uses an external online webservice to check validity
# Email is sent to admin if:
# Feed is invalid
# OR:
# Feed is valid, but interoperability to many feedreaders could be improved
#############################################################

# Here goes the feed you want to check.
FEED="http://netz10.de/feed"

# Here goes the service (external website) we use:
SERVICE="http://www.rssboard.org/rss-validator/check.cgi?url=$FEED"

# Here we dump the service output (Test results):
DUMP="/tmp/rss.dump"

# Here goes the email adress to receive the alert:
MAILALERT="root"

# Alert Header (Subject: ...)
ALERTSUBJECT="FEED might be NOT VALID"

# Alert Message
ALERTMESSAGE="$ALERTSUBJECT Details: $SERVICE"

# Here goes your installed textbrowser including argument for dumping
TEXTBR="w3m -dump"
#TEXTBR="links -dump"

###############################################################

# Get feed validation and dump output of result
$TEXTBR $SERVICE > $DUMP

# Checking $DUMP if $FEED is valid RSS"
if
# Valid?
[ `grep "Congratulations" $DUMP | wc -l` -eq 0 ] || \

# OR: valid, but not 100%, so interoperability could be improved
[ `grep "interoperability" $DUMP | wc -l` -gt 0 ]

# If one of the two checks above failed, let's send an email ...
then
echo "$ALERTMESSAGE"
mail -s "$ALERTSUBJECT" $MAILALERT << EOF
$ALERTMESSAGE
EOF

# Log invalid feed to syslogd
logger "$ALERTMESSAGE"
else
# If valid, send good news to STDOUT and syslog
echo "$FEED is a valid RSS feed"
logger "Checked RSS feed $FEED : VALID"
fi

# Keep your country tidy! So let's clean up a bit...
rm $DUMP

##############################################################
# written by linuxnetzer
# http://netz10.de
# Email: linuxnetzer-*at*-netz10.de

Download rsschecker (Copy & Paste wird nicht funktionieren)

Cronjob: Virensuche mit Clamav und E-Mail-Alert

virus Cronjob: Virensuche mit Clamav und E Mail Alert windows virus ubuntu shell script root linux eicar cron.daily cron clamy clamscan bash admin Viren haben es schwer, auf Linuxcomputern Schaden anzurichten . Läuft Linux jedoch als Dateiserver, auf dem Windowsbenutzer munter Dateien rauf und runter schaufeln, dann kann der Einsatz eines Virenscanners unter Linux Sinn machen.

In diesem Beispiel gehe ich von einem nur leicht frequentierten Server aus. Es soll uns deshalb reichen, einen Cronjob einzurichten, der ein Verzeichnis $SCANDIR einmal täglich auf Viren untersucht. Wird ein Virus gefunden, soll dies per E-Mail an den Administrator gemailt werden.

Als erstes installieren wir das Paket clamav inklusive seiner benötigten Abhängigkeiten.

Nun erstellen wir ein Script, legen es z.B. als /etc/cron.daily/clamscan ab und machen es ausführbar. So wird sichergestellt, dass es einmal täglich (meist nachts) läuft.

WICHTIG: Ein Skript, das in /etc/cron.daily bzw. /etc/cron.weekly abgelegt ist, darf keinen Punkt (“.”) enthalten. Ein Skript z.B. mit dem Namen clamscan.sh würde wegen des Punktes im Namen nicht ausgeführt werden.

Besser ist es, das Skript /etc/cron.daily/clamscan nur mit folgendem Inhalt zu füllen:

#!/bin/sh
/usr/local/bin/clamscan_daily.sh /dev/null 2>&1

Dieses verweist dann nur auf das folgende Skript /usr/local/bin/clamscan_daily.sh, das den eigentlichen Job erledigt:

#!/bin/sh
#Erst mal die Virensignaturen updaten....
freshclam
# Welches Verzeichnis soll gescannt werden?
SCANDIR=/mnt/windowsshares
# Betreffzeile definieren:
SUBJECT="VIRUS ENTDECKT AUF `hostname`!!!"
# E-Mail an root auf dem lokalen Server, bitte ...
EMAIL="root"
# Wohin loggen wir?
# Diese Datei muss vor dem Scan bereits existieren!
LOG=/var/log/clamav/scan.log
# FUNKTION:
# Nach dem Scan im Logfile herausfinden, ob es einen Virus gab
# Alles was "Infected" ist und ungleich 0 ist, wird gemeldet!
log_check () {
if [ `tail -n 12 ${LOG} | grep Infected | grep -v 0 | wc -l` != 0 ]
then
EMAILMESSAGE=`mktemp /tmp/virus-alert.XXXXX`
echo "To: ${EMAIL}" >> ${EMAILMESSAGE}
echo "From: root@localhost" >> ${EMAILMESSAGE}
echo "Subject: ${SUBJECT}" >> ${EMAILMESSAGE}
echo "Importance: High" >> ${EMAILMESSAGE}
echo "X-Priority: 1" >> ${EMAILMESSAGE}
echo "`tail -n 50 ${LOG}`" >> ${EMAILMESSAGE}
sendmail -t < ${EMAILMESSAGE}
fi
}
# SCAN DURCHFÜHREN...
clamscan -r $SCANDIR --exclude-dir=/sys/ --quiet --infected --log=${LOG}
# Prüfen, und wenn infiziert, dann mail senden
log_check
# Skript Ende: Job's done...

Zum Testen kann man ein EICAR-File nehmen. Dazu einfach den folgenden String (aber auch nicht mehr oder weniger, nur genau diesen String, auch keinen Zeilenumbruch)…

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

… in eine Datei schreiben. Dieser String ist harmlos, müsste aber von Antivirenscannern als Virus entdeckt werden. Mehr Infos bei EICAR.