<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>PowerShell</title><link>https://www.powershell.com.cn/</link><description></description><item><title>vCenter重置ROOT和vCenter Web登录密码</title><link>https://www.powershell.com.cn/?id=178</link><description>&lt;h2&gt;前言：重置ROOT和administrator@vsphere.local用户密码方法&lt;/h2&gt;&lt;p&gt;1 ROOT密码忘记了，需要打开VCSA虚拟机控制台重启进入单用户模式。&lt;/p&gt;&lt;p&gt;2 administrator@vspherelocal用户登录密码忘了，需要通过SSH工具连接到vCenter。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;一 、重置ROOT密码操作步骤&lt;/h2&gt;&lt;p&gt;需要先正常关闭vCenter后，再重新开机vCenter。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752215823513917.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;当启动出现如下界面的时候，请按e键。&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217099460160.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如图将出现如下界面。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752216568388004.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如下图，在第一行结尾处输入audit =1 rw init=/bin/bash，之后按ctrl-x或者F10重启。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752216725130277.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;然后等待进入如下命令行界面。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752216898156521.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;然后输入如下命令。&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mount&amp;nbsp;-o&amp;nbsp;remount,rw&amp;nbsp;/
passwd&amp;nbsp;root
umount&amp;nbsp;/
reboot&amp;nbsp;-f&lt;/pre&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217035209393.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;重启完毕后，测试下按F2使用新密码登录。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217138315762.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217163849865.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如下图，已经登录成功，说明重置成功了。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217185343470.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;二、通过SSH工具连接到vCenter命令行重置administrator@vsphere.lcoal用户密码。&lt;/h2&gt;&lt;p&gt;首先需要开启SSH服务，按F2进入vCenrer控制台&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217391175903.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;然后需要启动SSH服务。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217439299608.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;这里使用PowerShell命令行，直接连接到vCente的SSH了。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217522129202.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;然后输入命令&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;/usr/lib/vmware-vmdir/bin/vdcadmintool&lt;/pre&gt;&lt;p&gt;执行后，然后输入shell命令，按3回车后，输入要重置的用户名获取临时随机密码。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217699893045.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如下图，使用重置的密码登录。&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/07/202507111752217788806998.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 11 Jul 2025 14:16:45 +0800</pubDate></item><item><title>嘿，同路人！聊聊技术、成长和路上的小确幸｜欢迎留言区开唠</title><link>https://www.powershell.com.cn/?id=177</link><description>&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; text-wrap-mode: wrap; background-color: #FCFCFC;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;“又红灯了？这段‘强制休息’时间，与其刷屏焦虑，不如看点实在的？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; text-wrap-mode: wrap; background-color: #FCFCFC;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; text-wrap-mode: wrap; background-color: #FCFCFC;&quot;&gt;一个和你一样在路上为了生活奔波的人，&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; background-color: #FCFCFC;&quot;&gt;“这里没有硬广，只想分享点我觉可能有用的干货、有趣的地方，也希望能认识志同道合的朋友。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; background-color: #FCFCFC;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;点击右上角登录。&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; background-color: #FCFCFC;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/06/202506101749537975349696.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; background-color: #FCFCFC;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/06/202506101749538018815287.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; background-color: #FCFCFC;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/06/202506101749538095842897.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-size: 16px; background-color: #FCFCFC;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;</description><pubDate>Tue, 10 Jun 2025 14:03:29 +0800</pubDate></item><item><title>Markdown标记为流程图方法-Typora</title><link>https://www.powershell.com.cn/?id=176</link><description>&lt;h1&gt;第一章 使用Typora生成流程图&lt;/h1&gt;&lt;p&gt;在Typora编辑器里面输入下列代码接口。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;```mermaid
graph&amp;nbsp;TD
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A[开始]&amp;nbsp;--&amp;gt;&amp;nbsp;B{条件判断}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;--&amp;gt;|是|&amp;nbsp;C[执行操作]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;--&amp;gt;|否|&amp;nbsp;D[结束]&lt;/pre&gt;&lt;p&gt;如下图显示，可以根据自己的需求，在代码里面增加支点。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/05/202505141747190324633537.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Wed, 14 May 2025 10:02:46 +0800</pubDate></item><item><title>VMware vSphere ESXI虚拟化安装部署</title><link>https://www.powershell.com.cn/?id=175</link><description>&lt;h3 style=&quot;margin: 16px 0px 8px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-stretch: inherit; font-size: 20px; line-height: 32px; font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: rgba(0, 0, 0, 0.9); text-wrap-mode: wrap; background-color: rgb(252, 252, 252);&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;&quot;&gt;一、硬件兼容性检查&lt;/span&gt;&lt;/h3&gt;&lt;ol style=&quot;margin-top: 8px; margin-bottom: 16px; padding: 0px 0px 0px 16px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: rgba(0, 0, 0, 0.9); text-wrap-mode: wrap; background-color: rgb(252, 252, 252);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-stretch: inherit; line-height: 1.75; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; display: inline;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 600; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;&quot;&gt;ESXi 兼容性&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;确认服务器硬件（CPU、主板、网卡、存储控制器）在 VMware 兼容性列表（HCL）中。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;支持的 CPU 需启用虚拟化技术（Intel VT-x/AMD-V）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;检查固件版本（UEFI/BIOS）是否满足最低要求。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;h3 style=&quot;margin: 16px 0px 8px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-stretch: inherit; font-size: 20px; line-height: 32px; font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: rgba(0, 0, 0, 0.9); text-wrap-mode: wrap; background-color: rgb(252, 252, 252);&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;&quot;&gt;二、系统安装准备方式&lt;/span&gt;&lt;/h3&gt;&lt;ol style=&quot;margin-top: 8px; margin-bottom: 16px; padding: 0px 0px 0px 16px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: &amp;quot;PingFang SC&amp;quot;, -apple-system, &amp;quot;system-ui&amp;quot;, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Source Han Sans CN&amp;quot;, sans-serif; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: rgba(0, 0, 0, 0.9); text-wrap-mode: wrap; background-color: rgb(252, 252, 252);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-stretch: inherit; line-height: 1.75; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; display: inline;&quot;&gt;&lt;span style=&quot;margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 600; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-size-adjust: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;&quot;&gt;安装介质验证&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;ul style=&quot;list-style-type: disc;&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;使用官方 ISO 镜像，校验 SHA1/MD5 校验和。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;准备 PXE 自动化部署或 USB 安装介质。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;h3&gt;三、ESXI主机配置规划&lt;br/&gt;&lt;/h3&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td width=&quot;292&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;主机名&lt;/td&gt;&lt;td width=&quot;292&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;IP地址&lt;/td&gt;&lt;td width=&quot;292&quot; valign=&quot;top&quot; style=&quot;word-break: break-all;&quot; align=&quot;center&quot;&gt;备注&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;292&quot; valign=&quot;top&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;ESXI01&lt;/td&gt;&lt;td width=&quot;292&quot; valign=&quot;top&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;172.17.3.20&lt;/td&gt;&lt;td width=&quot;292&quot; valign=&quot;top&quot; align=&quot;center&quot; style=&quot;word-break: break-all;&quot;&gt;安装在vmware workstation上&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3&gt;四、安装版本ESXI-8.0，如下为安装截图过程，请把ESXI镜像写入到U盘后，然后服务器从U盘启动。&lt;br/&gt;&lt;/h3&gt;&lt;h4&gt;1 如下服务器从U盘启动后，准备安装过程。&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/04/202504271745733955158830.png&quot; alt=&quot;image.png&quot; width=&quot;942&quot; height=&quot;316&quot; style=&quot;width: 942px; height: 316px;&quot;/&gt;&lt;/h4&gt;&lt;h4&gt;2 按下F11选择Accept and continue 下一步。&lt;/h4&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/04/202504271745734193536895.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h4&gt;3 选择本地磁盘，然后按回车键下一步。&lt;/h4&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/04/202504271745734352874002.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h4&gt;4 按回车键继续下一步。&lt;br/&gt;&lt;/h4&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/04/202504271745734395480593.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h4&gt;5 设置登录密码后，按回车键继续下一步。&lt;/h4&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/04/202504271745734440828125.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h4&gt;6 然后等待安装完成即可。&lt;/h4&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 27 Apr 2025 13:50:09 +0800</pubDate></item><item><title>Centos7防火墙firewalld常用命令配置</title><link>https://www.powershell.com.cn/?id=171</link><description>&lt;h2&gt;1 先检查是否已经安装firewall及常用管理命令&lt;br/&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;检查是否已经安装firewall
firewall-cmd&amp;nbsp;--version

#&amp;nbsp;安装命令
sudo&amp;nbsp;yum&amp;nbsp;install&amp;nbsp;firewalld

#&amp;nbsp;安装完成后启动服务并设置自动启停
sudo&amp;nbsp;systemctl&amp;nbsp;start&amp;nbsp;firewalld
sudo&amp;nbsp;systemctl&amp;nbsp;enable&amp;nbsp;firewalld

#确定服务是否正常运行
sudo&amp;nbsp;systemctl&amp;nbsp;status&amp;nbsp;firewalld

#检查防火墙状态
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--state

#重新加载防火墙，做了配置更新后使用此命令刷新
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--reload&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/02/202502271740636785360311.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2&gt;2 端口常用配置命令&lt;br/&gt;&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;查看所有区域防火墙策略
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--list-all-zones

#&amp;nbsp;查看当前活动区域配置信息，默认为public。主要看流量出入的网卡在哪个区域，如下图，显示eth0后，是绑定在public区域。
firewall-cmd&amp;nbsp;--list-all&amp;nbsp;&amp;nbsp;&amp;nbsp;

