Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di mardux
    Registrato dal
    Apr 2003
    Messaggi
    1,655

    shell scripting: controllo su output comando

    ciao a tutti.

    ho la necessità di implementare 3 operazioni (attualmente separate) in un'unico script per poi pianificarle tramite cron.

    l'ambiente è il seguente:

    2 host suse (host1 e host2) identici con vmware server e 3 macchine virtuali attive o sull'host1 o sull'host2. uno dei 2 host funge da backup dell'altro.

    io dovrei, tramite shell, stoppare la macchina virtuale, copiarla sull'altro host, e farla ripartire.

    questo già lo faccio, ma appunto tramite 3 script separati, che adesso vorrei unire:

    il primo comando è questo, e stoppa la macchina virtuale:
    gpvm01:/ # vmware-cmd /var/lib/vmware/virtual/Zabbix-1.3.8-ubuntu/Ubuntu.vmx stop hard
    e questa la risposta:
    stop(hard) = 1

    poi il comando di copia ma quello è ok.

    il terzo comando, quello che fa ripartire la macchina:
    gpvm01:/ # vmware-cmd /var/lib/vmware/virtual/Zabbix-1.3.8-ubuntu/Ubuntu.vmx start
    e questa è la risposta:
    start() = 1


    il punto è questo:


    per andare avanti con il secondo comando, quello della copia, vorrei che prima si controllasse la risposta del primo comando di stop. se è 1, come dev'essere, vai avanti, se no fermati.

    io non so come prendere quel valore in una variabile, fare il controllo e quindi andare avanti.

    spero di essere stato chiaro e che qualcuno possa aiutarmi.

    grazie in anticipo
    L'italia è una repubblica mediatica basata sulla corruzione e sulla mafia.

    "Non sono i popoli a dover aver paura dei propri governi, ma i governi che devono aver paura dei propri popoli.." Thomas Jefferson.

  2. #2
    codice:
    s=`vmware-cmd /var/lib/vmware/virtual/Zabbix-1.3.8-ubuntu/Ubuntu.vmx stop hard | cut -d'=' -f2`
    if [[ $s == "1" ]]
    then
    #blabla
    else
    #blabla
    fi

  3. #3
    Utente di HTML.it L'avatar di mardux
    Registrato dal
    Apr 2003
    Messaggi
    1,655
    grazie. fà proprio al caso mio e ottengo quello che cercavo.

    scusa ma ne approfitto delle tue conoscenze e provo a porti un'altro quesito:

    la copia attualmente avviene via SSH.

    il problema è che lanciano l'attuale script di copy, questo per andare avanti chiede la password, per la precisione 3 volte.

    una per il check dei file sul sistema remoto sul quale fare la copia, una per eliminare quei file se ci fossero, ed una per effettuare l'effettiva copia.

    questo è lo script:


    DEBUG=
    VM_ROOT_FOLDER="/var/lib/vmware/virtual"
    VM_USERNAME=root
    VM_HOST=gpvm02
    RM_COMMAND=/bin/rm
    LIST_FILES='ls -1 '
    CHECK_NUM='cut -f2 -d \" \"'
    FILES_NUMBER=0

    function check_error(){

    if [ $1 -eq 0 ]
    then
    echo "$2 completed"
    else
    echo "$2 error"
    exit $1
    fi
    }


    case $? in
    0)vmpaths="Zabbix-1.3.8-ubuntu"
    VM_FULL_PATH=${VM_ROOT_FOLDER}/${vmpaths}
    if [ -d ${VM_FULL_PATH} ]
    then
    echo "Check if there are files in ${VM_FULL_PATH}"
    if [ $(ssh ${VM_USERNAME}@${VM_HOST} "${LIST_FILES} ${VM_FULL_PATH}"|wc -l) -gt 0 ]
    then
    echo "Now deleting ${VM_FULL_PATH}/*"
    ${DEBUG} ssh ${VM_USERNAME}@${VM_HOST} "${RM_COMMAND} ${VM_FULL_PATH}/*"
    check_error $? delete
    else
    echo "No files to delete in ${VM_FULL_PATH}"
    fi
    echo "Now copying ${VM_FULL_PATH}/*"
    ${DEBUG} scp -rp ${VM_FULL_PATH} ${VM_USERNAME}@${VM_HOST}:${VM_ROOT_FOLDER}
    check_error $? copy
    fi;;
    1)exit;;
    esac


    mi chiedevo se era possibile passare anche la password via variabile, come per l'utente e l'host:

    VM_USERNAME=root
    VM_HOST=gpvm02

    in modo che non mi chieda più la password e che possa fare tutto da solo.
    premetto che può passare anche in chiaro la password, non ho queste limitazioni


    grazie 1000 per l'aiuto
    L'italia è una repubblica mediatica basata sulla corruzione e sulla mafia.

    "Non sono i popoli a dover aver paura dei propri governi, ma i governi che devono aver paura dei propri popoli.." Thomas Jefferson.

  4. #4
    Dovrebbe essere qualcosa del tipo:
    codice:
    pass="password"
    echo $pass | sudo -S comando
    per eseguire comando come root senza che richieda la password.


  5. #5
    Utente di HTML.it L'avatar di mardux
    Registrato dal
    Apr 2003
    Messaggi
    1,655
    ok. risolto in modo pulito tramite chiavi.

    qui la soluzione se può essere utile a qualcuno:

    http://www.tek-tips.com/viewthread.c...1347561&page=1

    praticamente configurando l'autenticazione SSH tra 2 macchine tramite chiavi, non chiede più la password, e quindi si può implementare in script schedulati o simili.

    cmq grazie a menphisx.

    L'italia è una repubblica mediatica basata sulla corruzione e sulla mafia.

    "Non sono i popoli a dover aver paura dei propri governi, ma i governi che devono aver paura dei propri popoli.." Thomas Jefferson.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.