#!/bin/bash # Definicje kolorków GREEN='\033[00;92m' BLUE='\033[00;94m' RST='\033[0m' function msg() { echo -e "$BLUE * $GREEN$1$RST" } function makeSnap { FOLDER=~/server_states/state_$(date '+%Y%m%d_%H%M%S') mkdir -p $FOLDER ps aux | awk '{ print $11 }' | sort | uniq | egrep -v '^\[' > $FOLDER/ps.out netstat -lpn | egrep "(tcp.*LISTEN|udp)" | sort | uniq | awk '{split($NF,arr,"/"); print $1 " " $4 " " arr[2]}' > $FOLDER/netstat.out (/sbin/iptables -L -n; echo -e "\n#NAT\n"; /sbin/iptables -L -nt nat) > $FOLDER/iptables.out /sbin/iptables-save > $FOLDER/iptables-save.out mount > $FOLDER/mount.out /sbin/ip route > $FOLDER/routing.out msg "Written state snapshot to $FOLDER" } function compare { FOLDER=~/server_states/$(ls ~/server_states/ | tail -n 1) msg "Comparing with snap $FOLDER" echo -e "$GREEN\nProcesses diff$RST" echo -e "$BLUE============================================================================$RST" ps aux | awk '{ print $11 }' | sort | uniq | egrep -v '^\[' | diff - $FOLDER/ps.out echo -e "$GREEN\nOpened ports diff$RST" echo -e "$BLUE============================================================================$RST" netstat -lpn | egrep "(tcp.*LISTEN|udp)" | sort | uniq | awk '{split($NF,arr,"/"); print $1 " " $4 " " arr[2]}' | diff - $FOLDER/netstat.out echo -e "$GREEN\nFirewall rules diff$RST" echo -e "$BLUE============================================================================$RST" (/sbin/iptables -L -n; echo -e "\n#NAT\n"; /sbin/iptables -L -nt nat) | diff - $FOLDER/iptables.out echo -e "$GREEN\nMounts diff$RST" echo -e "$BLUE============================================================================$RST" mount | diff - $FOLDER/mount.out echo -e "$GREEN\nRouting table diff$RST" echo -e "$BLUE============================================================================$RST" /sbin/ip route | diff - $FOLDER/routing.out } function printHelp { echo -e "Server State 0.2b" echo -e "$BLUE============================================================================$RST" echo -e "Użycie: $0 [PARAMETRY]...\n" printf " $GREEN%-14s$RST %s\n" "snap" "- Make server status snapshot" printf " $GREEN%-14s$RST %s\n\n" "compare" "- Make a diff comparison against latest snapshot" exit 0; } # przy braku argumentów wyświetl pomoc if [ $# -lt 1 ]; then printHelp fi # główny kod case $1 in compare) compare ;; snap) makeSnap ;; *) msg "Nieprawidłowa komenda. Uruchom \"$0 help\" celem wyświetlenia pomocy" ;; esac