30b035d355db0ec205118712c3d776a0af09a194
[bootcd.git] / initscripts / pl_functions
1 #-*-shell-script-*-
2
3 function verbose-message () {
4     echo ""
5     echo $(date "+%H:%M:%S") " ==================== " "$@"
6 }
7
8 function verbose-run () {
9     echo $(date "+%H:%M:%S") " ========== running" "$@"
10     "$@"
11     echo $(date "+%H:%M:%S") " ==========" "$@" "returned with retcod=$?"
12 }
13
14 function verbose-file() {
15     file=$1; shift
16     echo "$file"
17     if ! [ -f "$file" ]; then
18         verbose-message "!!!!!!!!!! missing $file"
19     else
20         verbose-run cat $file
21     fi
22 }
23
24 function verbose-file-uncommented-patterns () {
25     file=$1; shift
26     egrep_pattern=$2; shift
27
28     if ! [ -f "$file" ]; then
29         verbose-message "!!!!!!!!!! missing $file"
30     else
31         echo '---------- egrep $egrep_pattern' $file
32         grep -v '^#' $file | egrep "$egrep_pattern"
33     fi
34 }
35     
36 function verbose-forensics () {
37     message="$1"; shift
38     verbose-message "BEG FORENSICS -- $message"
39     verbose-run dmesg
40     verbose-run lsmod
41     verbose-run lspci
42     
43     # XXX : need to check for a running udev
44
45     for file in /etc/resolv.conf /run/resolvconf/resolv.conf /etc/sysconfig/network-scripts/ifcfg-eth*; do 
46         verbose-file $file
47     done
48     verbose-message Configured interfaces
49     verbose-run ls -l /sys/class/net/
50     verbose-run cat /proc/net/dev
51     verbose-run ip address show
52     verbose-message Routing table
53     verbose-run ip route show
54     BOOT_FILE=/usr/boot/boot_server
55     BOOT_SERVER=$(cat $BOOT_FILE)
56     verbose-message Pinging boot server $BOOT_SERVER "(" from file $BOOT_FILE ")"
57     verbose-run ping -c 4 -w 4 $BOOT_SERVER
58     verbose-message Pinging google public DNS 
59     verbose-run ping -c 1 -w 5 8.8.8.8
60     # try to resolve this hostname as that's the one used for ntp
61     dnss=$(grep '^nameserver' /etc/resolv.conf 2>/dev/null | awk '{print $2;}')
62     if [ -z "$dnss" ] ; then
63         # not too helpful, but..
64         verbose-message "!!!" No server found in /etc/resolv.conf - Resolving hostname at the google public DNS
65         verbose-run host -W 4 pool.ntp.org 8.8.8.8
66     else
67         for dns in $dnss; do
68             verbose-message Resolving hostname at $dns
69             verbose-run host -W 4 pool.ntp.org $dns
70         done
71     fi
72     verbose-file /root/.ssh/authorized_keys
73     verbose-file-uncommented-patterns /etc/ssh/sshd_config 'Pass|Auth|PAM|Root'
74     verbose-message "END FORENSICS -- $message"
75 }
76
77 function hang-and-shutdown() {
78     message=$1; shift
79     verbose-message "message - shutting down in 2h"
80     # todo: maybe we can put a staticly linked sshd here
81     /bin/sleep 2h
82     /sbin/shutdown -h now
83 }