You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.1 KiB
84 lines
2.1 KiB
#!/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 colorDiff {
|
|
awk '/^>/ { print "\033[31m"$0"\033[0m"; } /^</ { print "\033[32m"$0"\033[0m"; } /^[^<>]/ { print $0; }'
|
|
}
|
|
|
|
function HL {
|
|
echo -e "$BLUE============================================================================$RST"
|
|
}
|
|
|
|
function procList {
|
|
ps aux | awk '{ print $11 }' | sort | uniq | egrep -v '^\['
|
|
}
|
|
|
|
function portList {
|
|
netstat -lpn | egrep "(tcp.*LISTEN|udp)" | sort | uniq | awk '{split($NF,arr,"/"); print $1 " " $4 " " arr[2]}'
|
|
}
|
|
|
|
function firewallRules {
|
|
(/sbin/iptables -L -n; echo -e "\n#NAT\n"; /sbin/iptables -L -nt nat)
|
|
}
|
|
|
|
function routingTable {
|
|
/sbin/ip route
|
|
}
|
|
|
|
function makeSnap {
|
|
FOLDER=~/server_states/state_$(date '+%Y%m%d_%H%M%S')
|
|
mkdir -p $FOLDER
|
|
procList > $FOLDER/ps.out
|
|
portList > $FOLDER/netstat.out
|
|
firewallRules > $FOLDER/iptables.out
|
|
/sbin/iptables-save > $FOLDER/iptables-save.out
|
|
mount > $FOLDER/mount.out
|
|
routingTable > $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"; HL; procList | diff - $FOLDER/ps.out | colorDiff
|
|
echo -e "$GREEN\nOpened ports diff$RST"; HL; portList | diff - $FOLDER/netstat.out | colorDiff
|
|
echo -e "$GREEN\nFirewall rules diff$RST"; HL; firewallRules | diff - $FOLDER/iptables.out | colorDiff
|
|
echo -e "$GREEN\nMounts diff$RST"; HL; mount | diff - $FOLDER/mount.out | colorDiff
|
|
echo -e "$GREEN\nRouting table diff$RST"; HL; routingTable | diff - $FOLDER/routing.out | colorDiff
|
|
}
|
|
|
|
function printHelp {
|
|
echo -e "State Snap 0.2b"; HL
|
|
echo -e "Use: $0 [PARAMETRS]...\n"
|
|
printf " $GREEN%-6s$RST %s\n" "snap" "- Make server status snapshot"
|
|
printf " $GREEN%-6s$RST %s\n\n" "diff" "- 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
|
|
diff)
|
|
compare
|
|
;;
|
|
snap)
|
|
makeSnap
|
|
;;
|
|
*)
|
|
msg "Nieprawidłowa komenda. Uruchom \"$0 help\" celem wyświetlenia pomocy"
|
|
;;
|
|
esac
|
|
|
|
|
|
|