7 个版本
0.2.10 | 2023 年 12 月 9 日 |
---|---|
0.2.5 | 2022 年 8 月 30 日 |
0.2.2 | 2022 年 7 月 31 日 |
0.1.4 | 2022 年 1 月 12 日 |
#3 在 #challenge
26 每月下载量
56KB
1K SLoC
shellfirm
哎呀呀 你 又做了?😱 😱 😰
我怎样才能救自己?
rm-rf*
git reset --hard
在按下回车键之前?kubectl delete ns
停止!你将要删除大量资源- 还有更多!
你想从别人的错误中学习吗?
shellfirm
会拦截任何危险的模式,并立即提示一个小挑战,以进行双重验证你的操作,把它想象成终端的验证码。
rm -rf /
#######################
# RISKY COMMAND FOUND #
#######################
* You are going to delete everything in the path.
Solve the challenge: 8 + 0 = ? (^C to cancel)
它是如何工作的?
shellfirm
将在幕后评估所有 shell 命令。如果检测到危险模式,你将立即收到一个带有相关警告的提示来验证你的命令。
示例
设置你的 shell
通过 brew 安装
brew tap kaplanelad/tap && brew install shellfirm
或从 发布页面 下载二进制文件,解压文件并将它移动到 /usr/local/bin
文件夹。
验证 shellfirm 安装
shellfirm --version
验证安装
mkdir /tmp/shellfirm
cd /tmp/shellfirm
git reset --hard
选择你的 shell
Oh My Zsh
下载 zsh 插件curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.oh-my-zsh.zsh --create-dirs -o ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/shellfirm/shellfirm.plugin.zsh
将 shellfirm
添加到 Zsh 加载时的 Oh My Zsh 插件列表(在 ~/.zshrc 内部)
plugins=(... shellfirm)
Bash
Bash 实现基于 https://github.com/rcaloras/bash-preexec 项目,该项目在执行命令之前添加了一个预执行钩子。# Download bash-preexec hook functions.
curl https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh -o ~/.bash-preexec.sh
# Source our file at the end of our bash profile (e.g. ~/.bashrc, ~/.profile, or ~/.bash_profile)
echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
# Download shellfirm pre-exec function
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.sh -o ~/.shellfirm-plugin.sh
# Load pre-exec command on shell initialized
echo 'source ~/.shellfirm-plugin.sh' >> ~/.bashrc
fish
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.fish -o ~/.config/fish/conf.d/shellfirm.plugin.fish
Zsh
# Add shellfirm to conf.d fishshell folder
curl https://raw.githubusercontent.com/kaplanelad/shellfirm/main/shell-plugins/shellfirm.plugin.zsh -o ~/.shellfirm-plugin.sh
echo 'source ~/.shellfirm-plugin.sh' >> ~/.zshrc
容器化技术:Docker
ℹ️ 打开一个新的shell会话
👀 👀 验证安装 👀 👀
你应该会看到一个 shellfirm
提示挑战。
如果你没有收到提示挑战
- 确保
shellfirm --version
返回一个有效的响应。 - 确保你下载了Zsh插件并将其添加到 .zshrc 中的 Oh My Zsh 插件中。
危险命令
我们预先定义了一组默认启用的危险命令组,这些命令可能会造成破坏。
组 | 默认启用 |
---|---|
base | true |
git | true |
fs | true |
fs-strict | false |
kubernetes | false |
kubernetes-strict | false |
heroku | false |
terraform | false |
添加/删除新的组检查
shellfirm config update-groups
更改挑战
目前我们在拦截危险命令时支持3种不同的挑战
Math
- 默认挑战,需要你解决一个数学问题。Enter
- 仅需要按下Enter
以继续。Yes
- 需要输入yes
以继续。
你可以通过运行以下命令来更改默认挑战
shellfirm config challenge
任何时候,你都可以通过按 ^C
取消危险命令。
忽略模式
你可以通过运行命令来禁用所选组中的一个或多个模式
shellfirm config ignore
拒绝模式命令
通过选择不允许在shell中运行的模式ID来限制用户运行命令
shellfirm config deny
升级 shellfirm
brew upgrade shellfirm
贡献
感谢您对贡献的兴趣!请参阅贡献指南以获取指导。
版权
版权(C)2022 @kaplanelad。有关更多详细信息,请参阅LICENSE。
依赖关系
约10-21MB
约291K SLoC