歲月留聲

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图

群晖 DSM 7 登录界面以及用户桌面均支持自定义壁纸,但只能手动选择设定一张图片,有方法让它们自动定时更换吗?使用 DSM_Login_BingWallpaper shell 脚本配合群晖 crontab 任务计划即可实现。

「群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图:https://0xo.net/93」

群晖 DSM 7 自动更换壁纸 准备

群晖 Synology 自动更换登录界面背景和用户桌面壁纸为微软 Bing 今日美图,替换 DSM 7 欢迎信息为必应美图简介,并且把 Bing 今日美图保存到群晖 NAS 本地收藏。

首先启用 DSM 登录界面自定义背景:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第1张图片

「群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图:https://0xo.net/93」

DSM 用户桌面自定义背景:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第2张图片

接着创建一个共享文件夹存放 shell 脚本和 Bing 图片:

「群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图:https://0xo.net/93」

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第3张图片

(如不需要自动更改用户桌面壁纸可以跳过创建 wallpaper_dir 目录以及 wallpaper、wallpaper_hd 文件)

假设需要自动更改 test_user 用户桌面壁纸,ssh 登录群晖 NAS,sudo -i 切换到 root,检查用户目录下是否有 wallpaper_dir 目录:

「群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图:https://0xo.net/93」
ls /usr/syno/etc/preference/test_user

如果没有,创建一个:

mkdir -p /usr/syno/etc/preference/test_user/wallpaper_dir

接着到 wallpaper_dir 目录下创建 wallpaper 和 wallpaper_hd:

cd /usr/syno/etc/preference/test_user/wallpaper_dir
touch wallpaper wallpaper_hd

群晖 DSM 7 自动更换壁纸 shell 脚本 + 设置任务计划

群晖 DSM 7 自动更换壁纸 shell 脚本,参考代码:

#user 群晖 NAS 用户名,设置替换桌面壁纸与保存图片文件权限 
user="test_user"

#如需设置用户桌面壁纸为每日必应美图,去掉下面 wallpaper 注释
#DSM 管理页面随意指定一张图片为壁纸,并在创建 wallpaper_dir 目录以及 wallpaper、wallpaper_hd 文件
wallpaper="/usr/syno/etc/preference/$user/wallpaper_dir/wallpaper"
wallpaper_hd="/usr/syno/etc/preference/$user/wallpaper_dir/wallpaper_hd"

#如需收集每日必应美图去掉下面 savepath 注释并根据实际设置图片保存路径
savepath="/volume1/BingWallpapers"

#以下内容无需修改 uxtt.com
pic=$(wget -t 5 --no-check-certificate -qO- "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1")
echo $pic|grep -q enddate||exit
link=$(echo https://www.bing.com$(echo $pic|sed 's/.\+"url"[:" ]\+//g'|sed 's/".\+//g'))
date=$(echo $pic|sed 's/.\+enddate[": ]\+//g'|grep -Eo 2[0-9]{7}|head -1)
tmpfile=/tmp/$date"_bing.jpg"
wget -t 5 --no-check-certificate $link -qO $tmpfile
[ -s $tmpfile ]||exit
rm -rf /usr/syno/etc/login_background*.jpg
cp -f $tmpfile /usr/syno/etc/login_background.jpg &>/dev/null
cp -f $tmpfile /usr/syno/etc/login_background_hd.jpg &>/dev/null
title=$(echo $pic|sed 's/.\+"title":"//g'|sed 's/".\+//g')
copyright=$(echo $pic|sed 's/.\+"copyright[:" ]\+//g'|sed 's/".\+//g')
word=$(echo $copyright|sed 's/(.\+//g')
if [ ! -n "$title" ];then
cninfo=$(echo $copyright|sed 's/,/"/g'|sed 's/,/"/g'|sed 's/(/"/g'|sed 's/ //g'|sed 's/\//_/g'|sed 's/)//g')
title=$(echo $cninfo|cut -d'"' -f1)
word=$(echo $cninfo|cut -d'"' -f2)
fi
sed -i s/login_background_customize=.*//g /etc/synoinfo.conf
echo "login_background_customize=\"yes\"">>/etc/synoinfo.conf
sed -i s/login_welcome_title=.*//g /etc/synoinfo.conf
echo "login_welcome_title=\"$title\"">>/etc/synoinfo.conf
sed -i s/login_welcome_msg=.*//g /etc/synoinfo.conf
echo "login_welcome_msg=\"$word\"">>/etc/synoinfo.conf
#替换桌面壁纸 0xo.net
if (echo $wallpaper|grep -q '/') then
cp -f $tmpfile $wallpaper
fi
#注意:7.0 版本新增了一个 hd 结尾的壁纸,需要同步替换
if (echo $wallpaper_hd|grep -q '/') then
cp -f $tmpfile $wallpaper_hd
fi
#复制必应壁纸保存
if (echo $savepath|grep -q '/') then
cp -f $tmpfile "$savepath/$date@$title-$word.jpg"
#修改图片权限 uxtt.com
chown $user:users "$savepath/$date@$title-$word.jpg"
#保存的必应图片建立索引
#synoindex -a "$savepath/$date@$title-$word.jpg"
fi
rm -rf /tmp/*_bing.jpg

请根据实际修改 user 和 savepath,以上代码会修改群晖 DSM 7 登录页面背景以及指定 user 用户桌面壁纸,并且会把当天下载 Bing 壁纸复制一份保存到 savepath,如不需要保存可以在 savepath 前面加一个 # 注释掉。

代码修改好,保存为 dsm7_bing_wallpaper.sh,上传至 BingWallpapers 目录下,File Station 选中文件,操作 - 属性 可以看到文件完整路径,如 /volume1/BingWallpapers/dsm7_bing_wallpaper.sh

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第4张图片

添加任务计划定时自动更换壁纸,使用 root 账号执行脚本:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第5张图片

一般每天执行一次就好,脚本路径请根据实际修改:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第6张图片

用户桌面壁纸:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第7张图片

DSM 登录页面:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第8张图片

Bing 壁画保存:

群晖 DSM 7 自动更换登录界面背景和用户桌面壁纸为微软必应今日美图 - 第9张图片

退出移动版