blob: cb0856bd2b02a5eee728714247f1cd7544be835c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#
# this handler will save various reports of vital system information.
# by default, all the reports are enabled and are saved in /var/backups.
#
# (1) a list of all the packages installed and removed.
# this file can be used to restore the state of installed packages
# by running "dpkg --set-selections < dpkg-selections.txt
#
# (2) the partition table of all disks.
# this partition table can be used to format another disk of
# the same size. this can be handy if using software raid and
# you have a disk go bad. just replace the disk and partition it
# by running "sfdisk /dev/sdb < partitions.sdb.txt"
# (MAKE SURE YOU PARTITION THE CORRECT DISK!!!)
#
# (3) hardware information.
# write to a text file the important things which hwinfo can gleen.
#
getconf packages yes
getconf packagesfile /var/backups/dpkg-selections.txt
getconf partitions yes
getconf partitionsfile /var/backups/partitions.__star__.txt
getconf hardware yes
getconf hardwarefile /var/backups/hardware.txt
getconf SFDISK `which sfdisk`
getconf HWINFO `which hwinfo`
getconf sfdisk_options ""
getconf hwinfo_options ""
# See if vservers are configured
if [ "$vservers" = "yes" ]
then
if [ ! -d $VROOTDIR ]
then
fatal "vservers enabled, but $VROOTDIR does not exist!"
else
info "vserver method enabled"
usevserver=1
fi
fi
if [ "$packages" == "yes" ]; then
if [ $usevserver ]
then
nodpkg="lost+found"
info "vserver root directory set to: $VROOTDIR"
for vserver in `ls $VROOTDIR |grep -v $nodpkg`
do
info "examining vserver: $vserver"
running=`vserver-info $vserver RUNNING`
if [ $running = 1 ]; then
if [ ! -x "`$VSERVER $vserver exec which dpkg`" ]; then
warning "can't find dpkg in vserver $vserver, skipping installed packages report."
nodpkg="$nodpkg $vserver"
fi
else
warning "vserver $vserver is not running, skipping installed packages report."
nodpkg="$nodpkg $vserver"
fi
done
else
if [ ! -x "`which dpkg`" ]; then
warning "can't find dpkg, skipping installed packages report."
packages="no"
fi
fi
fi
if [ "$partitions" == "yes" ]; then
if [ ! -x "$SFDISK" ]; then
warning "can't find sfdisk, skipping partition report."
partitions="no"
fi
if [ ! -x "$HWINFO" ]; then
warning "can't find hwinfo, skipping partition report."
partitions="no"
fi
fi
if [ "$hardware" == "yes" ]; then
if [ ! -x "$HWINFO" ]; then
warning "can't find hwinfo, skipping hardware report."
hardware="no"
fi
fi
## PACKAGES ##############################
#
# here we grab a list of the packages installed and removed.
#
if [ $usevserver ]
then
for vserver in `ls $VROOTDIR | grep -v $nodpkg | grep -v lost+found`
do
debug "$VSERVER $vserver exec dpkg --get-selections > $VROOTDIR/$vserver$packagesfile"
$VSERVER $vserver exec dpkg --get-selections > $VROOTDIR/$vserver$packagesfile
done
fi
# We want to perform this on the host as well
if [ "$packages" == "yes" ]; then
debug "dpkg --get-selections > $packagesfile"
dpkg --get-selections > $packagesfile
fi
## PARTITIONS #############################
# here we use sfdisk to dump a listing of all the partitions.
# these files can be used to directly partition a disk of the same size.
if [ "$partitions" == "yes" ]; then
devices=`$HWINFO --disk | grep "Device File" | cut -d\ -f5`
for dev in $devices; do
[ -b $dev ] || continue
label=${dev#/dev/}
label=${label//\//-}
outputfile=${partitionsfile//__star__/$label}
debug "$SFDISK $sfdisk_options -d $dev > $outputfile"
$SFDISK $sfdisk_options -d $dev > $outputfile
done
fi
## HARDWARE #############################
#
# here we use hwinfo to dump a table listing all the
# information we can find on the hardware of this machine
#
if [ "$hardware" == "yes" ]; then
if [ -f $hardwarefile ]; then
rm $hardwarefile
fi
touch $hardwarefile
echo -e "\n\n====================== summary ======================\n" >> $hardwarefile
debug "$HWINFO --short --cpu --network --disk --pci >> $hardwarefile"
$HWINFO --short --cpu --network --disk --pci >> $hardwarefile
for flag in cpu network disk bios pci; do
echo -e "\n\n====================== $flag ======================\n" >> $hardwarefile
$HWINFO --$flag >> $hardwarefile
done
fi
|