blog.bartlweb - a technologist's external brain

Thema: Linux

Pfad von ausführbaren Programmen ermitteln

Hin und wieder kommt es vor, dass Shell-Skripte die manuell ausgeführt werden einwandfrei funktionieren, während diese per Cronjob ausgeführt nur Fehler produzieren. Dies liegt oft daran, weil in per Cronjob ausgeführten Skripten die PATH-Variable nicht vorhanden ist. Abhilfe schafft die Angabe des Pfades vor dem jeweiligen Command-Befehls. Um einen Pfad zu einem Linux-Command-Befehl zu ermitteln nutzt man den Befehl which.

which <command>
which ping

Dieses Problem ist mir vor allem unter MacOSX aufgefallen (hier liegt der ping-Befehl z.B. unter /sbin/ping).

Die gesetzten Pfade für das ausführen von Programmen kann man sich übringens mit dem folgenden Befehl ausgeben lassen.

echo $PATH

RPM unter OpenSuse installieren

RPM-Dateien (.noarch.rpm) werden unter OpenSuse mit dem folgenden Befehl installiert:

rpm --install <dateiname>.noarch.rpm

Cronjobs – wiederkehrende Aufgaben unter Linux managen

Cronjobs sind unter Linux das Mittel der Wahl wenn es um automatisierte wiederkehrende Aufgaben geht. Unter Windows nennt sich diese Prinzip "Geplante Aufgaben".

Cronjobs verwalten

Cronjobs werden unter Linux immer für den aktuellen Benutzer verwaltet. Alle als Benutzer angelegte Cronjobs werden auch mit dessen Nutzerrechten ausgeführt.

Der folgende Befehl listet alle für den aktuellen Benutzer angelegten Cronjobs auf:

crontab -l

Um Cronjobs zu verwalten, hilft der folgende Befehl. Dieser öffnet die Konfigurationsdatei im Texteditor vi.

Erreichbarkeit von Servern mittels Perl-Skript überwachen

Das folgende Perl-Skript überwacht die Erreichbarkeit von Servern mittels ping oder SSH-Login. Im Fehlerfall wird ein Administrator über die nicht Erreichbarkeit per E-Mail informiert. Um die Überprüfung per SSH zu ermöglichen, muss der Login auf dem Entfernten Server mittels Public-Key, d.h ohne Passwort möglich sein.

Perl-Skript für die Überwachung des freien Fesplattenspeicherplatzes

Das folgende Perl-Skript überwacht unter Linux den freien Speicherplatz der verbauten Festplatten (bzw. gemounteten Partitionen). Dabei lässt sich das Benachrichtigungs-E-Mail und der Schwellenwert für den freien Speicherplatz konfigurieren.

#!/usr/bin/perl
 
#
# settings
#
 
$threshold = 90;
$excludeRegex = "^\/dev\/disk2";
 
$mailfrom = "server\@domain.com";
$mailto = "admin\@domain.com";
$subject = "Server: Low Disk Space!";
 
#
# script
#
 
use FileHandle;
 
@check=`df -h`;
 
@warn = grep { m/(\d+\%)/ and $1 >= $threshold } @check;
 
$counter = 0;
$content = "";
foreach (@warn) {
   if($excludeRegex ne "") {
      if($_ !~ m/$excludeRegex/) {
         $content = $content . $_ . "\n";
         $counter++;
      }
   } else {
      $content = $content . $_ . "\n";
      $counter++;
   }
}
 
if($counter != 0){
   $mail = new FileHandle;
   $mail->open("| /usr/sbin/sendmail -t") || die "Cannot open: $!";
 
   $mail->print("From: $mailfrom\n");
   $mail->print("To: $mailto\n");
   $mail->print("Subject: $subject\n\n");
   $mail->print($content);
 
   $mail->close();
}

Perl-Skript für überwachte Backups mit Hilfe von rsync

Das folgende Perl-Skript holt sich Verzeichnisse via rsync über SSH von einen entfernten Linux-Rechner und sichert diese lokal. Konfigurieren lässt sich dabei der Remote-Host und die zu sichernden Verzeichnisse sowie die Benachrichtigung via E-Maill. Das Skript lässt sich per Cronjob aufrufen und sendet nur im Falle eines Fehlers ein E-Mail.

IP-Adresse via Shell-Skript ermitteln

Das folgende Shell-Skript für Linux ermittelt mit Hilfe des Webservice DynDNS die aktuelle öffentliche IP-Adresse ihrers Internetanschlusses und speichert diese in eine Textdatei.

wget http://checkip.dyndns.org/ -O /dev/stdout 2>/dev/null | sed "s/.*Current IP Address: \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*/\1/" > /tmp/ip.txt

SMTP Relay Host mit Authentifizierung in Postfix konfigurieren

In den seltesten Fällen ist der eigene Server in der Lage direkt E-Mails an öffentliche Mailserver zu senden ohne unter SPAM-Verdacht zu geraten. In den meisten Fällen bedient man sich daher einem Relay Host. Im folgenden wird die Konfiguration des eigenen Postfix zur Verwendung eines Relay Hosts mit Authentifizierung beschrieben.

Passwort lokal speichern

Der einzige Haken bei dieser Methode ist, dass in den lokalen Konfigurationsdateien das Passwort des Mailservers im Klartext gespeichert wird.

echo [mailrelay.domain.com] [username]:[password] > /etc/postfix/relay_password postmap hash:/etc/postfix/relay_password

Postfix konfigurieren

Um die Konfiguration anzupassen fügen Sie am besten die folgenden Zeilen ans Ende der Datei /etc/postfix/main.cf ein. Zuvor getätigte Konfigurationen für die unten genannten Punkte werden dabei automatisch überschrieben.

Datei via SSH kopieren

Um einzelne Dateien zwischen Linux-Maschinen hin und her zu kopieren nutzt man am einfachsten das über SSH funktionierende SCP (Secure Copy).

scp -P [port] [file] [remoteuser]@[remotehost]:[remotepath]

Beispiel:

scp -P 22 /home/user/file.txt root@myserver.com:/mnt/data/