commit
6789281948
2 changed files with 74 additions and 0 deletions
@ -0,0 +1,8 @@ |
|||||||
|
* Servcheck |
||||||
|
Ever had problem with running services after server reboot? |
||||||
|
This script snaps state of things such as: |
||||||
|
- List of unique processes names |
||||||
|
- List of opened TCP/UDP ports along with proces name |
||||||
|
- Firewall rules dump |
||||||
|
- Routing table |
||||||
|
After restart, you can use the script to create diff's with latest snaps made, making it easy to find out what isn't working. |
||||||
@ -0,0 +1,66 @@ |
|||||||
|
#!/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/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\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 |
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in new issue