脚本分享

都过去一年多了,没想到还是有人有需要,由于我的服务器禁止了curl,所以把脚本源码分享出来,点代码框右上角复制保存就是了。折腾这个的相信都能看得懂。无需刮削电影的自行删除前面写hosts的内容即可。

#!/bin/sh

fixhosts(){
cat > /etc/hosts << \EOF
127.0.0.1 localhost
::1 localhost
127.0.0.1 DS120j
::1 DS120j

52.84.166.71 api.themoviedb.org
52.84.166.68 api.themoviedb.org
18.65.159.31 api.themoviedb.org
13.35.0.128 api.themoviedb.org
99.84.238.181 image.tmdb.org
13.226.254.58 image.tmdb.org
65.8.164.121 image.tmdb.org
54.192.73.28 image.tmdb.org
EOF
}

rc_local_func(){
if [ "$1" = "120bak" ]; then
rm /etc/rc.local
if [ -f /etc/rc.local.bak ]; then
mv -f /etc/rc.local.bak /etc/rc.local
fi
else
if [ -f /etc/rc.local ]; then
mv -f /etc/rc.local /etc/rc.local.bak
fi
cat > /etc/rc.local << \EOF
#!/bin/sh
if [ "$1" = "R" ]
then
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x03
i2cset -y -f 0 0x45 0x32 0x03
i2cset -y -f 0 0x45 0x33 0x03
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 128
i2cset -y -f 0 0x45 0x35 0
i2cset -y -f 0 0x45 0x36 0

killall -9 synoscsitmonitor
sleep 60
/usr/sbin/ntpdate -u ntp1.aliyun.com
systemctl stop pkg-scsit-monitor.service

fi

if [ "$1" = "G" ]
then
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x03
i2cset -y -f 0 0x45 0x32 0x03
i2cset -y -f 0 0x45 0x33 0x03
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 0
i2cset -y -f 0 0x45 0x35 128
i2cset -y -f 0 0x45 0x36 0

killall -9 synoscsitmonitor
sleep 60
/usr/sbin/ntpdate -u ntp1.aliyun.com
systemctl stop pkg-scsit-monitor.service

fi

if [ "$1" = "B" ]
then
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x03
i2cset -y -f 0 0x45 0x32 0x03
i2cset -y -f 0 0x45 0x33 0x03
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 0
i2cset -y -f 0 0x45 0x35 0
i2cset -y -f 0 0x45 0x36 128

killall -9 synoscsitmonitor
sleep 60
/usr/sbin/ntpdate -u ntp1.aliyun.com
systemctl stop pkg-scsit-monitor.service

fi

if [ "$1" = "W" ]
then
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x03
i2cset -y -f 0 0x45 0x32 0x03
i2cset -y -f 0 0x45 0x33 0x03
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 128
i2cset -y -f 0 0x45 0x35 128
i2cset -y -f 0 0x45 0x36 128

killall -9 synoscsitmonitor
sleep 60
/usr/sbin/ntpdate -u ntp1.aliyun.com
systemctl stop pkg-scsit-monitor.service

fi

if [ "$1" = "" ]
then
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x30 0x07

i2cset -y -f 0 0x45 0x31 0x72
i2cset -y -f 0 0x45 0x32 0x72
i2cset -y -f 0 0x45 0x33 0x72

i2cset -y -f 0 0x45 0x37 0x44
i2cset -y -f 0 0x45 0x3a 0x55
i2cset -y -f 0 0x45 0x3d 0x66

i2cset -y -f 0 0x45 0x38 0x44
i2cset -y -f 0 0x45 0x3b 0x55
i2cset -y -f 0 0x45 0x3e 0x66
i2cset -y -f 0 0x45 0x39 0x40
i2cset -y -f 0 0x45 0x3c 0x40
i2cset -y -f 0 0x45 0x3f 0x40

i2cset -y -f 0 0x45 0x34 128
i2cset -y -f 0 0x45 0x35 128
i2cset -y -f 0 0x45 0x36 128

killall -9 synoscsitmonitor
sleep 60
/usr/sbin/ntpdate -u ntp1.aliyun.com
systemctl stop pkg-scsit-monitor.service

fi

if [ "$1" = "X" ]
then
i2cset -y -f 0 0x45 0x00 0x55

killall -9 synoscsitmonitor
sleep 60
/usr/sbin/ntpdate -u ntp1.aliyun.com
systemctl stop pkg-scsit-monitor.service

fi

EOF
if [ "$1" = "120x" ]; then
cat >> /etc/rc.local << \EOF
if [ "$1" = "K" ]
then
/usr/bin/systemctl --force poweroff
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x33
i2cset -y -f 0 0x45 0x32 0x33
i2cset -y -f 0 0x45 0x33 0x33
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 128
i2cset -y -f 0 0x45 0x35 0
i2cset -y -f 0 0x45 0x36 0
fi
EOF
fi
if [ "$1" = "120d" ]; then
cat >> /etc/rc.local << \EOF
if [ "$1" = "K" ]
then
i2cset -y -f 0 0x45 0x77 0xc6
sleep 1
reboot
fi
EOF
fi
chmod 755 /etc/rc.local
fi
}

