Compare commits

4 Commits
2.0 ... main

Author SHA1 Message Date
zj
680f3877fb fix 2026-01-22 19:27:21 +08:00
zj
6d54095204 fix ukdm 2026-01-22 18:54:15 +08:00
zj
cbab0d05a9 update 2026-01-02 20:23:12 +08:00
zj
ff97ea9dc7 update 2026-01-02 03:54:30 +08:00
11 changed files with 398 additions and 597 deletions

View File

@@ -1,18 +1,18 @@
# Maintainer: zj <1052308357@qq.com> # Maintainer: zj <1052308357@qq.com>
pkgname=tms-bbt-config pkgname=tms-bbt-config
pkgver=2.0 pkgver=$(date +%Y.%m)
pkgrel=17 pkgrel=$(date +%d)
pkgdesc="SmartTMS application conifg." pkgdesc="SmartTMS application conifg."
arch=('x86_64') arch=('x86_64')
url="https://your.company.com/smarttms" url="https://yuyujing.cn/smarttms"
license=('Proprietary') license=('Proprietary')
# depends=('tms-bbt') # depends=('tms-bbt')
source=("${pkgname}.tar.gz") source=("${pkgname}.tar.gz")
sha256sums=('6779de1a8e92b8599b8b77457f44e75008315e0fa18df0e6a6490e40f8bd7354') sha256sums=('SKIP')
install="${pkgname}.install" install="${pkgname}.install"
@@ -53,9 +53,13 @@ package() {
install -m755 hostname "${pkgdir}/usr/bin/hostname" install -m755 hostname "${pkgdir}/usr/bin/hostname"
install -m755 smart-organizer-service-install.sh "${pkgdir}/home/smart/smart-organizer-service-install.sh" install -m755 smart-organizer-service-install.sh "${pkgdir}/home/smart/smart-organizer-service-install.sh"
install -m644 tms-tools.desktop "${pkgdir}/usr/share/applications/tms-tools.desktop" install -m644 tms-tools.desktop "${pkgdir}/usr/share/applications/tms-tools.desktop"
install -m755 unzipKDM.png "${pkgdir}/home/smart/unzipKDM.png" install -m755 unzipKDM.png "${pkgdir}${_starter_dir}/unzipKDM.png"
install -m755 unzipKDMs.sh "${pkgdir}/home/smart/unzipKDMs.sh" install -m755 unzipKDMs.sh "${pkgdir}${_starter_dir}/unzipKDMs.sh"
install -m644 uzipkdm.desktop "${pkgdir}/usr/share/applications/uzipkdm.desktop" install -m644 uzipkdm.desktop "${pkgdir}/usr/share/applications/uzipkdm.desktop"
install -m644 tms.desktop "${pkgdir}/usr/share/applications/tms.desktop" install -m644 tms.desktop "${pkgdir}/usr/share/applications/tms.desktop"
install -m755 usb_disk_fix_script.sh "${pkgdir}${_starter_dir}/usb_disk_fix_script.sh"
install -m755 manual_usb_check.sh "${pkgdir}${_starter_dir}/manual_usb_check.sh"
install -m644 usb-disk-repair.desktop "${pkgdir}/usr/share/applications/usb-disk-repair.desktop"
} }

11
build-tms-bbt-config.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
rm -rf pkg src tms-bbt-config.tar.gz tms-bbt-config*.pkg.tar.zst
tar -czvf tms-bbt-config.tar.gz tms-bbt-config
makepkg -s
#echo "use makepkg -s"
#mv tms-calamares-config*.pkg.tar.zst /home/smart/tms/custompkgs/x86_64/

View File

