#!/bin/bash

#

# This script will absolutely kill a RHEL/CentOS/Fedora server. Use with extreme caution.

# Tested with several CentOS/RHEL versions only. Run as root user.

# 10.20.11 Paul Venezia (pvenezia@pvenezia.com)

#

zeroscript="/var/ramdisk/zeroscript.sh"

echo "*******************************************************************

** This will permanently kill this Linux system and erase every **

** local disk and filesystem. In other words, you better be **

** REALLY REALLY SURE you want to do this on this system. **

*******************************************************************"

echo -n "Are you absolutely sure you want to do this? [yes|no]: "; read yn

if [ -z $yn ] || [ $yn != "yes" ]; then

echo "Aborting"

exit 1

fi

echo -n "How many zeroing passes? "; read zeropass

if [ -z $zeropass ] || [ $zeropass -lt 1 ]; then

echo "Invalid number of passes specified. Aborting."

exit 1

fi

echo -n "Automatically shutdown? [yes|no] "; read asd

echo "Okay, here we go..."

echo "Making and populating ramdisk (512MB)..."

mkdir -p /var/ramdisk

mount -t tmpfs none /var/ramdisk -o size=512m # You may need to adjust this depending on the amount of RAM in the box

mkdir -p /var/ramdisk/var/run

for f in dev bin lib lib64 sbin etc; do

cp -pr /$f /var/ramdisk

done

cp -pr /var/run /var/ramdisk/var

echo "Stopping services, it's probably safe to ignore any errors..."

for s in httpd acpid anacron atd auditd autofs avahi-daemon bluetooth cpuspeed crond cups firstboot gpm haldaemon hidd hplip irqbalance iscsi iscsid kudzu lm_sensors lvm2-monitor mcstrans mdmonitor messagebus microcode_ctl netfs nfslock pcscd portmap rawdevices readahead_early restorecond rpcgssd rpcidmapd sendmail smartd sshd syslog vmware-tools xfs yum-updatesd; do

service $s stop

done

echo "Placing zeroing script..."

echo "#!/bin/bash" > $zeroscript

for i in `fdisk -l | grep Disk | awk '{print$2}' | sed -e s/:// | grep -v /dev/md`; do

DU=$DU" "$i

DSK=`basename $i`

BLKS=$((`grep -w $DSK /proc/partitions | awk '{print$3}'` * 2)) # account for 512/1k blocksizes

BS=512

echo "echo \"Zeroing $i (dd if=/dev/zero of=$i bs=$BS count=$BLKS) ...\"" >> $zeroscript

for (( c=1; c<=$zeropass; c++ )); do

echo "echo \"Pass $c...\"" >> $zeroscript

echo "dd if=/dev/zero of=$i bs=$BS count=$BLKS" >> $zeroscript

done

echo "dd if=/dev/zero of=$i bs=512 count=1" >> $zeroscript # Just to make sure

done

echo "echo \"Disk(s)$DU have been zeroed $zeropass times\"" >> $zeroscript

if [ $asd = 'yes' ]; then

echo "echo \"Shutting down...\"" >> $zeroscript

echo "sleep 5 && /sbin/poweroff -n -d -f" >> $zeroscript

fi

chmod +x $zeroscript

echo "Turning off swap..." && swapoff -a

echo "Entering chroot..."

chroot /var/ramdisk /`basename $zeroscript`

该脚本中尽管存在着一些过于强横的霸王内容,但却确实能帮大家完成任务。它本身是专门用于RHEL(即红帽企业版Linux)及CentOS(即社区企业操作系统)的,但只需经过简单的调整即可奏效于任何类Unix操作系统之上。不过请大家小心,这个脚本存在的目的是追求完全的破坏性。如果破坏不是各位的需求,或者大家不了解自己在做什么,请千万不要尝试。


相关内容