diff --git a/archiso/airootfs/home/smart/.tms3/starter/bbttms.sh b/archiso/airootfs/home/smart/.tms3/starter/bbttms.sh new file mode 100755 index 00000000..8dfe0dda --- /dev/null +++ b/archiso/airootfs/home/smart/.tms3/starter/bbttms.sh @@ -0,0 +1,514 @@ +#!/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 diff --git a/archiso/airootfs/home/smart/.tms3/starter/bbttms.sh.backup.1764188623 b/archiso/airootfs/home/smart/.tms3/starter/bbttms.sh.backup.1764188623 new file mode 100755 index 00000000..8dfe0dda --- /dev/null +++ b/archiso/airootfs/home/smart/.tms3/starter/bbttms.sh.backup.1764188623 @@ -0,0 +1,514 @@ +#!/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 diff --git a/archiso/airootfs/home/smart/.tms3/starter/nm_network_manager.sh b/archiso/airootfs/home/smart/.tms3/starter/nm_network_manager.sh new file mode 100644 index 00000000..b242183c --- /dev/null +++ b/archiso/airootfs/home/smart/.tms3/starter/nm_network_manager.sh @@ -0,0 +1,507 @@ +#!/bin/bash +# +# Arch Linux NetworkManager 管理脚本 - 修复版 +# 功能: 检查网络、自动修复、可靠地备份和恢复配置 +# + +# --- 全局变量和配置 --- +BACKUP_BASE_DIR="/var/lib/network-manager-script" +LOG_FILE="/var/log/nm_manager.log" +ACTIVE_CONNS_LIST="active_connections.list" +CONNECTION_DETAILS_DIR="connection_details" + +# --- 颜色定义 --- +C_RESET='\033[0m' +C_RED='\033[0;31m' +C_GREEN='\033[0;32m' +C_YELLOW='\033[0;33m' +C_BLUE='\033[0;34m' + +# --- 基础函数 --- +log() { echo -e "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"; } +log_success() { log "${C_GREEN}✓ $1${C_RESET}"; } +log_error() { log "${C_RED}✗ $1${C_RESET}"; } +log_warn() { log "${C_YELLOW}⚠ $1${C_RESET}"; } +info() { echo -e "${C_BLUE} $1${C_RESET}"; } + +# 检查root权限和NetworkManager服务 +pre_check() { + if [ "$(id -u)" -ne 0 ]; then + log_error "此脚本需要root权限运行。请使用: sudo \$0" + exit 1 + fi + if ! systemctl is-active --quiet NetworkManager; then + log_error "NetworkManager 服务未运行。请先启动: sudo systemctl start NetworkManager" + exit 1 + fi +} + +# --- 核心功能 --- + +# 1. 检查当前网络状态 +check_status() { + info "--- 当前网络状态 ---" + nmcli device status + info "\n--- 活动连接 ---" + nmcli connection show --active + + log "正在检查外网连接..." + if ping -c 2 -W 3 8.8.8.8 >/dev/null 2>&1 || ping -c 2 -W 3 1.1.1.1 >/dev/null 2>&1; then + log_success "外网连接正常。" + return 0 + else + log_error "外网连接失败。" + return 1 + fi +} + +# 2. 改进的备份网络配置 +backup_config() { + local backup_dir="$BACKUP_BASE_DIR/$(date +%F_%H-%M-%S)" + mkdir -p "$backup_dir" + mkdir -p "$backup_dir/$CONNECTION_DETAILS_DIR" + + log "开始备份网络配置到: $backup_dir" + + # 记录当前活动的连接 + nmcli -t -f NAME,TYPE,UUID,DEVICE connection show --active | grep -v ':loopback:' > "$backup_dir/$ACTIVE_CONNS_LIST" + + # 备份所有非回环连接的详细配置 + local backup_count=0 + while IFS=: read -r conn_name conn_type conn_uuid conn_device; do + if [ -n "$conn_name" ] && [ "$conn_type" != "loopback" ]; then + local safe_name=$(echo "$conn_name" | tr ' /' '_-') + local detail_file="$backup_dir/$CONNECTION_DETAILS_DIR/${safe_name}_${conn_uuid}.conf" + + # 导出连接的完整配置 + if nmcli -f all connection show "$conn_uuid" > "$detail_file" 2>/dev/null; then + info "已备份连接: $conn_name (UUID: $conn_uuid)" + ((backup_count++)) + + # 尝试导出为keyfile格式(如果支持) + local keyfile="$backup_dir/$CONNECTION_DETAILS_DIR/${safe_name}_${conn_uuid}.keyfile" + nmcli connection export "$conn_uuid" "$keyfile" 2>/dev/null || true + else + log_warn "备份连接 '$conn_name' 失败" + fi + fi + done < <(nmcli -t -f NAME,TYPE,UUID,DEVICE connection show | grep -v ':loopback:') + + # 备份网络设备信息 + nmcli device status > "$backup_dir/device_status.txt" + ip addr show > "$backup_dir/ip_addresses.txt" + ip route show > "$backup_dir/routes.txt" + + # 尝试备份系统连接文件(如果存在) + local system_conn_dir="/etc/NetworkManager/system-connections" + if [ -d "$system_conn_dir" ] && [ "$(ls -A "$system_conn_dir" 2>/dev/null)" ]; then + local sys_backup_dir="$backup_dir/system-connections" + mkdir -p "$sys_backup_dir" + cp -r "$system_conn_dir"/* "$sys_backup_dir/" 2>/dev/null + info "已备份系统连接文件" + fi + + if [ "$backup_count" -gt 0 ]; then + # 创建符号链接指向最新备份 + ln -sfn "$backup_dir" "$BACKUP_BASE_DIR/latest" + log_success "备份完成!共备份 $backup_count 个连接配置。" + + # 显示备份摘要 + info "备份摘要:" + info "- 活动连接: $(wc -l < "$backup_dir/$ACTIVE_CONNS_LIST") 个" + info "- 详细配置: $backup_count 个" + info "- 备份位置: $backup_dir" + else + log_warn "未找到任何可备份的连接。" + rm -rf "$backup_dir" + return 1 + fi +} + +# 3. 自动修复网络 +auto_fix() { + log "启动网络自动修复流程..." + if check_status; then + log_success "网络已连接,无需修复。" + return + fi + + log_warn "网络连接中断,将尝试自动修复。" + + # 修复前先执行备份 + backup_config + + log "正在尝试为所有物理网卡设置临时DHCP连接..." + + # 获取所有物理网卡 + while IFS=: read -r device device_type state connection; do + if [ "$device_type" = "ethernet" ] || [ "$device_type" = "wifi" ]; then + if [ -n "$device" ] && [ "$device" != "lo" ]; then + local temp_conn_name="temp-dhcp-$device" + log "处理设备: $device (类型: $device_type, 状态: $state)" + + # 先停用设备上的所有现有连接 + nmcli device disconnect "$device" 2>/dev/null + + # 删除可能存在的旧临时连接 + nmcli connection delete "$temp_conn_name" 2>/dev/null + + # 根据设备类型创建连接 + local conn_type="ethernet" + if [ "$device_type" = "wifi" ]; then + conn_type="wifi" + fi + + # 添加并激活新的临时DHCP连接 + if nmcli connection add type "$conn_type" ifname "$device" con-name "$temp_conn_name" autoconnect yes ipv4.method auto ipv6.method auto >/dev/null 2>&1; then + info "为 $device 创建了临时DHCP连接 '$temp_conn_name'" + # 激活连接 + if nmcli connection up "$temp_conn_name" >/dev/null 2>&1; then + info "成功激活连接 '$temp_conn_name'" + else + log_warn "激活连接 '$temp_conn_name' 失败" + fi + else + log_error "为 $device 创建DHCP连接失败" + fi + fi + fi + done < <(nmcli -t -f DEVICE,TYPE,STATE,CONNECTION device status) + + log "等待网络重新初始化 (10秒)..." + sleep 10 + + log "再次检查网络状态..." + check_status +} + +# 4. 智能恢复网络配置 +restore_config() { + local backup_dir="$BACKUP_BASE_DIR/latest" + if [ ! -d "$backup_dir" ] || [ ! -L "$backup_dir" ]; then + log_error "找不到备份目录。请先执行备份(选项2)或修复(选项3)操作。" + return 1 + fi + + local real_backup_dir=$(readlink -f "$backup_dir") + log "将从以下备份中恢复: $real_backup_dir" + + # 显示备份信息 + if [ -f "$real_backup_dir/$ACTIVE_CONNS_LIST" ]; then + info "备份中的活动连接:" + while IFS=: read -r name type uuid device; do + info " - $name ($type) -> $device" + done < "$real_backup_dir/$ACTIVE_CONNS_LIST" + fi + + # 尝试从系统连接文件恢复 + local sys_backup_dir="$real_backup_dir/system-connections" + if [ -d "$sys_backup_dir" ] && [ "$(ls -A "$sys_backup_dir" 2>/dev/null)" ]; then + log "发现系统连接文件备份,尝试恢复..." + restore_from_system_files "$sys_backup_dir" + else + log "未找到系统连接文件,尝试从详细配置恢复..." + restore_from_details "$real_backup_dir" + fi + + # 重新激活之前的连接 + log "正在重新激活之前的活动连接..." + if [ -f "$real_backup_dir/$ACTIVE_CONNS_LIST" ]; then + while IFS=: read -r conn_name conn_type conn_uuid conn_device; do + if [ -n "$conn_name" ]; then + info "尝试激活: $conn_name" + if nmcli connection up "$conn_name" >/dev/null 2>&1; then + info "✓ 成功激活: $conn_name" + else + log_warn "激活失败: $conn_name" + fi + fi + done < "$real_backup_dir/$ACTIVE_CONNS_LIST" + fi + + log "等待网络重新连接 (8秒)..." + sleep 8 + log_success "恢复过程完成!" + check_status +} + +# 从系统文件恢复 +restore_from_system_files() { + local sys_backup_dir="\$1" + local system_conn_dir="/etc/NetworkManager/system-connections" + + # 停止NetworkManager + log "临时停止NetworkManager服务..." + systemctl stop NetworkManager + + # 备份当前配置 + local current_backup="/tmp/nm_current_backup_$(date +%s)" + mkdir -p "$current_backup" + if [ -d "$system_conn_dir" ]; then + cp -r "$system_conn_dir"/* "$current_backup/" 2>/dev/null || true + fi + + # 恢复配置文件 + mkdir -p "$system_conn_dir" + cp -r "$sys_backup_dir"/* "$system_conn_dir/" 2>/dev/null + chmod -R 600 "$system_conn_dir"/* 2>/dev/null + + # 重启NetworkManager + log "重新启动NetworkManager服务..." + systemctl start NetworkManager + sleep 5 + nmcli connection reload + sleep 3 + + rm -rf "$current_backup" +} + +# 从详细配置恢复(显示信息供手动配置) +restore_from_details() { + local backup_dir="\$1" + local details_dir="$backup_dir/$CONNECTION_DETAILS_DIR" + + if [ ! -d "$details_dir" ]; then + log_error "未找到详细配置备份" + return 1 + fi + + log_warn "系统连接文件备份不可用,显示配置信息供参考:" + + for detail_file in "$details_dir"/*.conf; do + if [ -f "$detail_file" ]; then + local filename=$(basename "$detail_file" .conf) + info "连接配置: $filename" + echo "----------------------------------------" + + # 提取关键配置信息 + grep -E "^(connection\.|ipv4\.|ipv6\.|802-3-ethernet\.|wifi\.)" "$detail_file" | head -20 + echo "----------------------------------------" + fi + done +} + +# 5. 清理临时DHCP连接 +cleanup_temp_connections() { + log "正在清理临时DHCP连接..." + local cleanup_count=0 + + while IFS= read -r conn_name; do + if [ -n "$conn_name" ]; then + if nmcli connection delete "$conn_name" >/dev/null 2>&1; then + info "已删除临时连接: $conn_name" + ((cleanup_count++)) + fi + fi + done < <(nmcli -t -f NAME connection show | grep "^temp-dhcp-") + + if [ "$cleanup_count" -gt 0 ]; then + log_success "清理完成,共删除 $cleanup_count 个临时连接。" + else + log "没有找到需要清理的临时连接。" + fi +} + +# 6. 显示备份信息 +show_backup_info() { + info "--- 备份信息 ---" + if [ ! -d "$BACKUP_BASE_DIR" ]; then + log_warn "备份目录不存在: $BACKUP_BASE_DIR" + return + fi + + local backup_count=0 + for backup_dir in "$BACKUP_BASE_DIR"/20*; do + if [ -d "$backup_dir" ]; then + ((backup_count++)) + local dir_name=$(basename "$backup_dir") + local size=$(du -sh "$backup_dir" 2>/dev/null | cut -f1) + info "备份 #$backup_count: $dir_name (大小: $size)" + + # 显示备份内容摘要 + if [ -f "$backup_dir/$ACTIVE_CONNS_LIST" ]; then + local conn_count=$(wc -l < "$backup_dir/$ACTIVE_CONNS_LIST") + info " - 活动连接: $conn_count 个" + fi + + if [ -d "$backup_dir/$CONNECTION_DETAILS_DIR" ]; then + local detail_count=$(ls -1 "$backup_dir/$CONNECTION_DETAILS_DIR"/*.conf 2>/dev/null | wc -l) + info " - 详细配置: $detail_count 个" + fi + fi + done + + if [ "$backup_count" -eq 0 ]; then + log_warn "没有找到任何备份。" + else + info "总共找到 $backup_count 个备份。" + + # 显示最新备份信息 + if [ -L "$BACKUP_BASE_DIR/latest" ]; then + local latest_backup=$(readlink -f "$BACKUP_BASE_DIR/latest") + info "最新备份: $(basename "$latest_backup")" + fi + fi +} + +# 7. 删除旧备份 +cleanup_old_backups() { + local keep_days=7 + log "正在清理超过 $keep_days 天的旧备份..." + + if [ ! -d "$BACKUP_BASE_DIR" ]; then + log_warn "备份目录不存在,无需清理。" + return + fi + + local deleted_count=0 + find "$BACKUP_BASE_DIR" -maxdepth 1 -type d -name "20*" -mtime +$keep_days | while read -r old_backup; do + if [ -d "$old_backup" ]; then + local backup_name=$(basename "$old_backup") + rm -rf "$old_backup" + info "已删除旧备份: $backup_name" + ((deleted_count++)) + fi + done + + if [ "$deleted_count" -gt 0 ]; then + log_success "清理完成,删除了 $deleted_count 个旧备份。" + else + log "没有找到需要清理的旧备份。" + fi +} + +# 8. 高级网络诊断 +advanced_diagnosis() { + info "--- 高级网络诊断 ---" + + log "1. NetworkManager 服务状态:" + systemctl status NetworkManager --no-pager -l + + log "\n2. 网络设备详细信息:" + nmcli device show + + log "\n3. 所有连接配置:" + nmcli connection show + + log "\n4. 路由表:" + ip route show table all + + log "\n5. DNS 配置:" + cat /etc/resolv.conf + + log "\n6. 防火墙状态:" + if command -v ufw >/dev/null 2>&1; then + ufw status verbose + elif command -v iptables >/dev/null 2>&1; then + iptables -L -n + else + info "未找到防火墙工具" + fi + + log "\n7. 网络接口统计:" + cat /proc/net/dev + + log "\n8. 系统网络配置文件:" + info "NetworkManager 主配置:" + [ -f /etc/NetworkManager/NetworkManager.conf ] && cat /etc/NetworkManager/NetworkManager.conf + + log "\n9. 最近的网络日志:" + journalctl -u NetworkManager --no-pager -n 50 +} + +# --- 主菜单和程序入口 --- + +show_menu() { + echo + echo "==============================================" + echo " Arch Linux NetworkManager 管理工具" + echo "==============================================" + echo "1. 检查网络状态" + echo "2. 备份网络配置" + echo "3. 自动修复网络" + echo "4. 恢复网络配置" + echo "5. 清理临时连接" + echo "6. 显示备份信息" + echo "7. 清理旧备份" + echo "8. 高级网络诊断" + echo "9. 退出" + echo "==============================================" + echo -n "请选择操作 (1-9): " +} + +main() { + # 初始化 + pre_check + mkdir -p "$BACKUP_BASE_DIR" + touch "$LOG_FILE" + + log_success "NetworkManager 管理脚本启动成功" + + while true; do + show_menu + read -r choice + + case $choice in + 1) + echo + log "执行选项 1: 检查网络状态" + check_status + ;; + 2) + echo + log "执行选项 2: 备份网络配置" + backup_config + ;; + 3) + echo + log "执行选项 3: 自动修复网络" + auto_fix + ;; + 4) + echo + log "执行选项 4: 恢复网络配置" + restore_config + ;; + 5) + echo + log "执行选项 5: 清理临时连接" + cleanup_temp_connections + ;; + 6) + echo + log "执行选项 6: 显示备份信息" + show_backup_info + ;; + 7) + echo + log "执行选项 7: 清理旧备份" + cleanup_old_backups + ;; + 8) + echo + log "执行选项 8: 高级网络诊断" + advanced_diagnosis + ;; + 9) + echo + log_success "感谢使用 NetworkManager 管理工具!" + exit 0 + ;; + *) + echo + log_error "无效选择,请输入 1-9 之间的数字。" + ;; + esac + + echo + echo "按 Enter 键继续..." + read -r + done +} + +# 脚本入口点 +if [ "${BASH_SOURCE[0]}" = "${0}" ]; then + main "$@" +fi + diff --git a/archiso/airootfs/home/smart/.tms3/starter/tms-tools.sh b/archiso/airootfs/home/smart/.tms3/starter/tms-tools.sh index 1d07c3d0..0c51c47e 100644 --- a/archiso/airootfs/home/smart/.tms3/starter/tms-tools.sh +++ b/archiso/airootfs/home/smart/.tms3/starter/tms-tools.sh @@ -1,15 +1,264 @@ #!/bin/bash +# +# TMS工具集成菜单脚本 +# 功能: 网络检测、TMS工具管理 +# -echo "--- TMS工具 ---" +# --- 颜色定义 --- +C_RESET='\033[0m' +C_RED='\033[0;31m' +C_GREEN='\033[0;32m' +C_YELLOW='\033[0;33m' +C_BLUE='\033[0;34m' +C_CYAN='\033[0;36m' +C_BOLD='\033[1m' -echo "--- 网络检测 ---" +# --- 全局变量 --- +SCRIPT_DIR="/home/smart/.tms3/starter" +NM_SCRIPT="nm_network_manager.sh" +TMS_SCRIPT="bbttms.sh" +TMS_URL="yuyujing.cn/data/sh/bbttms.sh" -echo "--- 局域网查询售票系统地址(凤凰佳影,辰星) ---" +# --- 基础函数 --- +print_header() { + echo -e "${C_CYAN}${C_BOLD}" + echo "==================================================" + echo " TMS 工具集成菜单" + echo "==================================================" + echo -e "${C_RESET}" +} -echo "--- TMS工具 ---" +print_separator() { + echo -e "${C_BLUE}--------------------------------------------------${C_RESET}" +} -cd /home/smart/.tms3/starter -wget -N yuyujing.cn/data/sh/bbttms.sh -sh bbttms.sh +log_info() { echo -e "${C_BLUE}[INFO]${C_RESET} $1"; } +log_success() { echo -e "${C_GREEN}[SUCCESS]${C_RESET} $1"; } +log_error() { echo -e "${C_RED}[ERROR]${C_RESET} $1"; } +log_warn() { echo -e "${C_YELLOW}[WARN]${C_RESET} $1"; } -echo "--- END ---" \ No newline at end of file +# 检查必要的目录和文件 +check_environment() { + if [ ! -d "$SCRIPT_DIR" ]; then + log_error "目录不存在: $SCRIPT_DIR" + read -p "是否创建目录? [y/N]: " create_dir + if [[ "$create_dir" =~ ^[Yy]$ ]]; then + mkdir -p "$SCRIPT_DIR" + log_success "已创建目录: $SCRIPT_DIR" + else + log_error "无法继续,退出脚本。" + exit 1 + fi + fi + + if [ ! -f "$SCRIPT_DIR/$NM_SCRIPT" ]; then + log_warn "网络管理脚本不存在: $SCRIPT_DIR/$NM_SCRIPT" + log_info "请确保网络管理脚本已正确放置。" + fi +} + +# --- 核心功能函数 --- + +# 1. 外网检测和网络管理 +network_check() { + print_separator + log_info "启动外网检测..." + print_separator + + if [ -f "$SCRIPT_DIR/$NM_SCRIPT" ]; then + cd "$SCRIPT_DIR" || { + log_error "无法切换到目录: $SCRIPT_DIR" + return 1 + } + + # 检查是否需要sudo权限 + if [ "$(id -u)" -ne 0 ]; then + log_info "网络管理需要管理员权限,将使用sudo..." + sudo sh "$NM_SCRIPT" + else + sh "$NM_SCRIPT" + fi + else + log_error "网络管理脚本不存在: $SCRIPT_DIR/$NM_SCRIPT" + log_info "请先将网络管理脚本放置到正确位置。" + return 1 + fi +} + +# 2. 快速网络状态检查 +quick_network_check() { + print_separator + log_info "快速网络状态检查..." + + # 检查网络接口状态 + echo -e "${C_BLUE}网络接口状态:${C_RESET}" + ip addr show | grep -E "^[0-9]+:|inet " | sed 's/^/ /' + + echo + # 检查外网连接 + log_info "测试外网连接..." + if ping -c 3 -W 3 8.8.8.8 >/dev/null 2>&1; then + log_success "外网连接正常 (Google DNS 8.8.8.8)" + elif ping -c 3 -W 3 1.1.1.1 >/dev/null 2>&1; then + log_success "外网连接正常 (Cloudflare DNS 1.1.1.1)" + elif ping -c 3 -W 3 114.114.114.114 >/dev/null 2>&1; then + log_success "外网连接正常 (114 DNS)" + else + log_error "外网连接失败" + return 1 + fi + + # 检查DNS解析 + log_info "测试DNS解析..." + if nslookup baidu.com >/dev/null 2>&1; then + log_success "DNS解析正常" + else + log_warn "DNS解析可能有问题" + fi +} + +# 3. 下载并运行TMS工具 +run_tms_tool() { + print_separator + log_info "启动TMS工具..." + print_separator + + cd "$SCRIPT_DIR" || { + log_error "无法切换到目录: $SCRIPT_DIR" + return 1 + } + + log_info "正在下载最新版本的TMS工具..." + if wget -N "$TMS_URL" -O "$TMS_SCRIPT"; then + log_success "TMS工具下载成功" + + # 检查文件是否存在且可执行 + if [ -f "$TMS_SCRIPT" ]; then + chmod +x "$TMS_SCRIPT" + log_info "正在运行TMS工具..." + sh "$TMS_SCRIPT" + else + log_error "下载的TMS工具文件不存在" + return 1 + fi + else + log_error "TMS工具下载失败" + log_info "请检查网络连接或URL是否正确: $TMS_URL" + return 1 + fi +} + +# 5. 一键执行(原脚本功能) +one_click_run() { + print_separator + log_info "执行一键流程..." + print_separator + + # 1. 外网检测 + log_info "步骤1: 外网检测" + if ! quick_network_check; then + log_warn "网络检测发现问题,是否继续? [y/N]" + read -r continue_choice + if [[ ! "$continue_choice" =~ ^[Yy]$ ]]; then + log_info "用户取消操作" + return 1 + fi + fi + + echo + # 2. 运行TMS工具 + log_info "步骤2: 运行TMS工具" + run_tms_tool + + print_separator + log_success "一键流程执行完成" +} + +# 6. 显示系统信息 +show_system_info() { + print_separator + log_info "系统信息" + print_separator + + neofetch + + echo -e "\n${C_BLUE}网络接口:${C_RESET}" + ip link show | grep -E "^[0-9]+:" | sed 's/^/ /' + + echo -e "\n${C_BLUE}脚本目录:${C_RESET}" + echo " $SCRIPT_DIR" + + echo -e "\n${C_BLUE}脚本文件状态:${C_RESET}" + if [ -f "$SCRIPT_DIR/$NM_SCRIPT" ]; then + echo -e " 网络管理脚本: ${C_GREEN}存在${C_RESET}" + else + echo -e " 网络管理脚本: ${C_RED}不存在${C_RESET}" + fi + + if [ -f "$SCRIPT_DIR/$TMS_SCRIPT" ]; then + echo -e " TMS工具脚本: ${C_GREEN}存在${C_RESET}" + echo " 最后修改: $(stat -c %y "$SCRIPT_DIR/$TMS_SCRIPT" 2>/dev/null | cut -d. -f1)" + else + echo -e " TMS工具脚本: ${C_YELLOW}未下载${C_RESET}" + fi +} + +# --- 菜单显示 --- +show_menu() { + clear + print_header + + echo -e "${C_YELLOW}请选择操作:${C_RESET}" + echo + echo " 1. 外网检测和网络管理" + echo " 2. 快速网络状态检查" + echo " 3. 下载并运行TMS工具" + echo " 4. 一键执行 (检测+TMS)" + echo " 5. 显示系统信息" + echo " 0. 退出" + echo + print_separator + read -rp "请输入选择 [0-6]: " choice +} + +# --- 主函数 --- +main() { + # 环境检查 + check_environment + + while true; do + show_menu + + case $choice in + 1) + network_check + ;; + 2) + quick_network_check + ;; + 3) + run_tms_tool + ;; + 4) + one_click_run + ;; + 5) + show_system_info + ;; + 0) + print_separator + log_success "感谢使用TMS工具集成菜单!" + exit 0 + ;; + *) + log_error "无效选择,请输入 0-6 之间的数字" + ;; + esac + + echo + read -p "按回车键继续..." -r + done +} + +# --- 脚本入口 --- +main "$@" diff --git a/archiso/efiboot/loader/entries/01-archiso-x86_64-linux.conf b/archiso/efiboot/loader/entries/01-archiso-x86_64-linux.conf index afd8e99a..8f8fa5ad 100755 --- a/archiso/efiboot/loader/entries/01-archiso-x86_64-linux.conf +++ b/archiso/efiboot/loader/entries/01-archiso-x86_64-linux.conf @@ -1,4 +1,4 @@ -title Arch Linux install medium (x86_64, UEFI) +title BBTTMS Linux install medium (x86_64, UEFI) sort-key 01 linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux.img diff --git a/archiso/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf b/archiso/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf index c216f5e5..c42fab05 100755 --- a/archiso/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf +++ b/archiso/efiboot/loader/entries/02-archiso-x86_64-speech-linux.conf @@ -1,4 +1,4 @@ -title Arch Linux install medium (x86_64, UEFI) with speech +title BBTTMS Linux install medium (x86_64, UEFI) with speech sort-key 02 linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux initrd /%INSTALL_DIR%/boot/intel-ucode.img diff --git a/archiso/grub/grub.cfg b/archiso/grub/grub.cfg index 93aa0f16..799f9e91 100755 --- a/archiso/grub/grub.cfg +++ b/archiso/grub/grub.cfg @@ -51,13 +51,13 @@ timeout_style=menu # Menu entries -menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { +menuentry "BBTTMS Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { set gfxpayload=keep linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% cow_spacesize=4G copytoram=n initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img } -menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { +menuentry "BBTTMS Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { set gfxpayload=keep linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on cow_spacesize=4G copytoram=n initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img diff --git a/archiso/grub/loopback.cfg b/archiso/grub/loopback.cfg index d7d5eced..fc84cd36 100755 --- a/archiso/grub/loopback.cfg +++ b/archiso/grub/loopback.cfg @@ -28,13 +28,13 @@ timeout_style=menu # Menu entries -menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { +menuentry "BBTTMS Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { set gfxpayload=keep linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}" initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img } -menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { +menuentry "BBTTMS Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { set gfxpayload=keep linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}" accessibility=on initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img diff --git a/archiso/packages.x86_64 b/archiso/packages.x86_64 index b04e9f6b..2d219fb0 100755 --- a/archiso/packages.x86_64 +++ b/archiso/packages.x86_64 @@ -306,9 +306,12 @@ pipewire-alsa pipewire-jack pavucontrol -#服务器监测工具 +#服务器工具 htop sysstat unhide gnome-disk-utility iftop +nmap +zip +unzip