Ciao a tutti,
avrei bisogno che qualcuno mi illumini e mi supporti(o sopporti ) per la creazione di uno script in bash che mi consenta dal primo server su cui verrà lanciato di gestire un applicativo in jar (start,stop, deploy) su tutte le altre macchine (in totale 32).
Ho pensato a qualcosa del genere come script che fornisca la possibilità di scegliere una opzione a menù:
#!/bin/bash
PS3='Please enter your choice: '
options=("Start" "Stop" "Deploy" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Start Shaw")
echo "you chose choice 1"
;;
"Stop Shaw")
echo "you chose choice 2"
;;
"Check Shaw Status")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
Non so come collegare le scelte sopra definite alle varie funzioni di Start, Stop e Deploy.
START:
per la funzione di start ho pensato a questo:
function start_service ( )
{
ssh $1 'nohup /data/jdk1.8.0_151/bin/java -jar -Xmx1024M /data/apps/file.jar &'
}
echo "Starting servers"
for serv_name in $( cat /data/server_list/list.txt )
do start_service ${serv_name} &
echo $! > /data/apps/pid.file &
sleep 5
done
Dove list.txt, è un file di testo contenente la lista dei 32 server. Il problema è che lanciandolo, viene sì avviato il servizio su ogni server ma sulla macchina 01, dove viene lanciato, crea 32 processi! Vorrei che non facesse un simile casino e che al termine del lancio su tutte le macchine, termini anche la sua esecuzione.
STOP:
dovrei collegare alla scelta del menù stop, questa funzionalità:
kill $(cat pid.file)
DEPLOY:
Questa per me rappresenta una complessità atroce. Mi piacerebbe definire un directory, dove posso buttar dentro il nuovo file jar ed eventuale file di properties e questi vengano sparati su tutte le macchine negli appositi path (file jar in /data/apps/file.jar e file properties in /data/conf/file.properties).
Riuscite cortesemente ad aiutarmi. Magari è una banalità ma non riesco proprio a venirne a capo.
Grazie mille