47 lines
1.1 KiB
Bash
Executable File
47 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# Claude Code用の安全なコマンドチェッカー
|
|
|
|
COMMAND="$1"
|
|
|
|
# 危険なコマンドパターン
|
|
DANGEROUS_PATTERNS=(
|
|
"rm -rf /"
|
|
"rm -rf ~"
|
|
":(){ :|:& };:" # Fork bomb
|
|
"> /dev/sda"
|
|
"dd if=/dev/zero"
|
|
"mkfs"
|
|
"format"
|
|
)
|
|
|
|
# 確認が必要なコマンド
|
|
CONFIRM_PATTERNS=(
|
|
"sudo"
|
|
"rm -rf"
|
|
"git push --force"
|
|
"npm publish"
|
|
"pip install"
|
|
)
|
|
|
|
# 危険なコマンドをチェック
|
|
for pattern in "${DANGEROUS_PATTERNS[@]}"; do
|
|
if [[ "$COMMAND" =~ $pattern ]]; then
|
|
echo "❌ 危険なコマンドを検出しました: $COMMAND"
|
|
echo "このコマンドは実行できません。"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# 確認が必要なコマンドをチェック
|
|
for pattern in "${CONFIRM_PATTERNS[@]}"; do
|
|
if [[ "$COMMAND" =~ $pattern ]]; then
|
|
echo "⚠️ 確認が必要なコマンド: $COMMAND"
|
|
read -p "本当に実行しますか? (yes/no): " confirm
|
|
if [[ "$confirm" != "yes" ]]; then
|
|
echo "コマンドをキャンセルしました。"
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo "✅ コマンドは安全です: $COMMAND" |