A simple SuSe Linux user spot checks, user account info collector, bash.
- From: "johngnub" <johngnub@xxxxxxx>
- Date: 25 Sep 2006 16:03:53 -0700
Was working on user spot check on the hosts, collecting info and the
like. Posting the script here for general know-how and comment /
feedback, at the risk of being mocked in a public forum. Well here it
is, thanks in advance for comments. JB!!
----------------------------------------------------------------
echo "`uname -n` :: User Spot Checks."
# Paths norm are /usr/bin, /bin, for sed,passwd, df and so on.
# Else full paths and checks used to DIAG if missing, is the package
# installed. Bash, I did not test with other shells.
# Fur SuSe Linux, tested on Rel = 9+ 10+.
# Line Formating = One : then data, two :: then errors, host name in
the
# line.
# Why is not the last letter, thus why is why oft the last
# question we ask. "DNA"
# Why no awk, lazy, and tr,cut much smaller in loops.
#
# OOPMH! Augen Auf..... johngnub@xxxxxxx
###########################################
#
# List user details, see man passwd.
passwd -a -S|sed "s/^/`uname -n` : /"
#
# List last bad logins that are in file, see lastb
[ -f /var/log/btmp ] || (
echo "`uname -n` :: No btmp last bad login not tracked." )
[ -f /var/log/btmp ] && (
/usr/bin/lastb|sed "s/^/`uname -n` Last_Bad : /" )
#
# List user details and dates, suff host in the line.
[ -a /usr/bin/chage ] || (
echo "`uname -n` :: No chage command not able to list user age dates."
)
[ -a /usr/bin/chage ] && (
foo=$(passwd -a -S|tr -s ' '|cut -d ' ' -f1)
for x in $foo
do
/usr/bin/chage -l "$x"|sed "s/^/`uname -n` $x : /"
done
)
#
# Look for error in the passwd file, see pwck.
[ -a /usr/sbin/pwck ] || (
echo "`uname -n` :: No pwck not able to check passwd file."
)
[ -a /usr/sbin/pwck ] && (
/usr/sbin/pwck |sed "s/^/`uname -n` : /"
)
#
# Ready a list of mounts for this host.
# Example of a auto list, I used auto list, see below.
# That Regex, drop out df header, cut it, drop out mounts I do not wish
to see.
# Mod for your needs OR just use a manual list, like example above.
# I am skiping the dev dir for the linux lvm, and root it self.
LIST=$(df|egrep -v "Filesystem"|tr -s ' '|cut -d ' ' -f6|egrep -v
"^[/]$|^/dev")
# Today I am useing a manual list.
LIST="/usr
/var
/home
/tmp"
# Warning, this can list out a lot of files.
for x in $LIST
do
find "$x" -nouser -ls|sed "s/^/`uname -n` : /"
done
echo "`uname -n` : Ok Done."
# Ende
.
- Prev by Date: Re: bash: path of script that is being executed
- Next by Date: Re: capture output of an ldapmodify command
- Previous by thread: capture output of an ldapmodify command
- Next by thread: MAILX on an AIX server with arguments
- Index(es):