Script ausgaben an mailx übergeben
Script ausgaben an mailx übergeben
mehrere befehle in case
beispiel:
case
y ) ping 127.0.0.1;
whois 127.0.0.1;
hiernach soll die ausgabe der befehle peer mail weitergeleitet werden
> 2>&1 | mailx -s "auswertung" root 2>&1
;;
n ) echo " der eingegebene code hat keinen sinn ist nur ein beispiel";
;;
* ) echo " fehler "
;;
esac
wenn ich die ablaufenden befehle im teile " y ) " in {} setze und case wech lassen, funtzt es mit der mail.
wenn ich den teil in " y) " im zusammenhang mit case in {} setze gehts nicht mehr.
jemand eine idee wie ich da weiterkomme.
ich hoffe der kurze code teil trägt genug zum verständniss bei, wollte mir es sparen das forum mit den gesammten script vollzuhauen. da es selbst einiges zeilen umfasst.
gruss helsaett
beispiel:
case
y ) ping 127.0.0.1;
whois 127.0.0.1;
hiernach soll die ausgabe der befehle peer mail weitergeleitet werden
> 2>&1 | mailx -s "auswertung" root 2>&1
;;
n ) echo " der eingegebene code hat keinen sinn ist nur ein beispiel";
;;
* ) echo " fehler "
;;
esac
wenn ich die ablaufenden befehle im teile " y ) " in {} setze und case wech lassen, funtzt es mit der mail.
wenn ich den teil in " y) " im zusammenhang mit case in {} setze gehts nicht mehr.
jemand eine idee wie ich da weiterkomme.
ich hoffe der kurze code teil trägt genug zum verständniss bei, wollte mir es sparen das forum mit den gesammten script vollzuhauen. da es selbst einiges zeilen umfasst.
gruss helsaett
-
- Beiträge: 520
- Registriert: 12.06.2003 23:18:50
- Wohnort: Siegburg
Re: Script ausgaben an mailx übergeben
Ich verstehe nicht so genau, was du damit sagen möchtest.HelsAett hat geschrieben:mehrere befehle in case
beispiel:
case
y ) ping 127.0.0.1;
whois 127.0.0.1;
hiernach soll die ausgabe der befehle peer mail weitergeleitet werden
> 2>&1 | mailx -s "auswertung" root 2>&1
;;
...
esac
wenn ich die ablaufenden befehle im teile " y ) " in {} setze und case wech lassen, funtzt es mit der mail.
wenn ich den teil in " y) " im zusammenhang mit case in {} setze gehts nicht mehr.
Allein das ping verhindert, daß das Skript beendet wird. Du mußt mit
Code: Alles auswählen
ping -c 5 127.0.0.1
So
Code: Alles auswählen
case
y) { ping -c 5 127.0.0.1; whois 127.0.0.1; } 2>&1 | mailx -s "auswertung" root ;;
...
esac
Code: Alles auswählen
Olaf Dietsche
case
y) { ping -c 5 127.0.0.1; whois 127.0.0.1; } 2>&1 | mailx -s "auswertung" root ;;
...
esac
dass der erste gepostete gepostete code nicht ganz echt ist und keinen sinn ergibt hab ich oben auch schon beschrieben. das war nur als beispiel gedacht um die problematik verständlicher zumachen.
Wollt doch den leuten hier ersparen sich durch den ganzen script zuwühlen
aber nagut haue ich mal das script hier rein :
# -------------------------- / kleines IDS \ -------------------------------#
#
# Dieses Script Ueberprueft die Einstellungen Ihres System`s um spaeter
# eventuell auftrettende Aenderungen leichter Ausfindig zu machen !
#
#
#
# --------------------------------------------------------------------------#
echo " Um dieses Script ausfuehren, muss es im Root Verzeichniss gestartet
werden, dazu benoetigen Sie Root Recht ! Wollen Sie dieses Scripte
Starteten [yes] [no]"
echo -n "Script Starten:"
read eingabe
case "$eingabe" in
yes | y ) {
echo "Ausgabe kleines IDS `date` und `/bin/hostname`"
echo ""
# loescht a.out und .o files die aelter als 7 Tage sind
/usr/bin/find / \ -name a.out -name core -name '*.o' \
-atime + 7 \ -exec /bin /rm -f {} \;
# saeubert /tmp and /usr/tmp
/usr/bin/find /tmp -type f -atime + 7 -exec /bin/rm -f
{} \;
/usr/bin/find /usr/tmp -type f -atime + 7 -exec /bin/rm
-f {} \;
# findet Accounts ohne password
echo ""
echo "Accounts ohne password"
echo "----------------------"
/bin/grep '^[^:}*::' /etc/shadow
# findet Accounts mit UID und/oder GID von 0
echo ""
echo "Accounts mit ID 0"
echo "-----------------"
/bin/grep ':00*:' /etc/passwd
echo "SUID-files"
echo "----------"
/usr/bin/find / -perm -4000 -type f -exec ls -l {} \;
echo ""
echo "SGID-files"
echo "----------"
/usr/bin/find / -perm -2000 -type f -exec ls -l {} \;
echo ""
# Sucht offene Port`s auf dem System
echo "Offene Ports"
echo "------------"
/usr/bin/nmap / 127.0.0.1 -p 1-65535;
echo ""
} > 2>&1 | mailx -s "kleines IDS" root 2>&1 #<----- HIER IST DAS PROBLEM
echo "Ueberpruefung beendet"
;;
no | n ) echo "Ueberpruefung des Systems abgebrochen"
;;
* ) echo "Falsche Eingabe"
;;
esac
exit
grüsse helsaett
Zuletzt geändert von HelsAett am 07.09.2014 17:01:41, insgesamt 1-mal geändert.
-
- Beiträge: 520
- Registriert: 12.06.2003 23:18:50
- Wohnort: Siegburg
Dieses SkriptHelsAett hat geschrieben:so funktioniert es leider nicht, hab ich auch schon versucht, wie auch im ersten posting geschrieben.Code: Alles auswählen
Olaf Dietsche case y) { ping -c 5 127.0.0.1; whois 127.0.0.1; } 2>&1 | mailx -s "auswertung" root ;; ... esac
dass der erste gepostete gepostete code nicht ganz echt ist und keinen sinn ergibt hab ich oben auch schon beschrieben. das war nur als beispiel gedacht um die problematik verständlicher zumachen.
Wollt doch den leuten hier ersparen sich durch den ganzen script zuwühlen
Code: Alles auswählen
#! /bin/sh
eingabe=y
case "$eingabe" in
y) { ping -c 5 127.0.0.1; whois 127.0.0.1; } 2>&1 | mailx -s "auswertung" olaf ;;
esac
Ein Möglichkeit warum dein Skript nicht funktioniert, könnte diese Zeile sein:
Code: Alles auswählen
} > 2>&1 | mailx -s ...
Code: Alles auswählen
} 2>&1 | mailx -s ...
-
- Beiträge: 520
- Registriert: 12.06.2003 23:18:50
- Wohnort: Siegburg
Das ist richtig, aber dann muß nach dem > auch ein Ziel (z.B. eine Datei) angegeben werden. In deinem Fall ist das Ziel aber die Pipe, folglich erübrigt sich eine Umleitung von stdout. Lediglich stderr muß mit in die Pipe umgebogen werden, deswegen das 2>&1 (stderr wird nach stdout umgeleitet).HelsAett hat geschrieben:2>&1 | mailx -s "auswertung" root;;
tatsächlich ohne " > " gehts, hmm wunder muss nicht eine umleitung normalerweise mit " > " geschehen.