N
newbie_ub
Grünschnabel
Hallo zusammen
Ich bin recht neu in der UNIX-Welt und das hier ist das erste Shell-Skript, dass ich schreibe^^.
Es soll mir die last zusammen mit den Namen in etc/passwd anzeigen.
Im Moment habe ich folgendes Skript:
Es geht hier nur um die MAIN () Funktion. Die While-Schlaufe habe ich gerade vorher erstellt, um zu fragen, ob das ausgewählte Datum i.O. ist, ob sie funktioniert weiss ich momentan nicht, da ich nicht auf den Server komme - könnte ja auch jemand korrigieren .
Aber nun zum Thema, bei Z. 121 werden mir die LAST angezeigt (bei uns sind das ID's wie "A328051"), diese habe ich versucht mit dem Code ab Z.126 in eine temporäre Datei zu lesen und danach sollte es diese ID's in /etc/passwd mit den richtigen Namen zusammen fügen und danach gemeinsam ausgeben, z.B.
A328051 Alexander Wälchli
Ist sowas überhaupt möglich? In dem LAST, wenn ich es ganz auslese, steht noch das Datum und die Uhrzeit, welche aber durch viele Leerzeichen getrennt sind (ziemlich dumm finde ich) und ist es möglich, dass auch noch auszugeben??
Zum Beispiel so (schön sotiert):
A328051 Alexander Wälchli Sept 13 09:44
Wäre sehr nett, wenn mir jemand helfen könnte!!!
Freundliche Grüsse
Ich bin recht neu in der UNIX-Welt und das hier ist das erste Shell-Skript, dass ich schreibe^^.
Es soll mir die last zusammen mit den Namen in etc/passwd anzeigen.
Im Moment habe ich folgendes Skript:
Code:
#!/bin/ksh
################################################################################
# File : v01_get_last.sh #
# Desc : #
# #
# Prereq : #
# Usage : #
# #
# History: When Author Version What #
# 2011/09 Alexander Wälchli 1.1 created #
# #
################################################################################
################################################################################
# BEGIN: VARIABLES section #
################################################################################
VERSION=1.1
DEBUG_MODE=N
ENVIRONMENT_FILE=$HOME/.vZiM_oracle.environment
CURRENT_DATUM=`date '+%Y-%m-%d'`
CURRENT_TIME=`date '+%H:%M'`
CURRENT_USER=`who am i | cut -f 1 -d " "`
DATE_AUSWAHL=``
HELP_STRING="
Template to use when creating new KIRK22 Shell Script
Usage:
`basename $0` [options]
Options currently supported:
\t--help prints this help
\t--debug be more verbosely
\t--test=[Y|N] be more verbosely
"
# Arrays to store command line parameters
key=
value=
################################################################################
# BEGIN: Subroutines section #
################################################################################
# GENERIC: Print given string only wgen debug modus is on
function print_debug {
test "$DEBUG_MODE " = "Y " && echo "$*"
}
# GENERIC: Print out help text and exit
function print_help_and_exit {
echo "$HELP_STRING"
exit;
}
# GENERIC: Process command line parameters. Save results in two global arrays
function parse_parameter {
typeset -i i=0
while [ "$1 " != " " ] ; do
key[$i]=`echo $1 | cut -f1 -d=`
value[$i]=`echo $1 | cut -f2 -d=`
# some generic parameters can be processed directly here
case ${key[$i]} in
--help )
print_help_and_exit
;;
--debug)
if [ "${value[$i]} " = "Y " -o \
"${value[$i]} " = "y " -o \
"${value[$i]} " = "--debug " \
] ; then
echo "$CURRENT_DATUM $CURRENT_TIME - Starting in DEBUG MODE"
DEBUG_MODE=Y
else
DEBUG_MODE=N
fi
;;
* )
;;
esac
let i+=1
shift
done
}
################################################################################
# FUNCTION: MAIN() #
################################################################################
# Einleitung ###################################################################
echo
echo "*****************************************************************"
echo "* Wer benutzte als Letzter die Datenbank? *"
echo "*****************************************************************"
echo
# Variabel DATE_AUSWAHL ausfüllen ##############################################
echo "Welcher Tag, bzw. Monat soll aufgelistet werden? \c"
echo "Bitte angeben (Format für Monat ist 'Sep', für Tag ist '14' -> Beispiel 'Sep 14'): "
echo
read DATE_AUSWAHL
echo "ist ihr ausgewähltes Datum, ist dieses Datum okay? [J/N]"
read OKAY
j=0
while [ j=0 ] ; do
if [ $OKAY = "J" ] ; then
# Last anzeigen
echo
echo "Die User, welche am bestimmten Tag online waren, sind:"
last | grep -v "^s" | grep "$DATE_AUSWAHL" | cut -f1 -d " "
echo
j+1=j
# Daten in temporäre Datei speichern
n=1
while read line ; do
eval "line$n=\"$line\""
n=`expr $n + 1`
done < $DATAFILE
echo "line1";
echo "line2";
# Daten von temporären Datei laden
# cut -f1,5 -d ":" /etc/passwd | sed 's/:/ /g'
else
# Datum verändern
echo "Bitte ein neues Datum eingeben (Format für Monat ist 'Sep', für Tag ist '14' -> Beispiel 'Sep 14')::"
read OKAY
done
Es geht hier nur um die MAIN () Funktion. Die While-Schlaufe habe ich gerade vorher erstellt, um zu fragen, ob das ausgewählte Datum i.O. ist, ob sie funktioniert weiss ich momentan nicht, da ich nicht auf den Server komme - könnte ja auch jemand korrigieren .
Aber nun zum Thema, bei Z. 121 werden mir die LAST angezeigt (bei uns sind das ID's wie "A328051"), diese habe ich versucht mit dem Code ab Z.126 in eine temporäre Datei zu lesen und danach sollte es diese ID's in /etc/passwd mit den richtigen Namen zusammen fügen und danach gemeinsam ausgeben, z.B.
A328051 Alexander Wälchli
Ist sowas überhaupt möglich? In dem LAST, wenn ich es ganz auslese, steht noch das Datum und die Uhrzeit, welche aber durch viele Leerzeichen getrennt sind (ziemlich dumm finde ich) und ist es möglich, dass auch noch auszugeben??
Zum Beispiel so (schön sotiert):
A328051 Alexander Wälchli Sept 13 09:44
Wäre sehr nett, wenn mir jemand helfen könnte!!!
Freundliche Grüsse