meta data for this page
  •  

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
shell:find_shell_scripts [2019/05/15 16:25] adminshell:find_shell_scripts [2020/03/09 11:50] (aktuális) admin
Sor 1: Sor 1:
 ====== Shell szkript felderítő szkript ====== ====== Shell szkript felderítő szkript ======
  
-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. +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, email 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.+Paraméterként meg lehet neki adni, hogy mely könyvtárra fusson, egyébként az egész fájlrendszerben keres. Illetve szkript lista fájl is megadható neki paraméterként, akkor az abban felsorolt szkripteket elemzi. Ilyen bemenetet gyárt kimenetként pl a crontab bejegyzésekből az alábbi szkript: 
 + 
 +<file sh collect_crontab_scripts.sh> 
 +#!/bin/sh 
 +#grep -R ".*" /var/spool/cron/ | sed -e 's/^\/var\/spool\/cron\/crontabs\///' | grep -v ':#' | grep -v '^$' | egrep -v '(errclear|clcycle|dumpcheck|lpar2rrd|pmcfg|motd|mkpasswd|logrotate|dumpctrl|sa1|sa2|Internal-Function|======|at.allow)' 
 +find /var/spool/cron/ -type f | xargs -I{} cat {} | grep -v '^#' | grep -v '^$' | egrep -v '(errclear|clcycle|dumpcheck|lpar2rrd|pmcfg|motd|mkpasswd|logrotate|dumpctrl|sa1|sa2|Internal-Function|======|at.allow)' | sed -e 's/^[^/$]*//' -e 's/[ >].*$//' | sort | uniq | while read SOR; do 
 +        if echo $SOR | egrep -s '^\$'; then 
 +                VARIABLE=$(echo $SOR | sed 's/^.*\(\$[a-zA-Z0-9_]*\)[^a-zA-Z0-9_].*$/\1/'
 +                USER=$(grep -R "$SOR" /var/spool/cron/ | sed 's/^.*\/\([a-z]*\):.*/\1/'
 +                HOME=$(lsuser -a home $USER | awk -F'=' '{print $2}' | sed 's/\//\\\//g'
 +                echo "$SOR" | sed "s/$VARIABLE/$HOME/" 
 +        fi 
 +        echo $SOR 
 +done 
 +</file> 
 + 
 <file sh find_shell_scripts.sh> <file sh find_shell_scripts.sh>
 #!/bin/ksh #!/bin/ksh
 COMMAND_LIST="ssh ftp sftp rsh rdist rsync scp dsh rdsh mail sqlplus mutt" COMMAND_LIST="ssh ftp sftp rsh rdist rsync scp dsh rdsh mail sqlplus mutt"
 TMPFILE="/tmp/find_shell_scripts.sh.tmp" TMPFILE="/tmp/find_shell_scripts.sh.tmp"
 +CSVFILE=$(hostname)_script_catalog.out
 +>$CSVFILE
 if [[ -d $1 ]]; then if [[ -d $1 ]]; then
         STARTDIR="$1"         STARTDIR="$1"
Sor 15: Sor 33:
 fi fi
  
-echo "FILE NAME;SHASUM;MTIME;CRONTAB;IPS;COMMANDS" | awk -F';' '{printf "%-60s %-41s %-21s %-15s %-20s %-20s\n",$1,$2,$3,$4,$5,$6}'+echo "FILE NAME;MTIME;CRONTAB;IPS;COMMANDS;EMAILS" | awk -F';' '{printf "%-60s %-21s %-15s %-20s %-20s %-30s\n",$1,$2,$3,$4,$5,$6}' 
 +echo "FILE NAME;MTIME;CRONTAB;IPS;COMMANDS;EMAILS;SHASUM" | awk -F';' '{printf "%-60s;%-21s;%-15s;%-20s;%-20s;%-30s;%-41s\n",$1,$2,$3,$4,$5,$6,$7}' >> $CSVFILE
 if [[ -n $FILE_LISTA ]]; then if [[ -n $FILE_LISTA ]]; then
         cat $FILE_LISTA > $TMPFILE         cat $FILE_LISTA > $TMPFILE
Sor 23: Sor 42:
  
 cat $TMPFILE | grep -v '^$' | while read FILE; do cat $TMPFILE | grep -v '^$' | while read FILE; do
-    if [[ $(file $FILE | egrep -c '(: shell script|: commands text)') -eq 1 || -n $FILE_LISTA ]]; then +    if [[ -f $FILE ]]; then 
-        if [[ -f $FILE ]]; then+        if [[ $(file $FILE | egrep -c '(: shell script|: commands text)') -eq 1 || -n $FILE_LISTA ]]; then
                 MTIME=$(istat $FILE | awk -F' ' '/Last modified/{print $8"."$4"."$5"-"$6}')                 MTIME=$(istat $FILE | awk -F' ' '/Last modified/{print $8"."$4"."$5"-"$6}')
  
Sor 35: Sor 54:
                 if [[ -n $CRONTABS && -n $ATJOBS ]]; then CRONTABS="$CRONTABS,$ATJOBS"; fi                 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 +                IPS=$(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 --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+                        echo "$SOR"perl -wne'while(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/g){print "$&\n"}
-                done | sort | uniq | tr '\n' ',' | sed -e 's/^/hosts:/' -e 's/,*$//')+                done | sort | uniq | tr '\n' ',' | sed -e 's/^/ips:/' -e 's/,*$//'
 + 
 +                EMAILS=$(egrep "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}" "$FILE" while read SOR; do 
 +                        echo "$SOR" | perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' 
 +                done | sort | uniq | tr '\n' ',' | sed -e 's/^/emails:/' -e 's/,*$//')
  
                 COMMANDS=$(for COMMAND in $COMMAND_LIST; do                 COMMANDS=$(for COMMAND in $COMMAND_LIST; do
Sor 44: Sor 67:
                         fi                         fi
                 done | sort | uniq | tr '\n' ',' | sed -e 's/^/commands:/' -e 's/,*$//')                 done | sort | uniq | tr '\n' ',' | sed -e 's/^/commands:/' -e 's/,*$//')
-                echo "$FILE;$(shasum $FILE | awk '{print $1}');$MTIME;$CRONTABS;$IPS;$COMMANDS" | awk -F';' '{printf "%-60s %-41s %-21s %-15s %-20s %-20s\n",$1,$2,$3,$4,$5,$6}'+                echo "$FILE;$MTIME;$CRONTABS;$IPS;$COMMANDS;$EMAILS" | awk -F';' '{printf "%-60s %-21s %-15s %-20s %-20s %-30s\n",$1,$2,$3,$4,$5,$6}' 
 +                echo "$FILE;$MTIME;$CRONTABS;$IPS;$COMMANDS;$EMAILS;$(shasum $FILE | awk '{print $1}')" | awk -F';' '{printf "%-60s;%-21s;%-15s;%-20s;%-20s;%-30s;%-41s\n",$1,$2,$3,$4,$5,$6,$7}' | sed -e 's/crontab://' -e 's/emails://' -e 's/commands://' -e 's/ips://' -e 's/atjobs://' >> $CSVFILE
         fi         fi
 +    else
 +        echo "$FILE;Nem nyithato meg a fajl." | awk -F';' '{printf "%-60s %-41s\n",$1,$2}'
 +        echo "$FILE;Nem nyithato meg a fajl." | awk -F';' '{printf "%-60s;%-41s\n",$1,$2}' >> $CSVFILE
     fi     fi
 done done
 rm -f $TMPFILE rm -f $TMPFILE
 </file> </file>