if [ "$1" = "" ]
then
echo -e "\e[1;33m 如果一直失败,可能是引导方式不同,请另寻高明。 \e[0m"
echo -e "\e[1;31m =================== LonelyGod =================== \e[0m"
echo -e "\e[1;31m | | \e[0m"
echo -e "\e[1;31m | 猫盘群晖DSM7.0三合一修复脚本 | \e[0m"
echo -e "\e[1;31m | | \e[0m"
echo -e "\e[1;31m ================= https://hin.cool ================= \e[0m"
echo -e "\e[1;33m bash bug 120x/120d/120bak \e[0m"
fi

if [ "$1" = "120x" -o "$1" = "120d" ]; then
echo -e "\e[1;33m 如果一直失败,可能是引导方式不同,请另寻高明。 \e[0m"
echo -e "\e[1;31m =================== LonelyGod =================== \e[0m"
echo -e "\e[1;31m | | \e[0m"
echo -e "\e[1;31m | 猫盘群晖DSM7.0三合一修复脚本 | \e[0m"
echo -e "\e[1;31m | | \e[0m"
echo -e "\e[1;31m ================= https://hin.cool ================= \e[0m"
rc_local_func $1
fixhosts
rm -rf /var/log/*

sed -i 's#/dev/null#/tmp/scemd.log#g' /etc.defaults/syslog-ng/patterndb.d/scemd.conf
sed -i 's#/dev/null#/tmp/postgresql.log#g' /etc.defaults/syslog-ng/patterndb.d/postgresql.conf
sed -i 's#/var/log/scemd.log#/tmp/scemd.log#g' /etc.defaults/syslog-ng/patterndb.d/scemd.conf
sed -i 's#/var/log/postgresql.log#/tmp/postgresql.log#g' /etc.defaults/syslog-ng/patterndb.d/postgresql.conf
sed -i 's#/usr/bin/systemctl --force poweroff#/etc/rc.local K#g' /usr/lib/systemd/system/systemd-poweroff.service

sed -i 's/buzzeroffcfg="0x00"/buzzeroffcfg="0x1b"/g' /etc.defaults/synoinfo.conf
sed -i 's/enable_fan_debug="0x0"/enable_fan_debug="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_auto_poweron="yes"/support_auto_poweron="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_buzzer="yes"/support_buzzer="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_fan="yes"/support_fan="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_fan_adjust_dual_mode="yes"/support_fan_adjust_dual_mode="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_led_behavior_v2="yes"/support_led_behavior_v2="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_power_recovery="yes"/support_power_recovery="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_wol="yes"/support_wol="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/supportrcpower="yes"/supportrcpower="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/supportsystemperature="yes"/supportsystemperature="no"/g' /etc.defaults/synoinfo.conf
sed -i 's/supportsystempwarning="yes"/supportsystempwarning="no"/g' /etc.defaults/synoinfo.conf
echo -e "\e[1;33m 成功啦!成功啦!成功啦!立即重启猫盘,Enjoy it! \e[0m"
rm -f /root/bug
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x33
i2cset -y -f 0 0x45 0x32 0x33
i2cset -y -f 0 0x45 0x33 0x33
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 0
i2cset -y -f 0 0x45 0x35 128
i2cset -y -f 0 0x45 0x36 0
fi

if [ "$1" = "120bak" ]; then
echo -e "\e[1;33m 如果一直失败,可能是引导方式不同,请另寻高明。 \e[0m"
echo -e "\e[1;31m =================== LonelyGod =================== \e[0m"
echo -e "\e[1;31m | | \e[0m"
echo -e "\e[1;31m | 猫盘群晖DSM7.0三合一修复脚本 | \e[0m"
echo -e "\e[1;31m | | \e[0m"
echo -e "\e[1;31m ================= https://hin.cool ================= \e[0m"

rc_local_func $1
rm -rf /var/log/*

sed -i 's#/dev/null#/var/log/scemd.log#g' /etc.defaults/syslog-ng/patterndb.d/scemd.conf
sed -i 's#/dev/null#/var/log/postgresql.log#g' /etc.defaults/syslog-ng/patterndb.d/postgresql.conf
sed -i 's#/tmp/scemd.log#/var/log/scemd.log#g' /etc.defaults/syslog-ng/patterndb.d/scemd.conf
sed -i 's#/tmp/postgresql.log#/var/log/postgresql.log#g' /etc.defaults/syslog-ng/patterndb.d/postgresql.conf
sed -i 's#/etc/rc.local K#/usr/bin/systemctl --force poweroff#g' /usr/lib/systemd/system/systemd-poweroff.service

sed -i 's/buzzeroffcfg="0x1b"/buzzeroffcfg="0x00"/g' /etc.defaults/synoinfo.conf
sed -i 's/enable_fan_debug="no"/enable_fan_debug="0x0"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_auto_poweron="no"/support_auto_poweron="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_buzzer="no"/support_buzzer="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_fan="no"/support_fan="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_fan_adjust_dual_mode="no"/support_fan_adjust_dual_mode="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_led_behavior_v2="no"/support_led_behavior_v2="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_power_recovery="no"/support_power_recovery="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/support_wol="no"/support_wol="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/supportrcpower="no"/supportrcpower="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/supportsystemperature="no"/supportsystemperature="yes"/g' /etc.defaults/synoinfo.conf
sed -i 's/supportsystempwarning="no"/supportsystempwarning="yes"/g' /etc.defaults/synoinfo.conf
echo -e "\e[1;33m 成功啦!成功啦!成功啦!立即重启猫盘,Enjoy it! \e[0m"
rm -f /root/bug
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x31 0x33
i2cset -y -f 0 0x45 0x32 0x33
i2cset -y -f 0 0x45 0x33 0x33
i2cset -y -f 0 0x45 0x30 0x07
i2cset -y -f 0 0x45 0x34 0
i2cset -y -f 0 0x45 0x35 128
i2cset -y -f 0 0x45 0x36 0
fi
/usr/bin/systemctl daemon-reload

说明

起初分享三合一修复脚本的原因很复杂,比如在论坛分享了修复信息中心空白的方法之后,被超级版主(应该也就是脚本作者兼商家)怼了,然后删帖禁言,至今我的账号在该论坛禁止发言权限组中;然后就是很想帮助那些和我一样为了求得此法却无能为力的人。

虽未收到原作者的要求,但终究觉得不大妥当。自8月18日起,本站不再分享该脚本。截至17日晚收到邮件的大猫用户应该都已经完成修复,我也对脚本内容进行了一些修改然后归档,此前发邮件提供的链接已经失效,请各位谅解。

前言

前两天升级DSM7.0之后,使用体验上与此前没什么大的差异,但是晚上就发现了问题,我明明点了关机但是猫盘的风扇和网口的灯都还在工作,而我记得我确实在更新之后执行了修复脚本。后来才意识到,此前的修复脚本已经不适用于DSM7.0了。

这个时候我想到了万能的矿渣论坛,一看论坛里果然有大佬在分享7.0的三合一修复脚本。奈何自己等级太低,无法查看,于是发了帖子寻求帮助,也联系过群里一位有权限浏览的人,但是没能得到他的回复。于是自己想办法搞到了一份,现在分享出来。

聊天截图

准备工作

①打开DSM控制面板——区域选项——时间,点击立即更新;如果更新失败,可以更换一个时间服务器,或者在“网络”中手动配置DNS服务器,可以使用阿里的公共DNS。

DSM时间同步

②开启群晖的ssh功能,设置一个端口。如果公网可以访问群晖,端口不要设置得太简单。

开启ssh功能

进行修复

①ssh连接猫盘群晖;如果你还不知道这一步怎么操作,网上有很多现成的例子。

②使用sudo -i获取root权限;

获取root权限

③执行修复;将下面的代码粘贴到终端中运行。

大猫:

sudo curl -SLO https://hin.cool/bug && chmod +x /root/bug && bash /root/bug 120d

小猫:

sudo curl -SLO https://hin.cool/bug && chmod +x /root/bug && bash /root/bug 120x

如果终端界面提示成功啦,猫盘灯的颜色变成小猫绿色,大猫橙色且闪烁,重启群晖系统即可

修复成功

如果猫盘灯的颜色是红色闪烁,表示运行失败,请检查DNS和时间同步设置或重试

后记

分享这个修复脚本一定会触犯有些卖家的利益,因为这个脚本可是要单独卖20渣金或者30块钱呢,所以在脚本中我没有删掉卖家的注释内容。如果上述方法对你有用的话,欢迎在评论区反馈,也请多多支持原作者。

在矿渣论坛中我分享了修复DSM7.0系统信息空白的方法,方法来源于其他大佬。卖家看到后回复了我的帖子,hhh怎么说呢,Love&peace。

论坛截图