用计划任务定时修改群晖登录壁纸

群晖的DSM登录界面可以自己设置壁纸,可惜只能选择一张图片~如果登录界面能每天自动换壁纸就很棒了啊~


那么想法来了:用群晖的计划任务执行脚本,每天下载一个新壁纸,然后自动替换。

首先我们要找到一个壁纸源啦~

emmmbing搜索的每日美图挺不错的,就它吧!~

很快就找到了每日美图的一个api

http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

稍微处理下,实现用shell提取壁纸地址:

 

echo https://cn.bing.com/$(curl -s "http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|grep -Po 'url[" :]+\K[^"]+')

 

今日美图壁纸拿到手了,接下来是怎么替换的问题。

幸好群晖DSM系统支持SSH登陆,轻轻松松就设置了SSH登陆并开始摸索。。


经过一番摸索,群晖DSM6.0的登陆壁纸实际保存位置是

/usr/syno/etc/login_background_hd.jpg

/usr/syno/etc/login_background.jpg

其他位置都是软链接到这个地方。

ssh下执行替换命令需要sudo。而幸运的是群晖的计划任务是支持root用户执行的。

所以就开始来弄个shell实现每天自动换壁纸啦~

首先在任务计划设置里面选择新增
计划的任务–> 用户定义的脚本



由于我们要先调试,所以运行频率选择每一分钟,从00002359,测试成功后再修改;


然后转到任务设置这里,在用户自定义的脚本文本框里面粘贴如下脚本:

 

save="/volume1/web/bing.jpg"

wget "https://cn.bing.com/$(curl -s "http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|grep -Po 'url[" :]+\K[^"]+')" -qO $save

ln -sf $save /usr/syno/etc/login_background_hd.jpg

ln -sf $save /usr/syno/etc/login_background.jpg

 

注意,图中是/volume1/web/目录是我开了web station之后的目录,你应该修改为你自己的下载目录。在File Station里面右键可以看到自己当前目录的路径。ln -sf 是建立图片到bing壁纸的软链接。

等一分钟后看一下效果:


嗯。挺棒!

不过我们还注意到DSM登录的设置里面还有个欢迎标题和欢迎信息,位于左上角。

bing每日美图都有个小标题和简介:


所以就又有想法了,把这个小标题和简介自动替换到设置里面!

很快找到了bing的美图描述的api

https://cn.bing.com/cnhp/coverstory

在群晖的ssh里面摸索一会找到了存储标题信息的地方,直接是个明文配置文件而不是数据库,这下修改就方便啦~

配置文件位置:

欢迎标题/etc/synoinfo.conf login_welcome_title的值

欢迎信息/etc/synoinfo.conflogin_welcome_msg的值

用脚本实现自动替换:

story=$(curl -s https://cn.bing.com/cnhp/coverstory)

title=$(echo $story|grep -Po 'title[" :]+\K[^"]+')

attribute=$(echo $story|grep -Po 'attribute[" :]+\K[^"]+')

sed -i s/login_welcome_title=.*/login_welcome_title=\"$title\"/g /etc/synoinfo.conf

sed -i s/login_welcome_msg=.*/login_welcome_msg=\"$attribute\"/g /etc/synoinfo.conf


综合一下上面的脚本:

 

save="/volume1/web/bing.jpg"

wget "https://cn.bing.com/$(curl -s "http://bing.com/HPImageArchive.aspx?format=js&idx=0&n=1"|grep -Po 'url[" :]+\K[^"]+')" -qO $save

sed -i s/login_background_customize=.*/login_background_customize=\"yes\"/g /etc/synoinfo.conf

ln -sf $save /usr/syno/etc/login_background_hd.jpg

ln -sf $save /usr/syno/etc/login_background.jpg

story=$(curl -s https://cn.bing.com/cnhp/coverstory)

title=$(echo $story|grep -Po 'title[" :]+\K[^"]+')

attribute=$(echo $story|grep -Po 'attribute[" :]+\K[^"]+')

sed -i s/login_welcome_title=.*/login_welcome_title=\"$title\"/g /etc/synoinfo.conf

sed -i s/login_welcome_msg=.*/login_welcome_msg=\"$attribute\"/g /etc/synoinfo.conf

#ln -sf $save /usr/syno/etc/preference/admin/wallpaper

 

1login_background_customize是开启自定义脚本,为了解决在没有设置自定义壁纸的情况下脚本的问题。

2:如果需要同时设置桌面的壁纸,可以把最后一行的注释去掉,把admin改为你的用户名。

记得把计划任务的时间间隔调一下,每分钟执行就没必要啦,我设置的是每4小时。如果你的群晖24小时开着,设置每天零点以后,或者凌晨几点运行一次就行了。

最终效果展示(点击图片查看大图):


Github丢了一份,觉得有用的可以点个赞:

https://github.com/lixuy/DSM_Login_BingWallpaper

 

原文链接:https://03k.org/dsm-bing.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据