@@ -32,39 +32,109 @@ post_install() {
cp -f '/usr/share/applications/com.teamviewer.TeamViewer.desktop' /home/smart/Desktop cp -f '/usr/share/applications/com.teamviewer.TeamViewer.desktop' /home/smart/Desktop
cp -f '/usr/share/applications/todesk.desktop' /home/smart/Desktop cp -f '/usr/share/applications/todesk.desktop' /home/smart/Desktop
cp -f '/usr/share/applications/uzipkdm.desktop' /home/smart/Desktop cp -f '/usr/share/applications/uzipkdm.desktop' /home/smart/Desktop
cp -f '/usr/share/applications/tms.desktop' /home/smart/Desktop cp -f '/usr/share/applications/usb-disk-repair.desktop' /home/smart/Desktop
ln -s /media/kdm /home/smart/Desktop/密钥 ln -s /media/kdm /home/smart/Desktop/密钥
ln -s /media/cinema /home/smart/Desktop/片库 ln -s /media/cinema /home/smart/Desktop/片库
chown smart:smart /home/smart/Desktop/* chown smart:smart /home/smart/Desktop/*
if [ -f "/usr/bin/ffmpeg.bin" ]; then FILE_ffmpeg="/usr/bin/ffmpeg"
rm -f "/home/smart/ffmpeg" FILE_HOME_ffmpeg="/home/smart/ffmpeg"
SHOULD_EXECUTE_FIX_BLOCK=false # 默认不执行修复
# 检查 ffmpeg 文件是否存在
if [ ! -f "$FILE_ffmpeg" ]; then
echo "警告: $FILE_ffmpeg 不存在,取消 ffmpeg 修复。"
# SHOULD_EXECUTE_FIX_BLOCK 保持为 false
elif [ ! -f "$FILE_HOME_ffmpeg" ]; then
echo "警告: $FILE_HOME_ffmpeg 不存在,取消 ffmpeg 修复。"
# SHOULD_EXECUTE_FIX_BLOCK 保持为 false
else else
if [ -f "/usr/bin/ffmpeg" ] && [ -f "/home/smart/ffmpeg" ]; then # 两个 ffmpeg 文件都存在,进行 SHA256 校验
echo "fix ffmpeg" echo "两个 ffmpeg 文件都存在,正在计算 SHA256 校验和..."
mv "/usr/bin/ffmpeg" "/usr/bin/ffmpeg.bin"
mv "/home/smart/ffmpeg" "/usr/bin/ffmpeg" HASH_USR=$(sha256sum "$FILE_ffmpeg" | awk '{print $1}')
chmod 755 "/usr/bin/ffmpeg" HASH_HOME=$(sha256sum "$FILE_HOME_ffmpeg" | awk '{print $1}')
else
rm -f "/home/smart/ffmpeg" echo "$FILE_ffmpeg 的 SHA256: $HASH_USR"
echo "no ffmpeg" echo "$FILE_HOME_ffmpeg 的 SHA256: $HASH_HOME"
fi
if [ "$HASH_USR" != "$HASH_HOME" ]; then
echo "两个 ffmpeg 文件内容不一致 (SHA256 不匹配),将执行修复逻辑。"
SHOULD_EXECUTE_FIX_BLOCK=true # 设置为 true表示需要修复
else
echo "两个 ffmpeg 文件内容一致 (SHA256 匹配),无需操作。"
# SHOULD_EXECUTE_FIX_BLOCK 保持为 false
fi
fi fi
if [ -f "dcpomatic2_create_original" ]; then # 根据 SHOULD_EXECUTE_FIX_BLOCK 的值决定是否执行 ffmpeg 修复
rm -f "/home/smart/dcpomatic2_create" if [ "$SHOULD_EXECUTE_FIX_BLOCK" = true ]; then
echo "--- 开始执行 ffmpeg 修复逻辑 ---"
if [ -f "$FILE_ffmpeg.bin" ]; then # 使用变量 $FILE_ffmpeg.bin
echo "警告: $FILE_ffmpeg.bin 已存在,备份为 ${FILE_ffmpeg}.bin.b。"
mv "$FILE_ffmpeg.bin" "${FILE_ffmpeg}.bin.b"
fi
echo "fix ffmpeg: 备份原文件并替换。"
mv "$FILE_ffmpeg" "$FILE_ffmpeg.bin"
mv "$FILE_HOME_ffmpeg" "$FILE_ffmpeg"
chmod 755 "$FILE_ffmpeg"
echo "--- ffmpeg 修复逻辑执行完毕 ---"
else else
if [ -f "/usr/bin/dcpomatic2_create" ] && [ -f "/home/smart/dcpomatic2_create" ]; then # 如果不执行修复(文件缺失或内容一致),则清理 /home/smart/ffmpeg
echo "fix dcpomatic2_create" echo "ffmpeg 修复未执行(原因:文件缺失或内容一致),清理 $FILE_HOME_ffmpeg (如果存在)。"
mv "/usr/bin/dcpomatic2_create" "/usr/bin/dcpomatic2_create_original" rm -f "$FILE_HOME_ffmpeg"
mv "/home/smart/dcpomatic2_create" "/usr/bin/dcpomatic2_create" fi
chmod 755 "/usr/bin/dcpomatic2_create"
else
rm -f "/home/smart/dcpomatic2_create" FILE_USR="/usr/bin/dcpomatic2_create"
echo "no dcpomatic2_create" FILE_HOME="/home/smart/dcpomatic2_create"
fi FILE_USR_ORIGINAL="/usr/bin/dcpomatic2_create_original" # 定义原始文件备份路径变量
SHOULD_EXECUTE_FIX_BLOCK_DCP=false # 为 dcpomatic2_create 使用独立的变量
# 检查 dcpomatic2_create 文件是否存在
if [ ! -f "$FILE_USR" ]; then
echo "警告: $FILE_USR 不存在,取消 dcpomatic2_create 修复。"
# SHOULD_EXECUTE_FIX_BLOCK_DCP 保持为 false
elif [ ! -f "$FILE_HOME" ]; then
echo "警告: $FILE_HOME 不存在,取消 dcpomatic2_create 修复。"
# SHOULD_EXECUTE_FIX_BLOCK_DCP 保持为 false
else
# 两个 dcpomatic2_create 文件都存在,进行 SHA256 校验
echo "两个 dcpomatic2_create 文件都存在,正在计算 SHA256 校验和..."
HASH_USR=$(sha256sum "$FILE_USR" | awk '{print $1}')
HASH_HOME=$(sha256sum "$FILE_HOME" | awk '{print $1}')
echo "$FILE_USR 的 SHA256: $HASH_USR"
echo "$FILE_HOME 的 SHA256: $HASH_HOME"
if [ "$HASH_USR" != "$HASH_HOME" ]; then
echo "两个 dcpomatic2_create 文件内容不一致 (SHA256 不匹配),将执行修复逻辑。"
SHOULD_EXECUTE_FIX_BLOCK_DCP=true # 设置为 true表示需要修复
else
echo "两个 dcpomatic2_create 文件内容一致 (SHA256 匹配),无需操作。"
# SHOULD_EXECUTE_FIX_BLOCK_DCP 保持为 false
fi
fi
# 根据 SHOULD_EXECUTE_FIX_BLOCK_DCP 的值决定是否执行 dcpomatic2_create 修复
if [ "$SHOULD_EXECUTE_FIX_BLOCK_DCP" = true ]; then
echo "--- 开始执行 dcpomatic2_create 修复逻辑 ---"
if [ -f "$FILE_USR_ORIGINAL" ]; then
echo "警告: $FILE_USR_ORIGINAL 已存在,备份为 ${FILE_USR_ORIGINAL}_b。"
mv "$FILE_USR_ORIGINAL" "${FILE_USR_ORIGINAL}_b"
fi
echo "fix dcpomatic2_create: 备份原文件并替换。"
mv "$FILE_USR" "$FILE_USR_ORIGINAL"
mv "$FILE_HOME" "$FILE_USR"
chmod 755 "$FILE_USR"
echo "--- dcpomatic2_create 修复逻辑执行完毕 ---"
else
# 如果不执行修复(文件缺失或内容一致),则清理 /home/smart/dcpomatic2_create
echo "dcpomatic2_create 修复未执行(原因:文件缺失或内容一致),清理 $FILE_HOME (如果存在)。"
rm -f "$FILE_HOME"
fi fi

Binary file not shown.

View File

@@ -1,514 +0,0 @@
#!/bin/bash
#定义颜色变量
RED='\E[1;31m' # 红
GREEN='\E[1;32m' # 绿
YELOW='\E[1;33m' # 黄
BLUE='\E[1;34m' # 蓝
PINK='\E[1;35m' # 粉红
SHANGREEN='\E[32;5m' #绿色闪烁警示
SHANBLUE='\E[34;5m' #蓝闪烁警示
RES='\E[0m' # 清除颜色
# 设置一个 trap 在脚本结束时删除文件
trap "rm -f $SCRIPT_NAME" EXIT
has_root() {
if [[ $EUID -ne 0 ]]; then
echo "权限需要提升:该安装程序必须由root执行" 1>&2
exit 1
fi
}
has_root
# 倒计时函数
countdown() {
echo "完成..."
echo "脚本执行完毕,返回主菜单倒计时"
for i in {3..1}; do
echo "$i s..."
sleep 1
done
}
# 安装 TMS
download_tms() {
echo "下载 TMS 安装包并解压..."
cd /home/smart
ziptest=`zip -T install8.5-1022 | grep OK`
if [ -n "$ziptest" ]; then
echo "安装包已存在,且完整"
rm -rf /home/smart/install8.5
else
echo "安装包不存在或不完整,重新下载"
rm -rf /home/smart/install8.5*
wget -Nq --show-progress https://bbt-static-a.oss-cn-beijing.aliyuncs.com/smart/environment/install8.5-1022.zip
fi
echo -e "${GREEN}解压TMS安装包${RES}"
unzip -o install8.5-1022
if [ $? -ne 0 ]; then
echo -e "${RED}解压失败,请重新运行脚本${RES}"
exit 1
fi
echo -e "${GREEN}完成${RES}"
# 具体命令
}
install_mysql() {
echo "安装 MySQL..."
download_tms
cd /home/smart/install8.5/
#数据库安装
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql -s /sbin/nologin mysql
mkdir -p /data/mysql
chown mysql:mysql /data/mysql
tar xf /home/smart/install8.5/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
sleep 5
ln -sv /usr/local/mysql-5.6.47-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R root:root /usr/local/mysql/
cp -b -f /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cp -b -f /home/smart/install8.5/my.cnf /etc/my.cnf
#创建数据库文件
sudo kill -9 $(ps -ef | grep mysql | awk '{print $2}')
sleep 5
cd /usr/local/mysql/
sleep 2
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
#准备服务脚本,并启动服务
# sleep 5
# cp -b -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#启动服务
systemctl daemon-reload
systemctl restart mysqld
#让服务实现开机自动启动
systemctl enable mysqld
#将其他相关程序加入到PATH变量中
echo 'PATH=/usr/local/mysql/bin:$PATH'>> /etc/profile.d/mysql.sh
#source生效
sh /etc/profile.d/mysql.sh
sleep 3
source ~/.bashrc
sleep 10
sh /home/smart/install8.5/mysql.sh
sleep 5
mysqladmin -uroot password PythA90ra5
#导入空的数据库
cat /home/smart/install8.5/tms_db_s3.sql |mysql -u root -pPythA90ra5
countdown
}
install_tomcat() {
echo "安装 apache-tomcat..."
download_tms
cd /home/smart/install8.5/
#安装apache-tomcat
mkdir /home/smart/.tms3
cp -r /home/smart/install8.5/apache-tomcat-7.0.63 /home/smart/.tms3/
chmod -R 777 /home/smart/.tms3/apache-tomcat-7.0.63
cp -r /home/smart/install8.5/starter /home/smart/.tms3/
rpm -ivh /home/smart/install8.5/ntfs-3g-libs-2022.10.3-1.el8.x86_64.rpm
rpm -ivh /home/smart/install8.5/ntfs-3g-2022.10.3-1.el8.x86_64.rpm
cp -b -f /home/smart/install8.5/smarttms /bin/smarttms
chmod 755 /bin/smarttms
# echo "setsid /home/smart/.tms3/apache-tomcat-7.0.63/bin/startup.sh">>/etc/rc.local
#启动服务
systemctl daemon-reload
systemctl restart smarttms
#让服务实现开机自动启动
systemctl enable smarttms
countdown
}
# 卸载删除 MySQL
uninstall_mysql() {
echo "卸载删除 MySQL..."
service mysqld stop
pkill -9 mysql*
rm -rf /data/mysql
rm -rf /usr/local/mysql*
rm -rf /etc/my.cnf
countdown
}
# 卸载删除 TMS
uninstall_tms() {
echo "卸载删除 TMS..."
smarttms stop
pkill -9 java
rm -rf /home/smart/.tms3
rm -rf /home/smart/Desktop/restart.desktop
rm -rf /home/smart/Desktop/TMS软件重新启动.desktop
# rm -rf /home/smart/Desktop/片库
# rm -rf /home/smart/Desktop/密钥
systemctl daemon-reload
countdown
}
install_tms() {
while true; do
echo "选择 TMS 安装选项:"
echo "1. 下载 TMS 安装包并解压"
echo "2. 安装 mysql"
echo "3. 安装 tomcat"
echo "99. 返回主菜单"
read -p "请输入选项 (1-3): " tms_choice
case $tms_choice in
1)
download_tms
;;
2)
install_mysql
;;
3)
install_tomcat
;;
99)
return
;;
*)
echo "无效的选项。"
;;
esac
done
}
# 修复 TMS 自带 DCP
repair_tms_dcp() {
echo "修复 TMS 自带 DCP..."
echo "未修复"
# cd /home/smart
# if [ -a /bin/dcpomatic2_create_original ];then
# echo "已修复"
# else
# wget -Nq --show-progress http://yuyujing.cn/data/sh/tms_dcpConversion_rep.zip
# unzip -o tms_dcpConversion_rep.zip
# cd tms_dcpConversion_rep/
# sh tms_dcpConversion_rep.sh
# fi
# cd /home/smart
# rm -rf tms_dcpConversion_rep*
countdown
}
# 完整导入所有 Firefox 配置
import_all_firefox9() {
echo "完整导入所有配置..."
cd /home/smart
firefoxBakzip="firefox.default-release-centos9.zip"
firefoxBak="firefox.default-release"
echo -e "${GREEN}firefox默认及优化配置导入${RES}" | tee -a /home/smart/.tmsInstallLogs.log
wget -Nq --show-progress http://yuyujing.cn/data/sh/${firefoxBakzip} | tee -a /home/smart/.tmsInstallLogs.log
unzip -o ${firefoxBakzip} >> /home/smart/.tmsInstallLogs.log 2>&1
su smart -c 'firefox & disown' >> /home/smart/.tmsInstallLogs.log 2>&1
echo "检查firefox配置目录-等待90s生成firefox配置"
for i in {90..1}; do
firefoxname=`find /home/smart/.mozilla/firefox/ -name "*.default-default" 2> /home/smart/.tmsInstallLogs.log`
if [ -n "$firefoxname" ];then
if pgrep -x "firefox" > /dev/null; then
# echo "Firefox is running. Killing the process..."
# 杀死所有 Firefox 进程
pkill -x "firefox"
# echo "Firefox process terminated."
fi
zip -r /home/smart/firefoxSettingsBackup.default-release.zip "$firefoxname" >> /home/smart/.tmsInstallLogs.log 2>&1
cd ${firefoxBak}/
/bin/cp -rf ./* "$firefoxname"
chown -R smart:smart "$firefoxname"
sleep 5
su smart -c 'firefox & disown' >> /home/smart/.tmsInstallLogs.log 2>&1
echo "完成"
break
fi
sleep 1
if [ $i -eq 1 ];then
echo "firefox配置目录不存在..."
break
fi
echo -n '.'
done
cd /home/smart
rm -rf ${firefoxBak}*
}
# 导入 prefs.js
import_prefs_js9() {
echo "导入 prefs.js..."
cd /home/smart
firefoxBakzip="firefox.default-release-centos9.zip"
firefoxBak="firefox.default-release"
echo -e "${GREEN}firefox默认及优化配置导入${RES}" | tee -a /home/smart/.tmsInstallLogs.log
wget -Nq --show-progress http://yuyujing.cn/data/sh/${firefoxBakzip} | tee -a /home/smart/.tmsInstallLogs.log
unzip -o ${firefoxBakzip} >> /home/smart/.tmsInstallLogs.log 2>&1
su smart -c 'firefox & disown' >> /home/smart/.tmsInstallLogs.log 2>&1
echo "检查firefox配置目录-等待90s生成firefox配置"
for i in {90..1}; do
firefoxname=`find /home/smart/.mozilla/firefox/ -name "*.default-default" 2> /home/smart/.tmsInstallLogs.log`
if [ -n "$firefoxname" ];then
if pgrep -x "firefox" > /dev/null; then
# echo "Firefox is running. Killing the process..."
# 杀死所有 Firefox 进程
pkill -x "firefox"
# echo "Firefox process terminated."
fi
zip -r /home/smart/firefoxSettingsBackup.default-release.zip "$firefoxname" >> /home/smart/.tmsInstallLogs.log 2>&1
cd ${firefoxBak}/
/bin/cp -rf ./prefs.js "$firefoxname"
chown -R smart:smart "$firefoxname"
sleep 5
su smart -c 'firefox & disown' >> /home/smart/.tmsInstallLogs.log 2>&1
echo "完成"
break
fi
sleep 1
if [ $i -eq 1 ];then
echo "firefox配置目录不存在..."
break
fi
echo -n '.'
done
cd /home/smart
rm -rf ${firefoxBak}*
}
# Firefox 优化配置导入
firefox_import9() {
while true; do
echo "选择 Firefox 优化配置导入:"
echo "1. 完整导入所有(书签,配置等)"
echo "2. 导入 prefs.js首选项"
echo "3. 返回主菜单"
read -p "请输入选项 (1-3): " firefox_choice
case $firefox_choice in
1)
import_all_firefox9
countdown
;;
2)
import_prefs_js9
countdown
;;
3)
return
;;
*)
echo "无效的选项。"
;;
esac
done
}
# TMS 数据恢复
tms_data_recovery() {
echo "TMS 数据恢复..."
cd /home/smart
wget -N http://yuyujing.cn/data/sh/tmsRCData.sh && sh tmsRCData.sh
countdown
}
# 数据库快捷操作
database_shortcuts() {
echo "数据库快捷操作..."
cd /home/smart
wget -N http://yuyujing.cn/data/sh/tms_tools.sh && sh tms_tools.sh
countdown
}
# 安装 pure-ftp
install_pure_ftp() {
echo "安装 pure-ftp..."
cd /home/smart
wget -N yuyujing.cn/data/sh/pureftp/pureftp-install.sh && sh pureftp-install.sh
countdown
}
# CentOS8-Wine 安装
centos8_wine_install() {
echo "CentOS8-Wine 安装..."
cd /home/smart
# wget -Nq --show-progress http://yuyujing.cn/data/sh/wine-cenos8-offline.zip
# unzip -o wine-cenos8-offline.zip
# #sh install-wine-i686-centos8-rep.sh
# echo "自行运行安装脚本 install-wine-i686-centos8-rep.sh"
# cd /home/smart
# wget -Nq --show-progress http://yuyujing.cn/data/soft/DCC/DCCs2.exe
# /bin/cp -f DCCs2.exe /home/smart/桌面
# chown -R smart:smart /home/smart/桌面/DCCs2.exe
# 具体命令
wget -N yuyujing.cn/data/sh/wine-wow64.sh && sh wine-wow64.sh
countdown
}
# 清理系统空间
clean_system_space() {
echo "清理系统空间..."
cd /home/smart
wget -Nq http://yuyujing.cn/data/sh/clear/clear.sh && sh clear.sh
rm -rf /home/smart/clear.sh
countdown
}
# 交换分区占用程序查询
swap_usage_query() {
echo "交换分区占用程序查询..."
cd /home/smart
wget -Nq http://yuyujing.cn/data/sh/swaplist.sh && sh swaplist.sh
# 具体命令
countdown
}
# 网络聚合快速引导
fast_create_bond0() {
echo "网络聚合快速引导(不要聚合外网接口)..."
cd /home/smart
wget -N yuyujing.cn/data/sh/centos8-bond0-fastcreate.sh && sh centos8-bond0-fastcreate.sh
# 具体命令
countdown
}
# 打开vnc远程桌面
centos8_vnc() {
echo "打开vnc远程桌面..."
countdown
}
# 凤凰佳影 http://IP:29957/TService.asmx
find_url_fhxj() {
echo "搜索凤凰佳影 http://IP:29957/TService.asmx..."
wget -N yuyujing.cn/data/sh/url_scan_bbttms.sh && sh url_scan_bbttms.sh -p 29957 -u /TService.asmx
countdown
}
# 辰星 http://172.17.17.2:10468/cms-mvs/services/mvsService/GetSchedulesForTMS?pCinemaCode=32036811&pPlanDate=2019-05-06
find_url_cx() {
echo "搜索辰星 ..."
wget -N yuyujing.cn/data/sh/url_scan_bbttms.sh && sh url_scan_bbttms.sh -p 10468 -u /cms-mvs/services/mvsService
countdown
}
# 搜索局域网服务
find_url() {
while true; do
echo "url:"
echo "1. 搜索凤凰佳影"
echo "2. 搜索辰星"
echo "3. 返回主菜单"
read -p "请输入选项 (1-3): " url_choice
case $url_choice in
1)
find_url_fhxj
;;
2)
find_url_cx
;;
3)
return
;;
*)
echo "无效的选项。"
;;
esac
done
}
# 总菜单 -----------------------------------------------------------------------------
clear
# 定义菜单
show_menu() {
echo "请选择操作:"
echo "1. 安装 TMS"
echo "2. 卸载删除 MySQL"
echo "3. 卸载删除 TMS"
echo "4. 修复 TMS 自带 DCP"
echo "5. Firefox 优化配置导入"
echo "6. 数据库快捷操作"
echo "7. pure-ftp 安装"
echo "8. 清理系统空间"
echo "9. 交换分区占用程序查询"
echo "11. 网络聚合快速引导"
echo "12. 打开VNC远程桌面"
echo "13. 搜索局域网售票系统主机地址(凤凰嘉影,辰星)"
echo "99. 退出"
}
# 主程序逻辑
while true; do
show_menu
read -p "请输入选项 (1-99): " choice
case $choice in
1) install_tms ;;
2) uninstall_mysql ;;
3) uninstall_tms ;;
4) repair_tms_dcp ;;
5) firefox_import9 ;;
6) database_shortcuts ;;
7) install_pure_ftp ;;
8) clean_system_space ;;
9) swap_usage_query ;;
10) tms_data_recovery ;;
11) fast_create_bond0 ;;
12) centos8_vnc ;;
13) find_url ;;
99)
echo "退出程序。"
exit 0
;;
*)
echo "无效的选项,请重新选择。"
;;
esac
done

View File

@@ -0,0 +1,76 @@
#!/bin/bash
# 定义你的修复脚本路径
FIX_SCRIPT="/home/smart/.tms3/starter/usb_disk_fix_script.sh"
LOG_FILE="/var/log/usb_disk_fix.log" # 这个日志文件路径和修复脚本中的一致
echo "----------------------------------------------------"
echo "$(date): Manual USB disk check started."
echo "----------------------------------------------------"
# 检查修复脚本是否存在
if [ ! -x "$FIX_SCRIPT" ]; then
echo "错误:修复脚本 '$FIX_SCRIPT' 不存在或没有执行权限。"
echo "请确保脚本已正确放置并设置了可执行权限。"
exit 1
fi
# 查找所有 USB 分区
USB_PARTITIONS_TO_CHECK=""
# 1. 首先,识别所有传输类型为 'usb' 的磁盘 (例如 /dev/sdc)
# -o NAME,TYPE,TRAN -p -n: 输出设备名、类型、传输协议,完整路径,不显示标题
# awk '$2 == "disk" && $3 == "usb" {print $1}': 过滤出类型为 'disk' 且传输协议为 'usb' 的设备名
USB_DISK_NAMES=$(lsblk -o NAME,TYPE,TRAN -p -n | awk '$2 == "disk" && $3 == "usb" {print $1}')
if [ -z "$USB_DISK_NAMES" ]; then
echo "$(date): 未发现任何 USB 磁盘。"
else
echo "$(date): 发现以下 USB 磁盘: $USB_DISK_NAMES"
for disk_name in $USB_DISK_NAMES; do
# 2. 对于每个 USB 磁盘,找到它下面的所有分区 (例如 /dev/sdc1)
# -o NAME,TYPE -p -n "$disk_name": 列出指定磁盘下的设备名和类型
# awk '$2 == "part" {gsub(/^[[:space:]]*[├└][─]*/, "", $1); print $1}': 过滤出类型为 'part' 的分区名
# 并使用 gsub() 函数去除 lsblk 输出中的前导字符 (如 '└─')
PARTITIONS_ON_DISK=$(lsblk -o NAME,TYPE -p -n "$disk_name" | awk '$2 == "part" {gsub(/^[[:space:]]*[├└][─]*/, "", $1); print $1}')
USB_PARTITIONS_TO_CHECK="$USB_PARTITIONS_TO_CHECK $PARTITIONS_ON_DISK"
done
fi
# 去除重复的设备路径,并确保路径是唯一的
USB_PARTITIONS_TO_CHECK=$(echo "$USB_PARTITIONS_TO_CHECK" | tr ' ' '\n' | sort -u | tr '\n' ' ')
if [ -z "$USB_PARTITIONS_TO_CHECK" ]; then
echo "$(date): 未发现任何 USB 分区需要检查。"
echo "----------------------------------------------------"
echo "$(date): Manual USB disk check finished."
echo "----------------------------------------------------"
exit 0
fi
echo "$(date): 发现以下 USB 分区,将逐一进行检查:"
echo "$USB_PARTITIONS_TO_CHECK"
echo ""
for dev_path in $USB_PARTITIONS_TO_CHECK; do
# 确保 dev_path 不为空或只包含空格
if [ -n "$dev_path" ]; then
echo "----------------------------------------------------"
echo "$(date): 正在检查分区: $dev_path"
echo "----------------------------------------------------"
# 调用你的修复脚本。现在修复脚本会直接将输出打印到终端。
# 确保当前脚本也以 sudo 运行,或者修复脚本已经配置为无密码 sudo。
# 最简单的方式是直接让用户以 sudo 运行此脚本。
"$FIX_SCRIPT" "$dev_path"
# 更新此消息,因为输出现在在终端可见
echo "$(date): 对 $dev_path 的检查已完成。详细信息请查看终端输出和日志文件: $LOG_FILE"
echo ""
fi
done
echo "----------------------------------------------------"
echo "$(date): 所有发现的 USB 分区检查已完成。"
echo "$(date): 详细的修复进度和结果已显示在终端,并记录在 '$LOG_FILE' 中。"
echo "----------------------------------------------------"
sleep 5 # 保持终端窗口打开,以便用户查看最终消息

View File

@@ -212,9 +212,7 @@ show_menu() {
echo echo
echo " 1. 外网检测和网络管理" echo " 1. 外网检测和网络管理"
echo " 2. 快速网络状态检查" echo " 2. 快速网络状态检查"
echo " 3. 下载并运行TMS工具" echo " 3. 一键执行 (检测+TMS)"
echo " 4. 一键执行 (检测+TMS)"
echo " 5. 显示系统信息"
echo " 0. 退出" echo " 0. 退出"
echo echo
print_separator print_separator
@@ -237,14 +235,8 @@ main() {
quick_network_check quick_network_check
;; ;;
3) 3)
run_tms_tool
;;
4)
one_click_run one_click_run
;; ;;
5)
show_system_info
;;
0) 0)
print_separator print_separator
log_success "感谢使用TMS工具集成菜单" log_success "感谢使用TMS工具集成菜单"

View File

@@ -1,62 +1,73 @@
#!/bin/bash #!/bin/bash
# 定义保存编码的文件路径 COOKIE_FILE="/home/smart/cookie.txt"
CONFIG_FILE="$HOME/.my_key_encoding" # 建议放在用户主目录下的隐藏文件,避免与脚本混淆
# 检查是否存在已保存的编码 echo "正在登录 SmartTMS_S3 系统以获取会话..."
if [ -f "$CONFIG_FILE" ]; then curl -s -X POST -d 'userName=admin&userPassword=admin' -c "$COOKIE_FILE" http://127.0.0.1:8080/SmartTMS_S3/LoginController/login.do >/dev/null 2>&1
# 如果文件存在,读取编码
KEY_ENCODING=$(cat "$CONFIG_FILE")
echo "使用已保存的密钥编码: $KEY_ENCODING"
else
# 如果文件不存在,提示用户输入并保存
read -p "首次运行,请输入密钥编码 (例如: 35054321): " USER_INPUT_ENCODING
# 简单验证输入是否为空 if [ $? -ne 0 ]; then
if [ -z "$USER_INPUT_ENCODING" ]; then echo "错误: 登录 SmartTMS_S3 失败。请检查服务是否运行或网络连接。"
echo "错误: 未输入密钥编码。脚本退出。" rm -f "$COOKIE_FILE" # 清理可能不完整的cookie文件
exit 1 exit 1
fi fi
echo "登录成功。"
KEY_ENCODING="$USER_INPUT_ENCODING" echo "正在获取编码..."
echo "$KEY_ENCODING" > "$CONFIG_FILE" JSON_RESPONSE=$(curl -s -X POST -b "$COOKIE_FILE" 'http://127.0.0.1:8080/SmartTMS_S3/SettingManagementController/queryCinemaModel.do')
echo "密钥编码 '$KEY_ENCODING' 已保存,下次运行将自动使用此编码。"
if [ $? -ne 0 ] || [ -z "$JSON_RESPONSE" ]; then
echo "错误: 无法获取系统配置信息或返回为空。检查tms是否启动"
rm -f "$COOKIE_FILE"
exit 1
fi fi
# 开始解压操作 KEY_ENCODING=$(echo "$JSON_RESPONSE" | sed -n 's/.*"result":{[^}]*"code":"\([^"]*\)".*/\1/p')
echo "开始解压文件..."
cd /home/smart/下载/ if [ -z "$KEY_ENCODING" ]; then
ls $USER_INPUT_ENCODING*.zip 2>/dev/null | xargs -r -n1 unzip -o -d /media/kdm/ echo "错误: 无法从接口响应中提取到有效的密钥编码。检查配置中是否填写影院编码"
echo "已处理 /home/smart/下载/ 中的ZIP文件。" rm -f "$COOKIE_FILE"
exit 1
fi
cd /home/smart/Downloads/ echo "已成功获取影院编码: $KEY_ENCODING"
ls $USER_INPUT_ENCODING*.zip 2>/dev/null | xargs -r -n1 unzip -o -d /media/kdm/
echo "已处理 /home/smart/Downloads/ 中的ZIP文件。"
cd /media/kdm/ echo "开始解压密钥文件..."
ls $USER_INPUT_ENCODING*.zip 2>/dev/null | xargs -r -n1 unzip -o -d /media/kdm/
echo "已处理 /media/kdm/ 中的ZIP文件。"
cd /tmp/ declare -a DIRS=("/home/smart/下载/" "/home/smart/Downloads/" "/media/kdm/" "/tmp/")
ls $USER_INPUT_ENCODING*.zip 2>/dev/null | xargs -r -n1 unzip -o -d /media/kdm/ TARGET_DIR="/media/kdm/"
echo "已处理 /media/kdm/ 中的ZIP文件。"
for dir in "${DIRS[@]}"; do
echo "正在处理目录: $dir 中的ZIP文件..."
find "$dir" -maxdepth 1 -name "${KEY_ENCODING}*.zip" -print0 | xargs -0 -r -n1 unzip -o -d "$TARGET_DIR"
if [ $? -ne 0 ]; then
echo "警告: 在 $dir 中解压文件时可能出现问题,或没有找到匹配的文件。"
fi
done
echo "解压操作完成。" echo "解压操作完成。"
echo "删除密钥压缩包..." echo "删除密钥压缩包..."
# 使用之前获取或保存的 KEY_ENCODING 变量 for dir in "${DIRS[@]}"; do
find /media/kdm/ -name "${KEY_ENCODING}*.zip" -delete echo "正在删除 $dir 中的 ${KEY_ENCODING}*.zip 文件..."
find /home/smart/下载/ -name "${KEY_ENCODING}*.zip" -delete find "$dir" -maxdepth 1 -name "${KEY_ENCODING}*.zip" -delete
find /home/smart/Downloads/ -name "${KEY_ENCODING}*.zip" -delete done
echo "正在删除 /media/kdm/ 中的 ${KEY_ENCODING}*.zip 文件..."
find "$TARGET_DIR" -maxdepth 1 -name "${KEY_ENCODING}*.zip" -delete
echo "密钥压缩包删除完成。" echo "密钥压缩包删除完成。"
sleep 3 sleep 3
echo "刷新密钥..." echo "刷新密钥..."
# 登录并刷新密钥,保持原样 curl -s http://127.0.0.1:8080/SmartTMS_S3/kdmController/updateKdm.do -X POST -b "$COOKIE_FILE" >/dev/null 2>&1
curl -X POST -d 'userName=admin&userPassword=admin' -c /home/smart/cookie.txt http://127.0.0.1:8080/SmartTMS_S3/LoginController/login.do 2>&1 >/dev/null
curl http://127.0.0.1:8080/SmartTMS_S3/kdmController/updateKdm.do -X POST -b /home/smart/cookie.txt 2>&1 >/dev/null if [ $? -ne 0 ]; then
echo "刷新成功。" echo "错误: 刷新密钥失败。"
else
echo "刷新成功。"
fi
sleep 5 sleep 5
rm -f "$COOKIE_FILE"
echo "已清理临时cookie文件。"
echo "脚本执行完毕。" echo "脚本执行完毕。"

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Categories=TMS
Terminal=true
Icon[zh_CN]=/home/smart/.tms3/starter/314.png
Name[zh_CN]=修复盘
Exec=sudo sh /home/smart/.tms3/starter/manual_usb_check.sh
Name=usb-disk-repair
Icon=/home/smart/.tms3/starter/314.png

View File

@@ -0,0 +1,139 @@
#!/bin/bash
DEV_PATH="$1"
LOG_FILE="/var/log/usb_disk_fix.log" # 用于调试和记录所有输出
# 确保日志文件存在且可写
touch "$LOG_FILE"
chmod 644 "$LOG_FILE" # 确保普通用户可读,方便查看
# --- 辅助函数:同时输出到终端和日志文件 ---
# 所有重要的信息都通过这个函数输出
log_and_print() {
local message="$1"
echo "$(date): $message" | tee -a "$LOG_FILE"
}
# --- 辅助函数:执行命令并将其输出同时记录到终端和日志文件 ---
execute_and_log_output() {
local description="$1"
local command_to_run="$2"
log_and_print "Initiating command: $description"
log_and_print "Executing: $command_to_run"
# 执行命令,将其标准输出和标准错误都通过 tee 同时发送到终端和日志文件
# 注意:这里移除了后台运行的 '&' 符号,使命令同步执行
eval "$command_to_run" 2>&1 | tee -a "$LOG_FILE"
log_and_print "Command for '$description' finished."
}
# --- 主要逻辑 ---
log_and_print "Script started for $DEV_PATH"
# 1. 验证输入设备路径
if ! [ -b "$DEV_PATH" ]; then
log_and_print "$DEV_PATH 不是一个块设备。退出。"
exit 0
fi
# 2. 检查文件系统类型是否为 ext2 或 ext3
FS_TYPE=$(blkid -s TYPE -o value "$DEV_PATH" 2>/dev/null)
if [[ "$FS_TYPE" != "ext2" && "$FS_TYPE" != "ext3" ]]; then
log_and_print "$DEV_PATH 不是EXT2或EXT3文件系统 (类型: $FS_TYPE)。退出。"
exit 0
fi
# 3. 检查是否已经挂载
if findmnt -M "$DEV_PATH" &>/dev/null; then
log_and_print "$DEV_PATH 已经挂载。GVfs 或其他已处理。退出。"
exit 0
fi
# 4. 尝试临时挂载以检测是否能正常挂载
TEMP_MOUNT_DIR=$(mktemp -d)
log_and_print "Attempting temporary mount of $DEV_PATH to $TEMP_MOUNT_DIR"
MOUNT_OUTPUT=$(mount "$DEV_PATH" "$TEMP_MOUNT_DIR" 2>&1)
MOUNT_STATUS=$?
if [ "$MOUNT_STATUS" -eq 0 ]; then
# 挂载成功说明没有问题GVfs 应该能处理
umount "$TEMP_MOUNT_DIR"
rmdir "$TEMP_MOUNT_DIR"
log_and_print "$DEV_PATH 成功临时挂载。GVfs 将处理。退出。"
exit 0
else
# 挂载失败,尝试进行修复
log_and_print "$DEV_PATH 无法挂载。尝试进行修复 (fsck 和 resize2fs -f)。"
# 构建修复命令字符串
REPAIR_COMMAND="
echo \"$(date): 检测到USB磁盘 ($DEV_PATH) 无法挂载。尝试进行文件系统修复。\"
# 第一次文件系统检查
echo \"$(date): 正在进行文件系统检查 (fsck -fy) 第一次尝试...\"
# 使用 yes | 确保所有交互式提示都回答 'yes'
FSCK_OUTPUT_1=\$(yes | fsck -fy '$DEV_PATH' 2>&1)
FS_CHECK_STATUS_1=\$?
echo \"$(date): 第一次 fsck 输出 (状态码: \$FS_CHECK_STATUS_1):\"
echo \"\$FSCK_OUTPUT_1\"
local initial_fsck_had_errors=false
if [ \$FS_CHECK_STATUS_1 -ne 0 ]; then
echo \"$(date): WARNING: 第一次文件系统检查 (fsck) 发现错误。继续尝试 resize2fs。\"
initial_fsck_had_errors=true
else
echo \"$(date): 第一次文件系统检查 (fsck) 成功完成。\"
fi
# 强制调整文件系统大小
echo \"$(date): 正在强制调整文件系统大小 (resize2fs -f)...这可能需要一些时间。\"
RESIZE_OUTPUT=\$(resize2fs -f '$DEV_PATH' 2>&1)
RESIZE_STATUS=\$?
echo \"$(date): resize2fs 输出 (状态码: \$RESIZE_STATUS):\"
echo \"\$RESIZE_OUTPUT\"
if [ \$RESIZE_STATUS -ne 0 ]; then
echo \"$(date): ERROR: 文件系统修复 (resize2fs -f) 失败。请手动检查。\"
exit 1
else
echo \"$(date): 文件系统修复 (resize2fs -f) 完成!\"
fi
# *** 关键修改:修复后不再自己挂载,而是通过 udisksctl 触发桌面环境挂载 ***
echo \"$(date): 尝试通过 udisksctl 挂载磁盘,让桌面环境接管...\"
# 注意udisksctl 必须以原始用户身份运行,而不是 root
if [ -n \"\$SUDO_USER\" ]; then
UDISKS_MOUNT_OUTPUT=\$(sudo -u \"\$SUDO_USER\" udisksctl mount -b \"\$DEV_PATH\" 2>&1)
UDISKS_MOUNT_STATUS=\$?
else
# 如果没有 SUDO_USER (例如直接以 root 运行),则尝试直接 udisksctl mount
# 这在桌面环境下可能不理想,但作为备用方案
echo \"$(date): 警告:未检测到 SUDO_USER 变量,尝试直接以当前用户身份运行 udisksctl。\"
UDISKS_MOUNT_OUTPUT=\$(udisksctl mount -b \"\$DEV_PATH\" 2>&1)
UDISKS_MOUNT_STATUS=\$?
fi
if [ \$UDISKS_MOUNT_STATUS -eq 0 ]; then
echo \"$(date): USB磁盘 (\$DEV_PATH) 修复后成功通过 udisksctl 挂载!桌面环境将接管。\"
# 由于 udisksctl 会挂载到它自己的位置,我们不需要卸载 TEMP_MOUNT_DIR
# TEMP_MOUNT_DIR 应该保持为空,并在脚本结束时被 rmdir 清理
else
echo \"$(date): ERROR: USB磁盘 (\$DEV_PATH) 修复后通过 udisksctl 挂载失败。请手动检查。\"
echo \"udisksctl mount output: \$UDISKS_MOUNT_OUTPUT\"
exit 1
fi
echo \"$(date): 修复流程结束。\"
"
# 执行修复命令,所有输出都将记录到 LOG_FILE 并打印到终端
execute_and_log_output "USB磁盘修复 - $DEV_PATH" "$REPAIR_COMMAND"
# 清理临时挂载点(无论修复成功与否,只要它存在且为空)
# 在修复成功的情况下TEMP_MOUNT_DIR 应该没有被实际使用,所以是空的
if [ -d "$TEMP_MOUNT_DIR" ]; then
rmdir "$TEMP_MOUNT_DIR" 2>/dev/null
fi
exit 0
fi

View File

@@ -5,8 +5,8 @@ Version=1.0
Type=Application Type=Application
Categories=TMS Categories=TMS
Terminal=true Terminal=true
Icon[zh_CN]=/home/smart/unzipKDM.png Icon[zh_CN]=/home/smart/.tms3/starter/unzipKDM.png
Name[zh_CN]=解压密钥 Name[zh_CN]=解压密钥
Exec=sh /home/smart/unzipKDMs.sh Exec=sh /home/smart/.tms3/starter/unzipKDMs.sh
Name=unzipkdm Name=unzipkdm
Icon=/home/smart/unzipKDM.png Icon=/home/smart/.tms3/starter/unzipKDM.png