Monat: Dezember 2010

  • E-Mail versenden per Bash Shell Script

    Ich war gerade mal wieder auf der Suche nach dem Syntax, um per Linux Bash Shell eine Mail zu versenden:

    Direkte Eingabe des Mailtextes:

    echo "MAILTEXT" | mail -s "BETREFF" EMPFÄNGERADRESSE

    z.B.

    echo "Das ist der Text der Testemail" | mail -s "Das ist der Betreff der Testemail" user@example.com

    Mailtext aus einer Datei:

    mail -s "BETREFF" EMPFÄNGERADRESSE < DATEI

    z.B.

    mail -s "Ich bin eine Mail" user@example.com < /etc/hosts

    Quelle: http://www.linux-club.de

  • RSYNC Fehlermeldung: protocol version mismatch — is your shell clean? (rsync error: protocol incompatibility (code 2) at compat.c(171) [receiver=3.0.4])

    Als ich ein Script testen wollte, das ein Verzeichnis mit rsync und ssh von Server1 auf Server2 spiegeln sollte, verweigerte rsync seinen Dienst mit folgender Fehlermeldung:

    protocol version mismatch — is your shell clean?
    rsync error: protocol incompatibility (code 2) at compat.c(171) [receiver=3.0.4]

    Eine Webrecherche brachte die Lösung des Problems. Eigentlich hätte man mit der Fehlermeldung „is your shell clean?“ selbst darauf kommen können.

    Auf dem Server, auf den ich mit rsync zugreifen wollte, befand sich ein Startskript .bashrc mit folgendem Eintrag:

    LOGINSTATION=`who | cut -d“(“ -f2 | cut -d“)“ -f1`
    echo Login von: $LOGINSTATION

    Dieses Skript produzierte bei einem Login eine Ausgabe wie diese:

    Login von: 11-66-100-10-dynip.superkabel.de

    Diese Meldung brachte nun RSYNC aus dem Tritt. Anscheinend setzt rsync eine Loginshell ohne zusätzliche Meldungen vorraus. Deshalb auch die Fehlermeldung: “is your shell clean?”

    Wenn die Meldung aus der .bashrc entfernt wird, funktionierte RSYNC wieder wie gewohnt.

  • Ermitteln der Linuxdistribution, Linuxversion, Kernelversion, CPU, RAM, HD-Kapazität

    Befehle zum Ermitteln der Linux-Distribution und der Version der Linux-Distribution:

    cat /etc/issue

    Beispielausgabe:

    Fedora release 9 (Sulphur)
    Kernel \r on an \m (\l)

    oder

    Welcome to openSUSE 11.1 - Kernel \r (\l).

    Befehle zum Ermitteln der Version des Linuxkernels:

    uname -r

    Ausgabe:

    2.6.27.12-78.2.8.fc9.x86_64
    
    2.6.18-028stab064.7
    
    2.6.27.48-0.1-pae

    oder

    cat /proc/version

    Ausgabe:

    Linux version 2.6.18-028stab064.7 (root@rhel5-64-build) (gcc version 4.1.2 20070 626 (Red Hat 4.1.2-14)) #1 SMP Wed Aug 26 13:11:07 MSD 2009
    
    Linux version 2.6.27.48-0.1-pae (geeko@buildhost) (gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ) #1 SMP 2010-07-05 22:20:39 +0200

     

    Befehle zum Ermitteln der CPU Informationen:

    cat /proc/cpuinfo

    Ausgabe:

    processor : 0
    vendor_id : AuthenticAMD
    cpu family : 16
    model : 2
    model name : Quad-Core AMD Opteron(tm) Processor 2347 HE
    stepping : 3
    cpu MHz : 1431.598
    cache size : 512 KB
    physical id : 0
    siblings : 4
    core id : 0
    cpu cores : 4
    apicid : 0
    fpu : yes
    fpu_exception : yes
    cpuid level : 5
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc nonstop_tsc pni cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy altmovcr8 abm sse4a misalignsse 3dnowprefetch osvw
    bogomips : 3817.59
    TLB size : 1024 4K pages
    clflush size : 64
    cache_alignment : 64
    address sizes : 48 bits physical, 48 bits virtual
    power management: ts ttp tm stc 100mhzsteps hwpstate [8]

    oder

    lscpu

    Ausgabe:

    lscpu
    Architecture:          i686
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                4
    Vendor ID:             AuthenticAMD
    CPU family:            16
    Model:                 2
    Stepping:              3
    CPU MHz:               1425.000
    BogoMIPS:              3817.70
    Virtualization:        AMD-V

    Befehle zum Ermitteln der HD Speicherplatzbelegung:

    df -h

    Ausgabe:

    Dateisystem Size Used Avail Use% Eingehängt auf
    /dev/vzfs   25G  21G  4,6G  82%  /

    Befehle zum Ermitteln der RAM Speicherbelegung:

    free -m -t

    Ausgabe:

          total used free shared buffers cached
    Mem:  2048  72   1975 0      0       0
    -/+ buffers/cache: 72 1975
    Swap: 0 0 0
    Total: 2048 72 1975
  • Unter Linux eine Liste der größten Dateien ausgeben

    Folgende Problemstellung: Es soll unter Linux eine nach Dateigröße sortierte Liste von Dateien ermittelt werden, die eine bestimmte Größe überschreiten.

    find /srv -type f -size +50000k

    Mit dem Find-Befehl wird eine Liste aller Dateien im Verzeichnis /srv und den darin enthaltenen Unterverzeichnissen ermittelt, die größer als 50000 Kb sind. Das Ergebnis ist noch nicht ganz zufriedenstellend, da nur die Dateien ausgegeben werden, nicht aber ihre Größe. Ebenfalls sind die Dateien noch nicht sortiert. Dies lässt sich erreichen, indem man das Ergebnis des Find-Befehls mithilfe des Befehls xargs mit dem ls Befehl kombiniert.

    find /srv -type f -size +50000k| xargs ls -lahS

    Jetzt erhält man die gewünschte Liste mit den Dateien im Verzeichnis /srv, die größer als 50000Kb sind – sortiert nach der Dateigröße.