#&amp;nbsp;先设置默认的public区域网卡流量为拒绝所有，也就是活动区域。
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--zone=public&amp;nbsp;--set-target=DROP&amp;nbsp;--permanent

#&amp;nbsp;放通来自175.178.113.227所有访问，默认添加到活动区域
firewall-cmd&amp;nbsp;--permanent&amp;nbsp;--add-rich-rule=&amp;#39;rule&amp;nbsp;family=&amp;quot;ipv4&amp;quot;&amp;nbsp;source&amp;nbsp;address=&amp;quot;175.178.113.227&amp;quot;&amp;nbsp;accept&amp;#39;

#&amp;nbsp;取消来自175.178.113.227所有访问。
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--permanent&amp;nbsp;--remove-rich-rule=&amp;#39;rule&amp;nbsp;family=&amp;quot;ipv4&amp;quot;&amp;nbsp;source&amp;nbsp;address=&amp;quot;175.178.113.227&amp;quot;&amp;nbsp;accept&amp;#39;

#&amp;nbsp;配置完成后再刷新
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--reload

#&amp;nbsp;允许指定端口8560所有可以访问
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--permanent&amp;nbsp;--zone=public&amp;nbsp;--add-port=8560/tcp

#&amp;nbsp;取消指定端口8560访问
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--permanent&amp;nbsp;--zone=public&amp;nbsp;--remove-port=8560/tcp

#&amp;nbsp;查看端口开放情况
sudo&amp;nbsp;firewall-cmd&amp;nbsp;--zone=public&amp;nbsp;--list-ports&lt;/pre&gt;&lt;p&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/02/202502271740641770438605.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h2&gt;2 重新卸载安装防火墙&lt;/h2&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;停止并禁用&amp;nbsp;firewalld&amp;nbsp;服务
sudo&amp;nbsp;systemctl&amp;nbsp;stop&amp;nbsp;firewalld
sudo&amp;nbsp;systemctl&amp;nbsp;disable&amp;nbsp;firewalld

#&amp;nbsp;卸载&amp;nbsp;firewalld
sudo&amp;nbsp;yum&amp;nbsp;remove&amp;nbsp;firewalld&amp;nbsp;-y

#&amp;nbsp;清除配置文件
sudo&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;/etc/firewalld
sudo&amp;nbsp;rm&amp;nbsp;-rf&amp;nbsp;/var/lib/firewalld

#&amp;nbsp;重新安装&amp;nbsp;firewalld
sudo&amp;nbsp;yum&amp;nbsp;install&amp;nbsp;firewalld&amp;nbsp;-y

#&amp;nbsp;启动并启用&amp;nbsp;firewalld
sudo&amp;nbsp;systemctl&amp;nbsp;start&amp;nbsp;firewalld
sudo&amp;nbsp;systemctl&amp;nbsp;enable&amp;nbsp;firewalld

#&amp;nbsp;检查&amp;nbsp;firewalld&amp;nbsp;状态
sudo&amp;nbsp;systemctl&amp;nbsp;status&amp;nbsp;firewalld&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 27 Feb 2025 14:07:17 +0800</pubDate></item><item><title>统信 UOS 系统安装JDK 1.8和配置环境变量</title><link>https://www.powershell.com.cn/?id=168</link><description>&lt;h1&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;文章目录&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;前言&lt;br/&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;一、JDK 1.8下载&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;二、&lt;span style=&quot;text-wrap-mode: wrap; font-family: 宋体, SimSun;&quot;&gt;JDK 1.8安装和环境变量配置&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;h1&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;前言&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;
    &lt;span style=&quot;text-wrap-mode: wrap; font-family: 宋体, SimSun;&quot;&gt;本文章介绍国产操作系统统信 UOS 安装 JDK 1.8和配置环境变量方法，如有需要可借鉴该文章。&lt;/span&gt;
