meta data for this page
Ez a dokumentum egy előző változata!
Felderíti a hoszton lévő shell szkripteket, és megmutatja a sha hast-üket, a módosítási dátumukat, meg van-e hívva valakinek a crontab-jából, illetve van-e benne IP cím, vagy előre definiált parancsok valamelyike. Paraméterként meg lehet neki adni, hogy mely könyvtárra fusson, egyébként az egész fájlrendszerben keres.
- find_shell_scripts.sh
#!/bin/sh COMMAND_LIST="ssh ftp sftp rsh rdist rsync scp dsh rdsh" if [[ -d $1 ]]; then STARTDIR="$1" else STARTDIR='/' fi echo "FILE NAME;SHASUM;MTIME;CRONTAB;HOSTS;COMMANDS" | awk -F';' '{printf "%-50s %-41s %-21s %-15s %-20s %-20s\n",$1,$2,$3,$4,$5,$6}' find $STARTDIR -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \) | while read FILE; do if [[ $(file $FILE | grep -c ': shell script') -eq 1 ]]; then MTIME=$(istat $FILE | awk -F' ' '/Last modified/{print $8"."$4"."$5"-"$6}') CRONTABS=$(grep -R "$FILE" /var/spool/cron/ | while read SOR; do echo "$SOR" | awk -F':' '{print $1}' | awk -F'/' '{print $NF}'; done | sort | uniq | tr '\n' ',' | sed -e 's/^/crontab:/' -e 's/,*$//') ATJOBS=$(grep -R "$FILE" /var/spool/atjobs/ | while read SOR; do echo "$SOR" | awk -F':' '{print $1}' | awk -F'/' '{print $NF}'; done | sort | uniq | tr '\n' ',' | sed -e 's/^/atjobs:/' -e 's/,*$//') if [[ -n $CRONTABS && -n $ATJOBS ]]; then CRONTABS="$CRONTABS,$ATJOBS"; fi HOSTS=$(egrep "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" "$FILE" | while read SOR; do echo "$SOR" | sed -ne 's/^[^0-9]*\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*$/\1/gp' #| sed -n -e "s/.*\((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1- 9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\).*/\1/p" done | sort | uniq | tr '\n' ',' | sed -e 's/^/hosts:/' -e 's/,*$//') COMMANDS=$(for COMMAND in $COMMAND_LIST; do if [[ $(grep -c "$COMMAND" $FILE) -gt 0 ]]; then echo "$COMMAND" fi done | sort | uniq | tr '\n' ',' | sed -e 's/^/commands:/' -e 's/,*$//') echo "$FILE;$(shasum $FILE | awk '{print $1}');$MTIME;$CRONTABS;$HOSTS;$COMMANDS" | awk -F';' '{printf "%-50s %-41s %-21s %-15s %-20s %-20s\n",$1,$2,$3,$4,$5,$6}' fi done