写了个 shell 脚本笑不活了

122 天前
 angeni

之前不是发了个帖子想低价嫖阿里的 5 年 200G 免费流量看看外面的世界嘛,还询问怎么防止盗刷流量

https://v2ex.com/t/1053353

然后我自己糊了一个,因为是测测试脚本流量上限不高只有 150G 并且是上下行相加的。

我怕被刷 crontab 设置的比较急进 1 分钟

今天绝了开机就关开机就关,手速跟不上了。。。

有什么好方法能让我上机一手不我去改改脚本

emmm

#!/bin/bash

# 设置网卡名称
INTERFACE="eth0"
# 设置流量限制(单位:GB )
LIMIT=150

# 检查 vnstat 和 jq 是否已安装
if ! command -v vnstat &> /dev/null; then
echo "vnstat 未安装,请安装后重试。"
exit 1
fi

if ! command -v jq &> /dev/null; then
echo "jq 未安装,请安装后重试。"
exit 1
fi

# 检查 bc 是否已安装
if ! command -v bc &> /dev/null; then
echo "bc 未安装,请安装后重试。"
exit 1
fi

# 获取当前流量(单位:KB )
VNSTAT_JSON=$(vnstat -i $INTERFACE --json)
echo "vnstat JSON 输出: $VNSTAT_JSON"

# 使用 jq 解析 JSON 数据获取接收和发送的流量(单位:KB )
RX=$(echo $VNSTAT_JSON | jq -r '.interfaces[0].traffic.total.rx')
TX=$(echo $VNSTAT_JSON | jq -r '.interfaces[0].traffic.total.tx')

# 输出解析结果
echo "接收流量 (RX): $RX KB"
echo "发送流量 (TX): $TX KB"

# 检查 RX 和 TX 是否为有效的数字
if ! [[ $RX =~ ^[0-9]+$ ]] || ! [[ $TX =~ ^[0-9]+$ ]]; then
echo "RX 或 TX 不是有效的数字。"
exit 1
fi

# 计算总流量(单位:GB )
TOTAL=$(echo "scale=2; ($RX + $TX) / 1024 / 1024 / 1024" | bc)

# 输出当前总流量
echo "当前流量:$TOTAL GB"

# 检查是否超过流量限制
if (( $(echo "$TOTAL >= $LIMIT" | bc -l) )); then
echo "流量限制已超出,正在禁用网络接口。"
sudo shutdown now
else
echo "当前流量未超出限制。"
fi
#!/bin/bash

# 停止 vnStat 服务
sudo systemctl stop vnstat # 如果使用 systemd 管理服务

# 删除 vnStat 数据库文件(根据需要修改网络接口名称)
sudo rm -f /var/lib/vnstat/* # 删除所有 vnstat 数据库文件

# 重新启动 vnStat 服务
sudo systemctl start vnstat # 如果使用 systemd 管理服务

echo "vnStat 流量统计数据已重置。"

# 每 5 分钟检查一次流量
*/5 * * * * /root/check_traffic.sh

# 每月 1 号重置网络和流量统计
0 0 1 * * /root/reset_network.sh
2859 次点击
所在节点    程序员
17 条回复
NessajCN
122 天前
额,你禁用网络接口就禁用网络接口,shutdown 干啥...
angeni
122 天前
@NessajCN 一开始是禁用的,后面想直接关机实在点。。。
1423
122 天前
维护模式
NessajCN
122 天前
看你脚本里能用 sudo 那大概设置的无密码模式或者直接能登 root 咯?
那可以试试 ssh 的时候带着命令,譬如 ssh root@ip sudo rm /etc/cron.d/xxx
然后开了机之后一直连
angeni
122 天前
@NessajCN 还可以这样,学习了~
ruidoBlanco
122 天前
「一頓操作猛如虎,一看輸出二百五」
mongoose
122 天前
阿里云这个学生认证和实名认证需要是一个人吗?
cocong
122 天前
直接断网不就不会超流量也就不会关机了。
GoRoad
122 天前
hhhhh
Ploter
122 天前
差点直接用了,幸好当时嫌麻烦没弄🌚
mikeguan
122 天前
新开个机器,磁盘挂过去,怎么弄都行
或者 vnc/串口连接修改下脚本
mingtdlb
121 天前
@mongoose 我觉得阿里不至于那么弱智,不是同一个人会给你过。
angeni
121 天前
@mongoose 肯定同一人呀
onice
121 天前
guanzhangzhang
121 天前
sshpass xxxx ssh <ip> systemctl stop crond
guanzhangzhang
121 天前
@guanzhangzhang sshpass xxxx ssh <ip> systemctl disable --now crond
siteshen
121 天前
#4 @NessajCN 可以稍改进一下:

ssh root@ip sudo mv /root/check_traffic.sh /root/check_traffic.sh.disabled

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1054872

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX