mirror of
https://github.com/kneutron/ansitest.git
synced 2025-01-16 04:42:55 +08:00
39 lines
1.1 KiB
Bash
39 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Safely delete file or directory tree with ansible
|
|
# Author takes NO responsibility for accidents or misuse, USE AT YOUR OWN RISK
|
|
|
|
# arg1=server(s), comma-separated
|
|
# arg2=path/to/file
|
|
|
|
# failexit.mrg
|
|
function failexit () {
|
|
echo '! Something failed! Code: '"$1 $2" # code # (and optional description)
|
|
exit $1
|
|
}
|
|
|
|
# Basic sanity
|
|
[ "$1" = "" ] && failexit 404 "Server(s) not specified as arg 1"
|
|
[ "$2" = "" ] && failexit 405 "File / Dir not specified as arg 2"
|
|
|
|
# "" should catch root
|
|
for crit in "" bin boot dev etc home lib media mnt opt proc root root/bin run sbin srv sys tmp usr usr/bin usr/sbin var;
|
|
do
|
|
if [ "$2" = "/$crit" ] || [ "$2" = "/$crit/" ]; then
|
|
failexit 999 "ARE YOU INSANE? NO! ( ︶︿︶)_╭∩╮"
|
|
fi
|
|
done
|
|
|
|
echo "Processing servers: $1"
|
|
time ansible $1 -m file -a "dest=$2 state=absent" --become
|
|
|
|
exit;
|
|
|
|
Example usage - On target server:
|
|
|
|
# mkdir -pv /tmp/complexdir
|
|
# cd /tmp/complexdir && \
|
|
# for d in {1..50}; do mkdir -pv $d/$d; done
|
|
|
|
# $0 targetserver /tmp/complexdir # the whole directory tree should be GONE from /tmp after running this script
|