diff --git a/statesnap.sh b/statesnap.sh index 9e38c7e..c998047 100755 --- a/statesnap.sh +++ b/statesnap.sh @@ -1,40 +1,51 @@ #!/bin/bash -# Definicje kolorków +# CONFIG +SNAP_FOLDER="~/server_states" + +# Bash color definitions GREEN='\033[00;92m' BLUE='\033[00;94m' RST='\033[0m' +# print color message function msg() { echo -e "$BLUE * $GREEN$1$RST" } +# colorify diff output function colorDiff { awk '/^>/ { print "\033[31m"$0"\033[0m"; } /^]/ { print $0; }' } +# print horizontal line function HL { echo -e "$BLUE============================================================================$RST" } +# print and format unique processes names function procList { ps aux | awk '{ print $11 }' | sort | uniq | egrep -v '^\[' } +# print and format opened TCP/UDP ports and process names function portList { netstat -lpn | egrep "(tcp.*LISTEN|udp)" | sort | uniq | awk '{split($NF,arr,"/"); print $1 " " $4 " " arr[2]}' } +# print firewall rules (standard + NAT table) function firewallRules { (/sbin/iptables -L -n; echo -e "\n#NAT\n"; /sbin/iptables -L -nt nat) } +# print routing table function routingTable { /sbin/ip route } +# make status snap function makeSnap { - FOLDER=~/server_states/state_$(date '+%Y%m%d_%H%M%S') + FOLDER=$SNAP_FOLDER/state_$(date '+%Y%m%d_%H%M%S') mkdir -p $FOLDER procList > $FOLDER/ps.out portList > $FOLDER/netstat.out @@ -45,8 +56,9 @@ function makeSnap { msg "Written state snapshot to $FOLDER" } +# comapring states to previous snap function compare { - FOLDER=~/server_states/$(ls ~/server_states/ | tail -n 1) + FOLDER=$SNAP_FOLDER/$(ls ~/server_states/ | tail -n 1) msg "Comparing with snap $FOLDER" echo -e "$GREEN\nProcesses diff$RST"; HL; procList | diff - $FOLDER/ps.out | colorDiff echo -e "$GREEN\nOpened ports diff$RST"; HL; portList | diff - $FOLDER/netstat.out | colorDiff @@ -55,6 +67,7 @@ function compare { echo -e "$GREEN\nRouting table diff$RST"; HL; routingTable | diff - $FOLDER/routing.out | colorDiff } +# Checking if root privileges function nonRootExit { if [[ $EUID -ne 0 ]]; then msg "This command must be run as root" @@ -62,6 +75,7 @@ function nonRootExit { fi } +# Printing help function printHelp { echo -e "State Snap 0.3"; HL echo -e "Use: $0 [PARAMETRS]...\n" @@ -70,12 +84,12 @@ function printHelp { exit 0; } -# przy braku argumentów wyświetl pomoc +# Print help if no arguments if [ $# -lt 1 ]; then printHelp fi -# główny kod +# Program starts here case $1 in diff) nonRootExit