Tengo este script que actualmente está iniciando la interfaz gráfica de usuario de una herramienta. Quiero agregar otra funcionalidad en el caso del interruptor, que es matar la herramienta si es necesario. En este momento tengo diferentes scripts haciendo esto. Quiero integrar las partes y piezas.
Actualmente, el script que tengo se ve así:
#!/bin/bash tart_array=($1) ip=() tarts=() for i in ${tart_array[@]}; do echo "Tart #: $i" 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 ;; esac ip+=(${IP=[i]}) # echo "$ip" tarts=(${tart_array[@]}) # echo "$tarts" echo " ---- Launching Tart $i ---- " sshpass -p "tart123" 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 done
Al igual que Launching TARTS , quiero agregar Killing TARTS en la declaración de caso de cambio anterior. Solo por ejemplo para matar la herramienta que estoy haciendo:
echo "Killing Tart $i" sshpass -p "tart123" ssh -tt -o StrictHostKeyChecking=no tarts@10.171.0.10 <<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
¿Puede alguien guiarme sobre cómo puedo integrar la funcionalidad de lanzamiento y eliminación en mi secuencia de comandos usando el mismo caso de cambio?
Puede utilizar funciones. Puede colocar las direcciones IP en una matriz, utilizando el número de inicio correspondiente como índice. También puede aprovechar los conjuntos de caracteres si necesita validar 1-5.
Aquí hay un resumen aproximado de lo que creo que estás consiguiendo. Usar como: tart-tool kill 1 3 2
. No entiendo completamente tu objetivo, pero tal vez te dé algunas ideas.
#!/bin/bash launch_tart () { local tart=$1 local ip=${ip[tart]} echo "launching tart $tart…" sshpass tarts@$ip # etc } kill_tart () { local tart=$1 local ip=${ip[tart]} echo "killing tart $tart…" sshpass tarts@$ip # etc } ip[1]=10.171.0.10 ip[2]=10.171.0.11 # etc case $1 in kill) function=kill_tart;; launch) function=launch_tart;; *) exit 1 esac shift for tart in "$@"; do [[ "$tart" == [1-5] ]] || { echo error >&2; exit 1; } $function $tart done