自动处理NAS的Samba关闭

家里整了NAS,后来移动有了IPv6,通过修改DNS信息,自动更新域名对应的IPv6地址,这样可以在外面直接控制NAS。里面下了不少动画片给小孩看,家里设备上网需要在OpenWrt里进行设置才可以,电视机很早就屏蔽了上网功能,所以小孩打开电视也没有用。以前试过通过cron来定时开启和关闭SMB,让小孩定时看动画片,可是有时候上兴趣班之类的过了时间,还是需要手动打开,然后修改cron增加定时关闭SMB,操作多一些,后来想了下,应该还可以再简化,记录一下吧。

最早之前是有想法的,比如下午5点定时打开SMB,然后监测SMB连接情况,到达30分钟后,自动关闭SMB。当时搜了下,好像没有特别好的方案,才有了上面的手动方式。后来换了下思路,以开启SMB时间为准,30分钟后自动关闭,写一个shell脚本完成。

smb.sh
1
2
3
4
5
6
7
8
9
10
11
12
#/bin/bash

DEADTIME=$(date -d "+30 minutes" +'%H:%M')
HOUR=$(echo $DEADTIME | cut -d ':' -f1)
MINUTE=$(echo $DEADTIME | cut -d ':' -f2)

sudo systemctl start smbd

crontab -l 2>/dev/null | head -n -1 > /tmp/mycron
echo "$MINUTE $HOUR * * * sudo systemctl stop smbd" >> /tmp/mycron
crontab /tmp/mycron
rm /tmp/mycron

需要设置下用户权限,可以使用sudo systemctl不用输密码

/etc/sudoers
1
liangwu ALL=(ALL:ALL) NOPASSWD:/usr/bin/systemctl

现在就是小孩需要看电视的时候,用手机SSH登录到NAS,执行下脚本就不管了。后期考虑VPS暴露一个WEBAPI,输入一个地址加密钥完成脚本执行,嗯嗯 :)