如何在bash脚本中用switch case集成Tart工具的启动与关闭功能
Tart启停整合脚本实现方案
核心改造逻辑
- 调整入参规则:第一个参数为操作类型(
start/stop),第二个参数为Tart编号列表 - 保留原编号与IP映射的switch case逻辑,IP动态匹配无需硬编码
- 新增外层switch case分支,分别匹配启动、关闭操作执行对应逻辑
完整整合代码
#!/bin/bash # 第一个入参为操作类型:start/stop,第二个入参为Tart编号列表 OP_TYPE=$1 tart_array=($2) # 统一管理密码,后续修改更方便 TART_PWD="tart123" ip=() tarts=() for i in ${tart_array[@]}; do echo "Tart #: $i" # 原逻辑保留:编号匹配对应IP case "$i" in 1) IP=10.171.0.10 ;; 2) IP=10.171.0.11 ;; 3) IP=10.171.0.12 ;; 4) IP=10.171.0.13 ;; 5) IP=10.171.0.14 ;; *) echo "Invalid TARTS '$i'" >&2; exit 1 ;; esac # 修正原脚本IP赋值语法问题 ip+=($IP) tarts=(${tart_array[@]}) # 新增外层switch case,根据操作类型执行对应逻辑 case "$OP_TYPE" in "start") echo " ---- 启动Tart $i ---- " sshpass -p "$TART_PWD" ssh -Y -X -L 5900:$IP:5901 tarts@$IP <<EOF1 export DISPLAY=:1 gnome-terminal -e "bash -c \"pwd; cd /home/tarts; pwd; ./launch_tarts.sh exec bash\"" exit EOF1 ;; "stop") echo " ---- 关闭Tart $i ---- " sshpass -p "$TART_PWD" ssh -tt -o StrictHostKeyChecking=no tarts@$IP <<EOF . ./tartsenvironfile.8.1.1.0 nohup yes | kill_tarts mcgdrv & nohup yes | kill_tarts server & pkill -f traf pkill -f terminal-server exit EOF ;; *) echo "无效操作类型,请输入 start 或 stop" >&2 exit 1 ;; esac done
使用方法
- 给脚本添加执行权限:
chmod +x tart_manager.sh - 启动指定Tart:
./tart_manager.sh start "1 3 5" - 关闭指定Tart:
./tart_manager.sh stop "2 4"
内容的提问来源于stack exchange,提问作者Asad Javed
相关产品推荐
相关产品推荐

