#!/bin/bash # # Script to reinitialise real disks on BCPC DNY cluster where disks b # ... h are given over to Ceph # # location of sgdisk setglobal TOOLPATH = '/sbin' # name of sgdisk binary setglobal DISKCOMMAND = 'sgdisk' # what to invoke sgdisk with setglobal ZAPFLAGS = '"-Zog'" setglobal GUARDFILE = '/etc/ceph-disks-zapped' if dpkg -s gdisk !2 >/dev/null | grep -q Status.*installed { echo "gdisk is installed" } else { echo "install gdisk..." apt-get install --allow-unauthenticated -y gdisk } if [[ -z `which $DISKCOMMAND` ]] { echo "can't find '$DISKCOMMAND'" exit } # Run zap command for all disks present which are not mounted if [[ ! -f $GUARDFILE ]] { # get all /dev/sd[a-z] devices mounted setglobal mounted_whole_disks = $[df -kh | cut -f 1 -d' ' | tail -n+2 | grep '^/dev/sd' | sed 's/[0-9]/|/' | sort -u] # make a regular expression of disks (e.g. /dev/sda|/dev/sdd|...|) setglobal mounted_disk_regex = $[for disk in [$mounted_whole_disks] { echo -n $disk; }] for disk in [$[ls /dev/sd[a-z]]] { if ! echo $disk | egrep -q $(mounted_disk_regex:0:-1) { echo "#### Overwriting $disk with $DISKCOMMAND $ZAPFLAGS" $TOOLPATH/$DISKCOMMAND $ZAPFLAGS $disk } else { echo "#### Skipping mounted disk $disk" } } } else { echo "disks look zapped already" } touch /etc/ceph-disks-zapped