Aiuto script

di il
3 risposte

Aiuto script

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

3 Risposte

  • Re: Aiuto script

    Essenzialmente per ogni server remoto devi attivare un server ssh (ad esempio) e normalmente con relativa coppia di chiavi RSA

    Nel computer che pilota farai ssh con le chiavi specifiche verso il SINGOLO SERVER, poi fai quello che vuoi.
    ad esempio lanciando degli script sulla macchina etc.
    per caricare i file userai tipicamente sftp con meccanismo simile
  • Re: Aiuto script

    Ho definito questa funzione:
    start_jar ()
    {
    for serv_name in $(cat $SERVER)
    do
    ssh $serv_name 'bash -s' < /data/app/jar_start.sh
    echo "Starting jar on $serv_name"
    sleep 5
    done
    echo
    wait
    exit 0
    }
    
    dove lo script sul server jar_start.sh:
    #!/bin/bash
    
    nohup /data/jdk1.8.0_151/bin/java -jar -Xmx1024M jar.jar &
    
    echo $! > pid.file &
    
    exit 0
    
    Il problema è che nonostante mi esca che sta eseguendo lo starting poi alla fine non ha fatto nulla
  • Re: Aiuto script

    Suggerisco di approfondire di più uso di ssh (con chiavi) per lancio programmi
Devi accedere o registrarti per scrivere nel forum
3 risposte