&lt;/p&gt;
&lt;h1&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;一、JDK 1.8下载&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;1 JDK下载地址(https://repo.huaweicloud.com/java/jdk/)，此文章下载的版本是 JDK 1.8 202版本。&lt;/span&gt;
&lt;/p&gt;
&lt;h1&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;二、JDK 1.8安装和环境变量配置&lt;/span&gt;
&lt;/h1&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;1、将下载好的JDK解压，我的JDK放置的目录为/home/ZSQ9/Software/jdk1.8，可根据个人软件安装习惯放置即可。&lt;/span&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736484547191389.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;400&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 800px; height: 400px;&quot;/&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;2、环境变量配置，&lt;span style=&quot;color: #4D4D4D; font-size: 16px; text-wrap-mode: wrap; background-color: #FFFFFF; font-family: 宋体, SimSun;&quot;&gt;/etc/profile下的环境变量是针对所用用户。&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;vim /etc/profile&lt;/pre&gt;
&lt;p&gt;
    &lt;span style=&quot;font-size: 14px; font-family: 宋体, SimSun;&quot;&gt;&lt;span style=&quot;font-size: 14px; text-wrap-mode: wrap; background-color: #FFFFFF; font-family: 宋体, SimSun;&quot;&gt;3、&lt;/span&gt;&lt;span style=&quot;font-size: 14px; color: #4D4D4D; text-wrap-mode: wrap; background-color: #FFFFFF; font-family: 宋体, SimSun;&quot;&gt;按shift+G键，跳到文件底端。&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;color: #4D4D4D; text-wrap-mode: wrap; background-color: #FFFFFF; font-size: 14px; font-family: 宋体, SimSun;&quot;&gt;4、按O键，表示下一行进行插入。&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-size: 14px; font-family: 宋体, SimSun;&quot;&gt;5、在配置文件最底部加入JDK相关的环境变量。&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-size: 14px; font-family: 宋体, SimSun;&quot;&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&amp;nbsp; export JAVA_HOME=/home/ZSQ9/Software/jdk1.8&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&amp;nbsp; export PATH=$JAVA_HOME/bin:$PATH&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&amp;nbsp; export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;/span&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736487717564872.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;600&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 800px; height: 600px;&quot;/&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;font-size: 14px; font-family: 宋体, SimSun;&quot;&gt;6、&lt;span style=&quot;font-size: 14px; color: #4D4D4D; text-wrap-mode: wrap; background-color: #FFFFFF; font-family: 宋体, SimSun;&quot;&gt;按住Esc键，退出编辑模式。底部的插入消失表示退出了编辑模式。按住shift+：键，输入wq然后回车，保存并退出。&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;span style=&quot;color: #4D4D4D; text-wrap-mode: wrap; background-color: #FFFFFF; font-size: 14px; font-family: 宋体, SimSun;&quot;&gt;7、让更改生效。&lt;/span&gt;
&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;source /etc/profile&lt;/pre&gt;
&lt;p&gt;
    &lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;8、验证配置是否生效。&lt;/span&gt;
&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;java -version&lt;/pre&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;
    &lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736486624454401.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;60&quot; style=&quot;width: 800px; height: 60px;&quot; border=&quot;0&quot; vspace=&quot;0&quot;/&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;/span&gt;&lt;br/&gt;
&lt;/p&gt;

&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1888344912803574&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-1888344912803574&quot;
     data-ad-slot=&quot;5774035389&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;</description><pubDate>Fri, 10 Jan 2025 12:40:37 +0800</pubDate></item><item><title>统信 UOS 系统安装 IntelliJ IDEA</title><link>https://www.powershell.com.cn/?id=167</link><description>&lt;h1&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;文章目录&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;前言&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;一、IntelliJ IDEA下载&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;二、IntelliJ IDEA安装&lt;/span&gt;&lt;/p&gt;&lt;h1&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;前言&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;本文章介绍国产操作系统统信 UOS 安装 IntelliJ IDEA 方法，如果需求可参考该文章。&lt;/span&gt;&lt;/p&gt;&lt;h1&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;span style=&quot;text-wrap-mode: wrap; font-family: 宋体, SimSun;&quot;&gt;一、IntelliJ IDEA下载&lt;/span&gt;&lt;span style=&quot;font-family: 宋体, SimSun; text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;span style=&quot;text-wrap-mode: wrap; font-family: 宋体, SimSun;&quot;&gt;1 进入官网(https://www.jetbrains.com/idea/download/?section=linux)，选择自己需要的版本下载。 &lt;br/&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 宋体, SimSun; text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;2 由于本人习惯用2019.2.4版本，这里下载2019.2.4版本。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736480533209793.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;400&quot; style=&quot;width: 800px; height: 400px;&quot; border=&quot;0&quot; vspace=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736480643914517.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;400&quot; style=&quot;width: 800px; height: 400px;&quot; border=&quot;0&quot; vspace=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;span style=&quot;text-wrap-mode: wrap; font-family: 宋体, SimSun;&quot;&gt;二、IntelliJ IDEA安装&lt;/span&gt;&lt;span style=&quot;font-family: 宋体, SimSun; text-wrap-mode: wrap;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;1 将下载好的IDEA解压。&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736480940879278.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;400&quot; style=&quot;width: 800px; height: 400px;&quot; border=&quot;0&quot; vspace=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;span class=&quot;edui-editor-imagescale-hand0&quot; style=&quot;padding: 0px; margin: -4px 0px 0px -4px; box-sizing: border-box; position: absolute; width: 6px; height: 6px; overflow: hidden; font-size: 0px; display: block; background-color: #3C9DD0; cursor: nw-resize; top: 0px; left: 0px; color: #333333; font-family: 宋体, SimSun;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;edui-editor-imagescale-hand1&quot; style=&quot;padding: 0px; margin: -4px 0px 0px -4px; box-sizing: border-box; position: absolute; width: 6px; height: 6px; overflow: hidden; font-size: 0px; display: block; background-color: #3C9DD0; cursor: n-resize; top: 0px; left: 266.5px; color: #333333; font-family: 宋体, SimSun;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;edui-editor-imagescale-hand2&quot; style=&quot;padding: 0px; margin: -4px 0px 0px -3px; box-sizing: border-box; position: absolute; width: 6px; height: 6px; overflow: hidden; font-size: 0px; display: block; background-color: #3C9DD0; cursor: ne-resize; top: 0px; left: 533px; color: #333333; font-family: 宋体, SimSun;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;edui-editor-imagescale-hand3&quot; style=&quot;padding: 0px; margin: -4px 0px 0px -4px; box-sizing: border-box; position: absolute; width: 6px; height: 6px; overflow: hidden; font-size: 0px; display: block; background-color: #3C9DD0; cursor: w-resize; top: 80px; left: 0px; color: #333333; font-family: 宋体, SimSun;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;2 解压目录下bin目录的idea.sh脚本就是软件启动文件，可以将快捷方式发送到桌面。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736481203727434.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;400&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 800px; height: 400px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;3 双击idea.sh启动文件即可启动IDEA。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2025/01/202501101736487966469250.png&quot; alt=&quot;image.png&quot; width=&quot;800&quot; height=&quot;400&quot; border=&quot;0&quot; vspace=&quot;0&quot; style=&quot;width: 800px; height: 400px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;4 统信系统 IDEA 激活方式和Windows版本一致，如需激活软件，可找取相关的资源。&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 10 Jan 2025 11:04:58 +0800</pubDate></item><item><title>群晖DSM7.2.2安装videso Station方法</title><link>https://www.powershell.com.cn/?id=166</link><description>&lt;h1&gt;前置准备条件&lt;/h1&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;系统版本为&lt;span style=&quot;color: #414B55; font-family: Verdana, Arial, &amp;quot;Microsoft YaHei&amp;quot;, sans-serif; font-size: 13px; font-variant-ligatures: none; text-wrap: wrap; background-color: #FFFFFF;&quot;&gt;DSM 7.2.2版本。&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;color:#414b55;font-family:Verdana, Arial, Microsoft YaHei, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 13px; font-variant-ligatures: none; background-color: #FFFFFF;&quot;&gt;群辉系统需要开启SSH端口访问。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;color:#414b55;font-family:Verdana, Arial, Microsoft YaHei, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 13px; font-variant-ligatures: none; background-color: #FFFFFF;&quot;&gt;SSH连接工具，连接到群辉。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style=&quot;color:#414b55;font-family:Verdana, Arial, Microsoft YaHei, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 13px; font-variant-ligatures: none; background-color: #FFFFFF;&quot;&gt;videso Station安装脚本。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=&quot;color:#414b55;font-family:Verdana, Arial, Microsoft YaHei, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 13px; font-variant-ligatures: none; background-color: #FFFFFF;&quot;&gt;直接附上代码,请把代码复制到文本里面。然后再群辉上面通过bash命令运行文件进行安装。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#!/usr/bin/env&amp;nbsp;bash
#------------------------------------------------------------------------------
#&amp;nbsp;https://www.synology.com/en-au/releaseNote/VideoStation
#&amp;nbsp;https://www.synology.com/en-au/releaseNote/CodecPack
#&amp;nbsp;https://www.synology.com/en-au/releaseNote/DSM
#
#&amp;nbsp;Video&amp;nbsp;Station&amp;nbsp;does&amp;nbsp;not&amp;nbsp;support&amp;nbsp;TrueHD&amp;nbsp;or&amp;nbsp;DTS&amp;nbsp;audio.
#&amp;nbsp;Video&amp;nbsp;Station&amp;nbsp;does&amp;nbsp;not&amp;nbsp;decode&amp;nbsp;AAC&amp;nbsp;audio.
#------------------------------------------------------------------------------
#&amp;nbsp;https://archive.synology.com/download/Package
#&amp;nbsp;https://web.archive.org/web/20240825163306/https://archive.synology.com/download/Package
#------------------------------------------------------------------------------
#&amp;nbsp;To&amp;nbsp;get&amp;nbsp;Video&amp;nbsp;Station&amp;nbsp;to&amp;nbsp;work&amp;nbsp;I&amp;nbsp;needed&amp;nbsp;to&amp;nbsp;install&amp;nbsp;an&amp;nbsp;older&amp;nbsp;version&amp;nbsp;of&amp;nbsp;AME...
#&amp;nbsp;which&amp;nbsp;means&amp;nbsp;Drive&amp;nbsp;and&amp;nbsp;Surveillance&amp;nbsp;Station&amp;nbsp;may&amp;nbsp;not&amp;nbsp;work
#&amp;nbsp;(unless&amp;nbsp;I&amp;nbsp;install&amp;nbsp;older&amp;nbsp;versions&amp;nbsp;of&amp;nbsp;them).
#------------------------------------------------------------------------------
#&amp;nbsp;I&amp;#39;ve&amp;nbsp;seen&amp;nbsp;evidence&amp;nbsp;of:
#&amp;nbsp;&amp;nbsp;&amp;nbsp;VideoStation=&amp;quot;3.2.0-3173&amp;quot;&amp;nbsp;(when&amp;nbsp;you&amp;nbsp;try&amp;nbsp;to&amp;nbsp;manually&amp;nbsp;install&amp;nbsp;3.1.1)
#&amp;nbsp;&amp;nbsp;&amp;nbsp;CodecPack=&amp;quot;4.0.0-4003&amp;quot;
#&amp;nbsp;It&amp;nbsp;looks&amp;nbsp;like&amp;nbsp;Synology&amp;nbsp;were&amp;nbsp;developing&amp;nbsp;a&amp;nbsp;new&amp;nbsp;video&amp;nbsp;station&amp;nbsp;for&amp;nbsp;DSM&amp;nbsp;7.2.2
#&amp;nbsp;before&amp;nbsp;someone&amp;nbsp;decided&amp;nbsp;to&amp;nbsp;scrap&amp;nbsp;it&amp;nbsp;and&amp;nbsp;cannibalise&amp;nbsp;AME&amp;nbsp;to&amp;nbsp;save&amp;nbsp;a&amp;nbsp;few&amp;nbsp;dollars
#------------------------------------------------------------------------------
#&amp;nbsp;TODO
#&amp;nbsp;Figure&amp;nbsp;out&amp;nbsp;how&amp;nbsp;to&amp;nbsp;install&amp;nbsp;already&amp;nbsp;downloaded&amp;nbsp;package&amp;nbsp;to&amp;nbsp;specific&amp;nbsp;volume
#&amp;nbsp;Figure&amp;nbsp;out&amp;nbsp;where&amp;nbsp;package&amp;nbsp;center&amp;nbsp;saves&amp;nbsp;it&amp;#39;s&amp;nbsp;settings
#&amp;nbsp;Figure&amp;nbsp;out&amp;nbsp;how&amp;nbsp;to&amp;nbsp;run&amp;nbsp;VideoStation&amp;nbsp;3.1.1-3168&amp;nbsp;with&amp;nbsp;CodecPack&amp;nbsp;3.1.0-3005
#&amp;nbsp;&amp;nbsp;&amp;nbsp;or&amp;nbsp;add&amp;nbsp;OpenSubtitle&amp;nbsp;changes&amp;nbsp;from&amp;nbsp;3.1.1-3168&amp;nbsp;to&amp;nbsp;3.1.0-3153
#------------------------------------------------------------------------------

scriptver=&amp;quot;v1.3.13&amp;quot;
script=Video_Station_for_DSM_722
repo=&amp;quot;007revad/Video_Station_for_DSM_722&amp;quot;
scriptname=videostation_for_722

#&amp;nbsp;Shell&amp;nbsp;Colors
#Black=&amp;#39;\e[0;30m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Black}
#Red=&amp;#39;\e[0;31m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Red}
#Green=&amp;#39;\e[0;32m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Green}
#Yellow=&amp;#39;\e[0;33m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Yellow}
#Blue=&amp;#39;\e[0;34m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Blue}
#Purple=&amp;#39;\e[0;35m&amp;#39;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Purple}
Cyan=&amp;#39;\e[0;36m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Cyan}
#White=&amp;#39;\e[0;37m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${White}
Error=&amp;#39;\e[41m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Error}
Off=&amp;#39;\e[0m&amp;#39;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;${Off}

ding(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf&amp;nbsp;\\a
}

if&amp;nbsp;[[&amp;nbsp;$1&amp;nbsp;==&amp;nbsp;&amp;quot;--trace&amp;quot;&amp;nbsp;]]&amp;nbsp;||&amp;nbsp;[[&amp;nbsp;$1&amp;nbsp;==&amp;nbsp;&amp;quot;-t&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trace=&amp;quot;yes&amp;quot;
fi

#&amp;nbsp;Check&amp;nbsp;script&amp;nbsp;is&amp;nbsp;running&amp;nbsp;as&amp;nbsp;root
if&amp;nbsp;[[&amp;nbsp;$(&amp;nbsp;whoami&amp;nbsp;)&amp;nbsp;!=&amp;nbsp;&amp;quot;root&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ding
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;This&amp;nbsp;script&amp;nbsp;must&amp;nbsp;be&amp;nbsp;run&amp;nbsp;as&amp;nbsp;sudo&amp;nbsp;or&amp;nbsp;root!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;1&amp;nbsp;&amp;nbsp;#&amp;nbsp;Not&amp;nbsp;running&amp;nbsp;as&amp;nbsp;sudo&amp;nbsp;or&amp;nbsp;root
fi

#&amp;nbsp;Get&amp;nbsp;NAS&amp;nbsp;model
model=$(cat&amp;nbsp;/proc/sys/kernel/syno_hw_version)
#modelname=&amp;quot;$model&amp;quot;


#&amp;nbsp;Show&amp;nbsp;script&amp;nbsp;version
#echo&amp;nbsp;-e&amp;nbsp;&amp;quot;$script&amp;nbsp;$scriptver\ngithub.com/$repo\n&amp;quot;
echo&amp;nbsp;&amp;quot;$script&amp;nbsp;$scriptver&amp;quot;

#&amp;nbsp;Get&amp;nbsp;DSM&amp;nbsp;full&amp;nbsp;version
productversion=$(/usr/syno/bin/synogetkeyvalue&amp;nbsp;/etc.defaults/VERSION&amp;nbsp;productversion)
buildphase=$(/usr/syno/bin/synogetkeyvalue&amp;nbsp;/etc.defaults/VERSION&amp;nbsp;buildphase)
buildnumber=$(/usr/syno/bin/synogetkeyvalue&amp;nbsp;/etc.defaults/VERSION&amp;nbsp;buildnumber)
smallfixnumber=$(/usr/syno/bin/synogetkeyvalue&amp;nbsp;/etc.defaults/VERSION&amp;nbsp;smallfixnumber)

#&amp;nbsp;Get&amp;nbsp;CPU&amp;nbsp;arch&amp;nbsp;and&amp;nbsp;family
arch=&amp;quot;$(uname&amp;nbsp;-m)&amp;quot;
family=$(/usr/syno/bin/synogetkeyvalue&amp;nbsp;/etc.defaults/synoinfo.conf&amp;nbsp;platform_name)

#&amp;nbsp;Show&amp;nbsp;DSM&amp;nbsp;full&amp;nbsp;version&amp;nbsp;and&amp;nbsp;model
if&amp;nbsp;[[&amp;nbsp;$buildphase&amp;nbsp;==&amp;nbsp;GM&amp;nbsp;]];&amp;nbsp;then&amp;nbsp;buildphase=&amp;quot;&amp;quot;;&amp;nbsp;fi
if&amp;nbsp;[[&amp;nbsp;$smallfixnumber&amp;nbsp;-gt&amp;nbsp;&amp;quot;0&amp;quot;&amp;nbsp;]];&amp;nbsp;then&amp;nbsp;smallfix=&amp;quot;-$smallfixnumber&amp;quot;;&amp;nbsp;fi
echo&amp;nbsp;&amp;quot;$model&amp;nbsp;DSM&amp;nbsp;$productversion-$buildnumber$smallfix&amp;nbsp;$buildphase&amp;quot;

#&amp;nbsp;Show&amp;nbsp;CPU&amp;nbsp;arch&amp;nbsp;and&amp;nbsp;family
echo&amp;nbsp;&amp;quot;CPU&amp;nbsp;$family&amp;nbsp;$arch&amp;quot;

#------------------------------------------------------------------------------
#&amp;nbsp;Check&amp;nbsp;latest&amp;nbsp;release&amp;nbsp;with&amp;nbsp;GitHub&amp;nbsp;API

#&amp;nbsp;Save&amp;nbsp;options&amp;nbsp;used
args=(&amp;quot;$@&amp;quot;)

#&amp;nbsp;Get&amp;nbsp;latest&amp;nbsp;release&amp;nbsp;info
#&amp;nbsp;Curl&amp;nbsp;timeout&amp;nbsp;options:
#&amp;nbsp;https://unix.stackexchange.com/questions/94604/does-curl-have-a-timeout
release=$(curl&amp;nbsp;--silent&amp;nbsp;--connect-timeout&amp;nbsp;30&amp;nbsp;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;https://api.github.com/repos/$repo/releases/latest&amp;quot;)

#&amp;nbsp;Release&amp;nbsp;version
tag=$(echo&amp;nbsp;&amp;quot;$release&amp;quot;&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;&amp;#39;&amp;quot;tag_name&amp;quot;:&amp;#39;&amp;nbsp;|&amp;nbsp;sed&amp;nbsp;-E&amp;nbsp;&amp;#39;s/.*&amp;quot;([^&amp;quot;]+)&amp;quot;.*/\1/&amp;#39;)
shorttag=&amp;quot;${tag:1}&amp;quot;

#&amp;nbsp;Get&amp;nbsp;script&amp;nbsp;location
#&amp;nbsp;https://stackoverflow.com/questions/59895/
source=${BASH_SOURCE[0]}
while&amp;nbsp;[&amp;nbsp;-L&amp;nbsp;&amp;quot;$source&amp;quot;&amp;nbsp;];&amp;nbsp;do&amp;nbsp;#&amp;nbsp;Resolve&amp;nbsp;$source&amp;nbsp;until&amp;nbsp;the&amp;nbsp;file&amp;nbsp;is&amp;nbsp;no&amp;nbsp;longer&amp;nbsp;a&amp;nbsp;symlink
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptpath=$(&amp;nbsp;cd&amp;nbsp;-P&amp;nbsp;&amp;quot;$(&amp;nbsp;dirname&amp;nbsp;&amp;quot;$source&amp;quot;&amp;nbsp;)&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;2&amp;gt;&amp;amp;1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;pwd&amp;nbsp;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;source=$(readlink&amp;nbsp;&amp;quot;$source&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;If&amp;nbsp;$source&amp;nbsp;was&amp;nbsp;a&amp;nbsp;relative&amp;nbsp;symlink,&amp;nbsp;we&amp;nbsp;need&amp;nbsp;to&amp;nbsp;resolve&amp;nbsp;it
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;relative&amp;nbsp;to&amp;nbsp;the&amp;nbsp;path&amp;nbsp;where&amp;nbsp;the&amp;nbsp;symlink&amp;nbsp;file&amp;nbsp;was&amp;nbsp;located
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[[&amp;nbsp;$source&amp;nbsp;!=&amp;nbsp;/*&amp;nbsp;]]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;source=$scriptpath/$source
done
scriptpath=$(&amp;nbsp;cd&amp;nbsp;-P&amp;nbsp;&amp;quot;$(&amp;nbsp;dirname&amp;nbsp;&amp;quot;$source&amp;quot;&amp;nbsp;)&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;2&amp;gt;&amp;amp;1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;pwd&amp;nbsp;)
scriptfile=$(&amp;nbsp;basename&amp;nbsp;--&amp;nbsp;&amp;quot;$source&amp;quot;&amp;nbsp;)
echo&amp;nbsp;&amp;quot;Running&amp;nbsp;from:&amp;nbsp;${scriptpath}/$scriptfile&amp;quot;

#echo&amp;nbsp;&amp;quot;Script&amp;nbsp;location:&amp;nbsp;$scriptpath&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
#echo&amp;nbsp;&amp;quot;Source:&amp;nbsp;$source&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
#echo&amp;nbsp;&amp;quot;Script&amp;nbsp;filename:&amp;nbsp;$scriptfile&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug

#echo&amp;nbsp;&amp;quot;tag:&amp;nbsp;$tag&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
#echo&amp;nbsp;&amp;quot;scriptver:&amp;nbsp;$scriptver&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug


cleanup_tmp(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Delete&amp;nbsp;downloaded&amp;nbsp;.tar.gz&amp;nbsp;file
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/$script-$shorttag.tar.gz&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;rm&amp;nbsp;&amp;quot;/tmp/$script-$shorttag.tar.gz&amp;quot;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;delete&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;downloaded&amp;nbsp;/tmp/$script-$shorttag.tar.gz!&amp;quot;&amp;nbsp;&amp;gt;&amp;amp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Delete&amp;nbsp;extracted&amp;nbsp;tmp&amp;nbsp;files
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;-d&amp;nbsp;&amp;quot;/tmp/$script-$shorttag&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;rm&amp;nbsp;-r&amp;nbsp;&amp;quot;/tmp/$script-$shorttag&amp;quot;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;delete&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;downloaded&amp;nbsp;/tmp/$script-$shorttag!&amp;quot;&amp;nbsp;&amp;gt;&amp;amp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
}


if&amp;nbsp;!&amp;nbsp;printf&amp;nbsp;&amp;quot;%s\n%s\n&amp;quot;&amp;nbsp;&amp;quot;$tag&amp;quot;&amp;nbsp;&amp;quot;$scriptver&amp;quot;&amp;nbsp;|
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sort&amp;nbsp;--check=quiet&amp;nbsp;--version-sort&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\n${Cyan}There&amp;nbsp;is&amp;nbsp;a&amp;nbsp;newer&amp;nbsp;version&amp;nbsp;of&amp;nbsp;this&amp;nbsp;script&amp;nbsp;available.${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;Current&amp;nbsp;version:&amp;nbsp;${scriptver}\nLatest&amp;nbsp;version:&amp;nbsp;&amp;nbsp;$tag&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptdl=&amp;quot;$scriptpath/$script-$shorttag&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;-f&amp;nbsp;${scriptdl}.tar.gz&amp;nbsp;]]&amp;nbsp;||&amp;nbsp;[[&amp;nbsp;-f&amp;nbsp;${scriptdl}.zip&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;They&amp;nbsp;have&amp;nbsp;the&amp;nbsp;latest&amp;nbsp;version&amp;nbsp;tar.gz&amp;nbsp;downloaded&amp;nbsp;but&amp;nbsp;are&amp;nbsp;using&amp;nbsp;older&amp;nbsp;version
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;You&amp;nbsp;have&amp;nbsp;the&amp;nbsp;latest&amp;nbsp;version&amp;nbsp;downloaded&amp;nbsp;but&amp;nbsp;are&amp;nbsp;using&amp;nbsp;an&amp;nbsp;older&amp;nbsp;version&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep&amp;nbsp;10
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;[[&amp;nbsp;-d&amp;nbsp;$scriptdl&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;They&amp;nbsp;have&amp;nbsp;the&amp;nbsp;latest&amp;nbsp;version&amp;nbsp;extracted&amp;nbsp;but&amp;nbsp;are&amp;nbsp;using&amp;nbsp;older&amp;nbsp;version
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;You&amp;nbsp;have&amp;nbsp;the&amp;nbsp;latest&amp;nbsp;version&amp;nbsp;extracted&amp;nbsp;but&amp;nbsp;are&amp;nbsp;using&amp;nbsp;an&amp;nbsp;older&amp;nbsp;version&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep&amp;nbsp;10
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Cyan}Do&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;download&amp;nbsp;$tag&amp;nbsp;now?${Off}&amp;nbsp;[y/n]&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;read&amp;nbsp;-r&amp;nbsp;-t&amp;nbsp;30&amp;nbsp;reply
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;${reply,,}&amp;nbsp;==&amp;nbsp;&amp;quot;y&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Delete&amp;nbsp;previously&amp;nbsp;downloaded&amp;nbsp;.tar.gz&amp;nbsp;file&amp;nbsp;and&amp;nbsp;extracted&amp;nbsp;tmp&amp;nbsp;files
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cleanup_tmp

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;cd&amp;nbsp;/tmp;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url=&amp;quot;https://github.com/$repo/archive/refs/tags/$tag.tar.gz&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;curl&amp;nbsp;-JLO&amp;nbsp;-m&amp;nbsp;30&amp;nbsp;--connect-timeout&amp;nbsp;5&amp;nbsp;&amp;quot;$url&amp;quot;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;download&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;$script-$shorttag.tar.gz!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;-f&amp;nbsp;/tmp/$script-$shorttag.tar.gz&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Extract&amp;nbsp;tar&amp;nbsp;file&amp;nbsp;to&amp;nbsp;/tmp/&amp;lt;script-name&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;tar&amp;nbsp;-xf&amp;nbsp;&amp;quot;/tmp/$script-$shorttag.tar.gz&amp;quot;&amp;nbsp;-C&amp;nbsp;&amp;quot;/tmp&amp;quot;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;extract&amp;nbsp;$script-$shorttag.tar.gz!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Set&amp;nbsp;script&amp;nbsp;sh&amp;nbsp;files&amp;nbsp;as&amp;nbsp;executable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;chmod&amp;nbsp;a+x&amp;nbsp;&amp;quot;/tmp/$script-$shorttag/&amp;quot;*.sh&amp;nbsp;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;permerr=1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;set&amp;nbsp;executable&amp;nbsp;permissions&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Copy&amp;nbsp;new&amp;nbsp;script&amp;nbsp;sh&amp;nbsp;file&amp;nbsp;to&amp;nbsp;script&amp;nbsp;location
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;cp&amp;nbsp;-p&amp;nbsp;&amp;quot;/tmp/$script-$shorttag/${scriptname}.sh&amp;quot;&amp;nbsp;&amp;quot;${scriptpath}/${scriptfile}&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;copyerr=1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;copy&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;$script-$shorttag&amp;nbsp;sh&amp;nbsp;file(s)&amp;nbsp;to:\n&amp;nbsp;$scriptpath/${scriptfile}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Copy&amp;nbsp;new&amp;nbsp;CHANGES.txt&amp;nbsp;file&amp;nbsp;to&amp;nbsp;script&amp;nbsp;location&amp;nbsp;(if&amp;nbsp;script&amp;nbsp;on&amp;nbsp;a&amp;nbsp;volume)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$scriptpath&amp;nbsp;=~&amp;nbsp;/volume*&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Set&amp;nbsp;permissions&amp;nbsp;on&amp;nbsp;CHANGES.txt
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;chmod&amp;nbsp;664&amp;nbsp;&amp;quot;/tmp/$script-$shorttag/CHANGES.txt&amp;quot;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;permerr=1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;set&amp;nbsp;permissions&amp;nbsp;on:&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;$scriptpath/CHANGES.txt&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Copy&amp;nbsp;new&amp;nbsp;CHANGES.txt&amp;nbsp;file&amp;nbsp;to&amp;nbsp;script&amp;nbsp;location
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;cp&amp;nbsp;-p&amp;nbsp;&amp;quot;/tmp/$script-$shorttag/CHANGES.txt&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;${scriptpath}/${scriptname}_CHANGES.txt&amp;quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;copy&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;$script-$shorttag/CHANGES.txt&amp;nbsp;to:\n&amp;nbsp;$scriptpath&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;changestxt=&amp;quot;&amp;nbsp;and&amp;nbsp;changes.txt&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Delete&amp;nbsp;downloaded&amp;nbsp;tmp&amp;nbsp;files
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cleanup_tmp

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Notify&amp;nbsp;of&amp;nbsp;success&amp;nbsp;(if&amp;nbsp;there&amp;nbsp;were&amp;nbsp;no&amp;nbsp;errors)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$copyerr&amp;nbsp;!=&amp;nbsp;1&amp;nbsp;]]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;[[&amp;nbsp;$permerr&amp;nbsp;!=&amp;nbsp;1&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\n$tag&amp;nbsp;${scriptfile}$changestxt&amp;nbsp;downloaded&amp;nbsp;to:&amp;nbsp;${scriptpath}\n&amp;quot;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Reload&amp;nbsp;script
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf&amp;nbsp;--&amp;nbsp;&amp;#39;-%.0s&amp;#39;&amp;nbsp;{1..79};&amp;nbsp;echo&amp;nbsp;&amp;nbsp;#&amp;nbsp;print&amp;nbsp;79&amp;nbsp;-
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exec&amp;nbsp;&amp;quot;${scriptpath}/$scriptfile&amp;quot;&amp;nbsp;&amp;quot;${args[@]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;quot;\
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;/tmp/$script-$shorttag.tar.gz&amp;nbsp;not&amp;nbsp;found!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#ls&amp;nbsp;/tmp&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;&amp;quot;$script&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cd&amp;nbsp;&amp;quot;$scriptpath&amp;quot;&amp;nbsp;||&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;cd&amp;nbsp;to&amp;nbsp;script&amp;nbsp;location!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;cd&amp;nbsp;to&amp;nbsp;/tmp!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi

#------------------------------------------------------------------------------

#&amp;nbsp;Check&amp;nbsp;script&amp;nbsp;is&amp;nbsp;needed
if&amp;nbsp;[[&amp;nbsp;$buildnumber&amp;nbsp;-lt&amp;nbsp;&amp;quot;72803&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\nYour&amp;nbsp;DSM&amp;nbsp;version&amp;nbsp;does&amp;nbsp;not&amp;nbsp;need&amp;nbsp;this&amp;nbsp;script&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit
fi

#&amp;nbsp;Check&amp;nbsp;model&amp;nbsp;is&amp;nbsp;supported
spks_list=(&amp;quot;armada37xx&amp;quot;&amp;nbsp;&amp;quot;armada38x&amp;quot;&amp;nbsp;&amp;quot;armv7&amp;quot;&amp;nbsp;&amp;quot;monaco&amp;quot;&amp;nbsp;&amp;quot;rtd1296&amp;quot;&amp;nbsp;&amp;quot;rtd1619b&amp;quot;&amp;nbsp;&amp;quot;x86_64&amp;quot;)
if&amp;nbsp;[[&amp;nbsp;${spks_list[*]}&amp;nbsp;=~&amp;nbsp;$arch&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cputype=&amp;quot;$arch&amp;quot;
elif&amp;nbsp;[[&amp;nbsp;${spks_list[*]}&amp;nbsp;=~&amp;nbsp;$family&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cputype=&amp;quot;$family&amp;quot;
else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\nUnsupported&amp;nbsp;or&amp;nbsp;unknown&amp;nbsp;CPU&amp;nbsp;family&amp;nbsp;or&amp;nbsp;architecture&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit
fi
echo&amp;nbsp;&amp;quot;Using&amp;nbsp;CPU&amp;nbsp;type:&amp;nbsp;$cputype&amp;quot;

#------------------------------------------------------------------------------

cleanup(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arg1=$?
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;s&amp;nbsp;in&amp;nbsp;/tmp/CodecPack-&amp;quot;${cputype}&amp;quot;-*.spk;&amp;nbsp;do&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&amp;quot;$s&amp;quot;;&amp;nbsp;done
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;s&amp;nbsp;in&amp;nbsp;/tmp/VideoStation-&amp;quot;${cputype}&amp;quot;-*.spk;&amp;nbsp;do&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&amp;quot;$s&amp;quot;;&amp;nbsp;done
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;s&amp;nbsp;in&amp;nbsp;/tmp/MediaServer-&amp;quot;${cputype}&amp;quot;-*.spk;&amp;nbsp;do&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&amp;quot;$s&amp;quot;;&amp;nbsp;done
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;&amp;quot;${arg1}&amp;quot;
}

trap&amp;nbsp;cleanup&amp;nbsp;EXIT

progbar(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;pid&amp;nbsp;of&amp;nbsp;process
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;string&amp;nbsp;to&amp;nbsp;echo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string=&amp;quot;$2&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local&amp;nbsp;dots
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local&amp;nbsp;progress
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dots=&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;[[&amp;nbsp;-d&amp;nbsp;/proc/$1&amp;nbsp;]];&amp;nbsp;do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dots=&amp;quot;${dots}.&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progress=&amp;quot;$dots&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;${#dots}&amp;nbsp;-gt&amp;nbsp;&amp;quot;10&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dots=&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progress=&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-ne&amp;nbsp;&amp;quot;&amp;nbsp;&amp;nbsp;${2}$progress\r&amp;quot;;&amp;nbsp;sleep&amp;nbsp;0.3
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;done
}

progstatus(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;return&amp;nbsp;status&amp;nbsp;of&amp;nbsp;process
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;string&amp;nbsp;to&amp;nbsp;echo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$3&amp;nbsp;line&amp;nbsp;number&amp;nbsp;function&amp;nbsp;was&amp;nbsp;called&amp;nbsp;from
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local&amp;nbsp;tracestring
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local&amp;nbsp;pad
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tracestring=&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;nbsp;$3&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pad=$(printf&amp;nbsp;--&amp;nbsp;&amp;#39;&amp;nbsp;%.0s&amp;#39;&amp;nbsp;{1..80})
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;printf&amp;nbsp;&amp;#39;%.*s&amp;#39;&amp;nbsp;80&amp;nbsp;&amp;quot;${tracestring}${pad}&amp;quot;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$1&amp;nbsp;==&amp;nbsp;&amp;quot;0&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;$2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ding
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;Line&amp;nbsp;${LINENO}:&amp;nbsp;${Error}ERROR${Off}&amp;nbsp;$2&amp;nbsp;failed!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;$tracestring&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$exitonerror&amp;nbsp;!=&amp;nbsp;&amp;quot;no&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;1&amp;nbsp;&amp;nbsp;#&amp;nbsp;Skip&amp;nbsp;exit&amp;nbsp;if&amp;nbsp;exitonerror&amp;nbsp;!=&amp;nbsp;no
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exitonerror=&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#echo&amp;nbsp;&amp;quot;return:&amp;nbsp;$1&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
}

package_status(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;status&amp;nbsp;&amp;quot;${1}&amp;quot;&amp;nbsp;&amp;gt;/dev/null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code=&amp;quot;$?&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;DSM&amp;nbsp;7.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;=&amp;nbsp;started,&amp;nbsp;17&amp;nbsp;=&amp;nbsp;stopped,&amp;nbsp;255&amp;nbsp;=&amp;nbsp;not_installed,&amp;nbsp;150&amp;nbsp;=&amp;nbsp;broken
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;DSM&amp;nbsp;6&amp;nbsp;to&amp;nbsp;7.1&amp;nbsp;&amp;nbsp;0&amp;nbsp;=&amp;nbsp;started,&amp;nbsp;&amp;nbsp;3&amp;nbsp;=&amp;nbsp;stopped,&amp;nbsp;&amp;nbsp;&amp;nbsp;4&amp;nbsp;=&amp;nbsp;not_installed,&amp;nbsp;150&amp;nbsp;=&amp;nbsp;broken
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;0&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#echo&amp;nbsp;&amp;quot;$1&amp;nbsp;is&amp;nbsp;started&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;17&amp;quot;&amp;nbsp;]]&amp;nbsp;||&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;3&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#echo&amp;nbsp;&amp;quot;$1&amp;nbsp;is&amp;nbsp;stopped&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;255&amp;quot;&amp;nbsp;]]&amp;nbsp;||&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;4&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#echo&amp;nbsp;&amp;quot;$1&amp;nbsp;is&amp;nbsp;not&amp;nbsp;installed&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;255
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;150&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#echo&amp;nbsp;&amp;quot;$1&amp;nbsp;is&amp;nbsp;broken&amp;quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;debug
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;150
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;quot;$code&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
}

check_pkg_installed(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;status&amp;nbsp;&amp;quot;${1:?}&amp;quot;&amp;nbsp;&amp;gt;/dev/null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code=&amp;quot;$?&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;255&amp;quot;&amp;nbsp;]]&amp;nbsp;||&amp;nbsp;[[&amp;nbsp;$code&amp;nbsp;==&amp;nbsp;&amp;quot;4&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
}

package_is_running(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;is_onoff&amp;nbsp;&amp;quot;${1}&amp;quot;&amp;nbsp;&amp;gt;/dev/null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code=&amp;quot;$?&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;quot;$code&amp;quot;
}

wait_status(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Wait&amp;nbsp;for&amp;nbsp;package&amp;nbsp;to&amp;nbsp;finish&amp;nbsp;stopping&amp;nbsp;or&amp;nbsp;starting
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;start&amp;nbsp;or&amp;nbsp;stop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local&amp;nbsp;num
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$2&amp;nbsp;==&amp;nbsp;&amp;quot;start&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state=&amp;quot;0&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;[[&amp;nbsp;$2&amp;nbsp;==&amp;nbsp;&amp;quot;stop&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state=&amp;quot;1&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$state&amp;nbsp;==&amp;nbsp;&amp;quot;0&amp;quot;&amp;nbsp;]]&amp;nbsp;||&amp;nbsp;[[&amp;nbsp;$state&amp;nbsp;==&amp;nbsp;&amp;quot;1&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num=&amp;quot;0&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_status&amp;nbsp;&amp;quot;$1&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;[[&amp;nbsp;$?&amp;nbsp;!=&amp;nbsp;&amp;quot;$state&amp;quot;&amp;nbsp;]];&amp;nbsp;do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num=$((num&amp;nbsp;+1))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$num&amp;nbsp;-gt&amp;nbsp;&amp;quot;20&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_status&amp;nbsp;&amp;quot;$1&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;done
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
}

package_stop(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;package&amp;nbsp;display&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timeout&amp;nbsp;5.0m&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;stop&amp;nbsp;&amp;quot;$1&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid=$!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#string=&amp;quot;Stopping&amp;nbsp;${Cyan}${2}${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string=&amp;quot;Stopping&amp;nbsp;${2}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progbar&amp;nbsp;&amp;quot;$pid&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait&amp;nbsp;&amp;quot;$pid&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progstatus&amp;nbsp;&amp;quot;$?&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;&amp;nbsp;&amp;quot;line&amp;nbsp;${LINENO}&amp;quot;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Allow&amp;nbsp;package&amp;nbsp;processes&amp;nbsp;to&amp;nbsp;finish&amp;nbsp;stopping
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait_status&amp;nbsp;&amp;quot;$1&amp;quot;&amp;nbsp;stop
}

package_start(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;package&amp;nbsp;display&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;timeout&amp;nbsp;5.0m&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;start&amp;nbsp;&amp;quot;$1&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid=$!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#string=&amp;quot;Starting&amp;nbsp;${Cyan}${2}${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string=&amp;quot;Starting&amp;nbsp;${2}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progbar&amp;nbsp;&amp;quot;$pid&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait&amp;nbsp;&amp;quot;$pid&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progstatus&amp;nbsp;&amp;quot;$?&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;&amp;nbsp;&amp;quot;line&amp;nbsp;${LINENO}&amp;quot;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Allow&amp;nbsp;package&amp;nbsp;processes&amp;nbsp;to&amp;nbsp;finish&amp;nbsp;starting
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait_status&amp;nbsp;&amp;quot;$1&amp;quot;&amp;nbsp;start
}

package_uninstall(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;package&amp;nbsp;display&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;uninstall&amp;nbsp;&amp;quot;$1&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid=$!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string=&amp;quot;Uninstalling&amp;nbsp;${Cyan}${2}${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progbar&amp;nbsp;&amp;quot;$pid&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait&amp;nbsp;&amp;quot;$pid&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progstatus&amp;nbsp;&amp;quot;$?&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;&amp;nbsp;&amp;quot;line&amp;nbsp;${LINENO}&amp;quot;
}

package_install(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;package&amp;nbsp;filename
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;package&amp;nbsp;display&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$3&amp;nbsp;is&amp;nbsp;/volume2&amp;nbsp;etc
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&amp;nbsp;&amp;quot;$trace&amp;quot;&amp;nbsp;==&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;echo&amp;nbsp;&amp;quot;${FUNCNAME[0]}&amp;nbsp;called&amp;nbsp;from&amp;nbsp;${FUNCNAME[1]}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#/usr/syno/bin/synopkg&amp;nbsp;install_from_server&amp;nbsp;&amp;quot;$1&amp;quot;&amp;nbsp;&amp;quot;$3&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synopkg&amp;nbsp;install&amp;nbsp;&amp;quot;/tmp/$1&amp;quot;&amp;nbsp;&amp;quot;$3&amp;quot;&amp;nbsp;&amp;gt;/dev/null&amp;nbsp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pid=$!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$3&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string=&amp;quot;Installing&amp;nbsp;${Cyan}${2}${Off}&amp;nbsp;on&amp;nbsp;${Cyan}$3${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string=&amp;quot;Installing&amp;nbsp;${Cyan}${2}${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progbar&amp;nbsp;&amp;quot;$pid&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wait&amp;nbsp;&amp;quot;$pid&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;progstatus&amp;nbsp;&amp;quot;$?&amp;quot;&amp;nbsp;&amp;quot;$string&amp;quot;&amp;nbsp;&amp;quot;line&amp;nbsp;${LINENO}&amp;quot;
}

download_pkg(){&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$1&amp;nbsp;is&amp;nbsp;the&amp;nbsp;package&amp;nbsp;folder&amp;nbsp;name
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$2&amp;nbsp;is&amp;nbsp;the&amp;nbsp;package&amp;nbsp;version&amp;nbsp;to&amp;nbsp;download
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;$3&amp;nbsp;is&amp;nbsp;the&amp;nbsp;package&amp;nbsp;file&amp;nbsp;to&amp;nbsp;download
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local&amp;nbsp;url
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;language=$(synogetkeyvalue&amp;nbsp;/etc/synoinfo.conf&amp;nbsp;language)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;$language&amp;nbsp;=~&amp;nbsp;chs|cht&amp;nbsp;]]&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;readlink&amp;nbsp;-q&amp;nbsp;/etc/localtime&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;-iq&amp;nbsp;china;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Use&amp;nbsp;China&amp;nbsp;only&amp;nbsp;download&amp;nbsp;site
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;base=&amp;quot;https://cndl.synology.cn/download/Package/spk/&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;base=&amp;quot;https://global.synologydownload.com/download/Package/spk/&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;base2&amp;nbsp;currently&amp;nbsp;unused
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;base2=&amp;quot;https://global.download.synology.com/download/Package/spk/&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;!&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/${3:?}&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url=&amp;quot;${base}${1:?}/${2:?}/${3:?}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\nDownloading&amp;nbsp;${Cyan}${3}${Off}&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;curl&amp;nbsp;-kL&amp;nbsp;--connect-timeout&amp;nbsp;30&amp;nbsp;&amp;quot;$url&amp;quot;&amp;nbsp;-o&amp;nbsp;&amp;quot;/tmp/$3&amp;quot;;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ding
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR&amp;nbsp;2${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;download&amp;nbsp;${3}!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[[&amp;nbsp;!&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/${3:?}&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ding
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;${Error}ERROR&amp;nbsp;3${Off}&amp;nbsp;Failed&amp;nbsp;to&amp;nbsp;download&amp;nbsp;${3}!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;3
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
}


#&amp;nbsp;Only&amp;nbsp;install&amp;nbsp;the&amp;nbsp;packages&amp;nbsp;the&amp;nbsp;user&amp;nbsp;wants
echo&amp;nbsp;&amp;quot;&amp;quot;
PS3=&amp;quot;Select&amp;nbsp;package(s)&amp;nbsp;to&amp;nbsp;install:&amp;nbsp;&amp;quot;
options=(&amp;quot;Install&amp;nbsp;All&amp;quot;&amp;nbsp;&amp;quot;Only&amp;nbsp;Advanced&amp;nbsp;Media&amp;nbsp;Codecs&amp;quot;&amp;nbsp;&amp;quot;Skip&amp;nbsp;Video&amp;nbsp;Station&amp;quot;&amp;nbsp;&amp;quot;Skip&amp;nbsp;Media&amp;nbsp;Server&amp;quot;)
TMOUT=5&amp;nbsp;&amp;nbsp;#&amp;nbsp;Timeout&amp;nbsp;and&amp;nbsp;install&amp;nbsp;all&amp;nbsp;if&amp;nbsp;no&amp;nbsp;choice&amp;nbsp;made&amp;nbsp;within&amp;nbsp;5&amp;nbsp;seconds&amp;nbsp;(for&amp;nbsp;task&amp;nbsp;scheduler)
select&amp;nbsp;choice&amp;nbsp;in&amp;nbsp;&amp;quot;${options[@]}&amp;quot;;&amp;nbsp;do
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&amp;quot;$choice&amp;quot;&amp;nbsp;in
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Install&amp;nbsp;All&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Skip&amp;nbsp;Video&amp;nbsp;Station&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_vs=&amp;quot;yes&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Skip&amp;nbsp;Media&amp;nbsp;Server&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_ms=&amp;quot;yes&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;Only&amp;nbsp;Advanced&amp;nbsp;Media&amp;nbsp;Codecs&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_vs=&amp;quot;yes&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_ms=&amp;quot;yes&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;Invalid&amp;nbsp;Choice!&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esac
done
unset&amp;nbsp;TMOUT
if&amp;nbsp;[[&amp;nbsp;-z&amp;nbsp;&amp;quot;$choice&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;No&amp;nbsp;selection&amp;nbsp;made.&amp;nbsp;Installing&amp;nbsp;all&amp;nbsp;packages.&amp;quot;
else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;You&amp;nbsp;selected:&amp;nbsp;${Cyan}$choice${Off}&amp;quot;
fi


#&amp;nbsp;Backup&amp;nbsp;synopackageslimit.conf&amp;nbsp;if&amp;nbsp;needed
if&amp;nbsp;[[&amp;nbsp;!&amp;nbsp;-f&amp;nbsp;/etc.defaults/synopackageslimit.conf.bak&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cp&amp;nbsp;-p&amp;nbsp;/etc.defaults/synopackageslimit.conf&amp;nbsp;/etc.defaults/synopackageslimit.conf.bak
fi

#&amp;nbsp;Make&amp;nbsp;DSM&amp;nbsp;let&amp;nbsp;us&amp;nbsp;install&amp;nbsp;the&amp;nbsp;packages&amp;nbsp;we&amp;nbsp;want
/usr/syno/bin/synosetkeyvalue&amp;nbsp;/etc.defaults/synopackageslimit.conf&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;3.1.0-3153&amp;quot;
/usr/syno/bin/synosetkeyvalue&amp;nbsp;/etc/synopackageslimit.conf&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;3.1.0-3153&amp;quot;

/usr/syno/bin/synosetkeyvalue&amp;nbsp;/etc.defaults/synopackageslimit.conf&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;3.1.0-3005&amp;quot;
/usr/syno/bin/synosetkeyvalue&amp;nbsp;/etc/synopackageslimit.conf&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;3.1.0-3005&amp;quot;

/usr/syno/bin/synosetkeyvalue&amp;nbsp;/etc.defaults/synopackageslimit.conf&amp;nbsp;MediaServer&amp;nbsp;&amp;quot;2.1.0-3304&amp;quot;
/usr/syno/bin/synosetkeyvalue&amp;nbsp;/etc/synopackageslimit.conf&amp;nbsp;MediaServer&amp;nbsp;&amp;quot;2.1.0-3304&amp;quot;

#&amp;nbsp;Get&amp;nbsp;installed&amp;nbsp;AME&amp;nbsp;version
ame_version=$(/usr/syno/bin/synopkg&amp;nbsp;version&amp;nbsp;CodecPack)
if&amp;nbsp;[[&amp;nbsp;${ame_version:0:1}&amp;nbsp;-gt&amp;nbsp;&amp;quot;3&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Uninstall&amp;nbsp;AME&amp;nbsp;v4
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_uninstall&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;quot;
fi

#&amp;nbsp;Get&amp;nbsp;installed&amp;nbsp;VideoStation&amp;nbsp;version
if&amp;nbsp;[[&amp;nbsp;$no_vs&amp;nbsp;!=&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vs_version=$(/usr/syno/bin/synopkg&amp;nbsp;version&amp;nbsp;VideoStation)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;check_pkg_installed&amp;nbsp;VideoStation&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;[[&amp;nbsp;${vs_version:0:2}&amp;nbsp;!=&amp;nbsp;&amp;quot;30&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Uninstall&amp;nbsp;VideoStation&amp;nbsp;(wrong&amp;nbsp;version)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_uninstall&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;Video&amp;nbsp;Station&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi

#&amp;nbsp;CodecPack&amp;nbsp;(Advanced&amp;nbsp;Media&amp;nbsp;Extensions)
if&amp;nbsp;!&amp;nbsp;check_pkg_installed&amp;nbsp;CodecPack&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;[[&amp;nbsp;$ame_version&amp;nbsp;!=&amp;nbsp;&amp;quot;30.1.0-3005&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;download_pkg&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;3.1.0-3005&amp;quot;&amp;nbsp;&amp;quot;CodecPack-${cputype}-3.1.0-3005.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_install&amp;nbsp;&amp;quot;CodecPack-${cputype}-3.1.0-3005.spk&amp;quot;&amp;nbsp;&amp;quot;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_stop&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Prevent&amp;nbsp;package&amp;nbsp;updating&amp;nbsp;and&amp;nbsp;&amp;quot;update&amp;nbsp;available&amp;quot;&amp;nbsp;messages
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;Preventing&amp;nbsp;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;nbsp;from&amp;nbsp;auto&amp;nbsp;updating&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synosetkeyvalue&amp;nbsp;/var/packages/CodecPack/INFO&amp;nbsp;version&amp;nbsp;&amp;quot;30.1.0-3005&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_start&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/CodecPack-${cputype}-3.1.0-3005.spk&amp;quot;
else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\n${Cyan}Advanced&amp;nbsp;Media&amp;nbsp;Extensions${Off}&amp;nbsp;already&amp;nbsp;installed&amp;quot;
fi

#&amp;nbsp;VideoStation
if&amp;nbsp;[[&amp;nbsp;$no_vs&amp;nbsp;!=&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;check_pkg_installed&amp;nbsp;VideoStation&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;[[&amp;nbsp;$vs_version&amp;nbsp;!=&amp;nbsp;&amp;quot;30.1.0-3153&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#download_pkg&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;3.1.1-3168&amp;quot;&amp;nbsp;&amp;quot;VideoStation-${cputype}-3.1.0-3168.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;download_pkg&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;3.1.0-3153&amp;quot;&amp;nbsp;&amp;quot;VideoStation-${cputype}-3.1.0-3153.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#package_install&amp;nbsp;&amp;quot;VideoStation-${cputype}-3.1.1-3168.spk&amp;quot;&amp;nbsp;&amp;quot;Video&amp;nbsp;Station&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_install&amp;nbsp;&amp;quot;VideoStation-${cputype}-3.1.0-3153.spk&amp;quot;&amp;nbsp;&amp;quot;Video&amp;nbsp;Station&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_stop&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;Video&amp;nbsp;Station&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Prevent&amp;nbsp;package&amp;nbsp;updating&amp;nbsp;and&amp;nbsp;&amp;quot;update&amp;nbsp;available&amp;quot;&amp;nbsp;messages
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;Preventing&amp;nbsp;Video&amp;nbsp;Station&amp;nbsp;from&amp;nbsp;auto&amp;nbsp;updating&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#/usr/syno/bin/synosetkeyvalue&amp;nbsp;/var/packages/VideoStation/INFO&amp;nbsp;version&amp;nbsp;&amp;quot;30.1.1-3168&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synosetkeyvalue&amp;nbsp;/var/packages/VideoStation/INFO&amp;nbsp;version&amp;nbsp;&amp;quot;30.1.0-3153&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_start&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;Video&amp;nbsp;Station&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#rm&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/VideoStation-${cputype}-3.1.0-3168.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/VideoStation-${cputype}-3.1.0-3153.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\n${Cyan}Video&amp;nbsp;Station${Off}&amp;nbsp;already&amp;nbsp;installed&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi

#&amp;nbsp;MediaServer
if&amp;nbsp;[[&amp;nbsp;$no_ms&amp;nbsp;!=&amp;nbsp;&amp;quot;yes&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;check_pkg_installed&amp;nbsp;MediaServer&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;[[&amp;nbsp;$ame_version&amp;nbsp;!=&amp;nbsp;&amp;quot;20.1.0-3304&amp;quot;&amp;nbsp;]];&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;download_pkg&amp;nbsp;MediaServer&amp;nbsp;&amp;quot;2.1.0-3304&amp;quot;&amp;nbsp;&amp;quot;MediaServer-${cputype}-2.1.0-3304.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_install&amp;nbsp;&amp;quot;MediaServer-${cputype}-2.1.0-3304.spk&amp;quot;&amp;nbsp;&amp;quot;Media&amp;nbsp;Server&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_stop&amp;nbsp;MediaServer&amp;nbsp;&amp;quot;Media&amp;nbsp;Server&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;Prevent&amp;nbsp;package&amp;nbsp;updating&amp;nbsp;and&amp;nbsp;&amp;quot;update&amp;nbsp;available&amp;quot;&amp;nbsp;messages
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;Preventing&amp;nbsp;Media&amp;nbsp;Server&amp;nbsp;from&amp;nbsp;auto&amp;nbsp;updating&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/usr/syno/bin/synosetkeyvalue&amp;nbsp;/var/packages/MediaServer/INFO&amp;nbsp;version&amp;nbsp;&amp;quot;20.1.0-3304&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_start&amp;nbsp;MediaServer&amp;nbsp;&amp;quot;Media&amp;nbsp;Server&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rm&amp;nbsp;-f&amp;nbsp;&amp;quot;/tmp/MediaServer-${cputype}-2.1.0-3304.spk&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\n${Cyan}Media&amp;nbsp;Server${Off}&amp;nbsp;already&amp;nbsp;installed&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi

#&amp;nbsp;Start&amp;nbsp;packages&amp;nbsp;if&amp;nbsp;needed&amp;nbsp;(i.e.&amp;nbsp;after&amp;nbsp;DSM&amp;nbsp;update)
if&amp;nbsp;check_pkg_installed&amp;nbsp;CodecPack;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;package_is_running&amp;nbsp;CodecPack;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_start&amp;nbsp;CodecPack&amp;nbsp;&amp;quot;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi
if&amp;nbsp;check_pkg_installed&amp;nbsp;VideoStation;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;package_is_running&amp;nbsp;VideoStation;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_start&amp;nbsp;VideoStation&amp;nbsp;&amp;quot;Video&amp;nbsp;Station&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi
if&amp;nbsp;check_pkg_installed&amp;nbsp;MediaServer;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;!&amp;nbsp;package_is_running&amp;nbsp;MediaServer;&amp;nbsp;then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;package_start&amp;nbsp;MediaServer&amp;nbsp;&amp;quot;Media&amp;nbsp;Server&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi
fi

echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\nFinished&amp;nbsp;:)&amp;quot;

echo&amp;nbsp;-e&amp;nbsp;&amp;quot;\nTo&amp;nbsp;enable&amp;nbsp;HEVC&amp;nbsp;decoding:&amp;quot;
echo&amp;nbsp;&amp;quot;&amp;nbsp;1.&amp;nbsp;Open&amp;nbsp;Package&amp;nbsp;Center&amp;nbsp;&amp;gt;&amp;nbsp;Installed&amp;quot;
echo&amp;nbsp;&amp;quot;&amp;nbsp;2.&amp;nbsp;Click&amp;nbsp;Advanced&amp;nbsp;Media&amp;nbsp;Extensions&amp;quot;
echo&amp;nbsp;&amp;quot;&amp;nbsp;3.&amp;nbsp;Click&amp;nbsp;on&amp;nbsp;Open&amp;quot;
echo&amp;nbsp;-e&amp;nbsp;&amp;quot;&amp;nbsp;4.&amp;nbsp;Click&amp;nbsp;on&amp;nbsp;Install&amp;nbsp;then&amp;nbsp;OK&amp;nbsp;\n&amp;quot;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;color:#414b55;font-family:Verdana, Arial, Microsoft YaHei, sans-serif&quot;&gt;&lt;span style=&quot;font-size: 13px; font-variant-ligatures: none; background-color: #FFFFFF;&quot;&gt;&lt;/span&gt;&lt;/span&gt;如下为当前系统版本&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2024/12/202412121733974372127620.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如下为开启SSH访问。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2024/12/202412121733974418625802.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;如下为群辉7.2.2版本已完成videso Station安装。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2024/12/202412121733974491681522.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Thu, 12 Dec 2024 11:25:28 +0800</pubDate></item><item><title>Citrix视频课程在线学习推荐</title><link>https://www.powershell.com.cn/?id=164</link><description>&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;🚀 &lt;a href=&quot;https://edu.51cto.com/course/32057.html&quot; target=&quot;_self&quot;&gt;全新 Citrix Virtual Apps and Desktops 2203CU1 课程上线啦！&lt;/a&gt; 🚀&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;&lt;img class=&quot;ue-image&quot; src=&quot;https://www.powershell.com.cn/zb_users/upload/2024/08/202408281724825758303278.jpg&quot; alt=&quot;WechatIMG736.jpg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;🎯 课程亮点：&lt;/span&gt;&lt;br/&gt;&lt;/h3&gt;&lt;p&gt;专为Citrix项目实施人员设计：深入探讨Citrix架构规划的关键注意事项，确保项目实施的成功。&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;比1912CU3更全面的内容：相较于之前版本，本课程提供了更全面的Citrix架构设计概述及介绍。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;资源共享：课程包含最新的稳定版安装包和镜像包，镜像包定期更新，并提供Citrix桌面及ADC试用许可的申请与反馈途径。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;长期更新：未来内容将扩展到运维管理和故障处理分析等实际案例，帮助您更好地应对挑战。&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;🔍 课程特点：&lt;/span&gt;&lt;br/&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;简化的高可用架构图：使您快速理解和实施高可用规划。&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;纯净实用环境：专注于Citrix标准环境，适合各种基础需求。高级管控可根据实际情况自行调整。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;📥 下载资源：镜像包及安装包已上传至百度网盘，随时可供下载。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: nowrap;&quot;&gt;🌟 不容错过的实用课程！点击链接了解更多并报名吧！ &lt;a href=&quot;https://edu.51cto.com/course/32057.html&quot; target=&quot;_self&quot;&gt;[51CTO课程链接]&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 28 Aug 2024 14:05:21 +0800</pubDate></item><item><title>SSH连接慢优化方法</title><link>https://www.powershell.com.cn/?id=162</link><description>&lt;h2&gt;1 导致ssh连接Centos系统慢的原因比较多&lt;/h2&gt;&lt;ol class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;p&gt;DNS反向解析影响：原因：SSH 服务器尝试对连接客户端的 IP 地址进行反向 DNS 解析，导致连接延迟&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;GSSAPI 身份验证影响：原因：GSSAPI 认证（通常用于 Kerberos 认证）可能导致延迟。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;SSH客户端配置问题：客户端可能尝试使用 GSSAPI 认证或 DNS 反向解析。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;检查服务器/etc/hosts解析文件内容是否正确，可尝试将环回地址解析到当前系统主机名，例如127.0.0.1&amp;nbsp; hostname&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;客户端带宽不足，服务器CPU负载过高：使用top及free命令检查系统资源使用情况。&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;2 通过修改服务器 vi /etc/ssh/sshd_config&amp;nbsp; &amp;nbsp;禁用两个参数即可。（&lt;span style=&quot;color: #FF0000;&quot;&gt;一般配置前两项即可解决问题，若连接还是较慢，可以尝试后面方法&lt;/span&gt;）&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#修改&amp;nbsp;UseDNS&amp;nbsp;yes&amp;nbsp;值&amp;nbsp;no
UseDNS&amp;nbsp;no

#修改GSSAPIAuthentication&amp;nbsp;yes&amp;nbsp;值&amp;nbsp;no
GSSAPIAuthentication&amp;nbsp;no

#重启ssh服务
systemctl&amp;nbsp;restart&amp;nbsp;sshd&lt;/pre&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://www.powershell.com.cn/zb_users/upload/2024/07/202407111720713268323102.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;h3&gt;3 客户端配置问题：编辑客户端的 ~/.ssh/config 文件（如果没有该文件，请创建它），添加以下内容：&lt;/h3&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;Host&amp;nbsp;*
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GSSAPIAuthentication&amp;nbsp;no
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UseDNS&amp;nbsp;no&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 11 Jul 2024 23:46:33 +0800</pubDate></item></channel></rss>