Script bash x test

di il
7 risposte

Script bash x test

Ciao a tutti,
devo testare un sw (eseguire molte operazioni di inserimento, rimozione ecc.) e vorrei farlo tramite uno script, il problema è che una volta lanciato il programma, tramite lo script, i comandi per testarlo dovono essere eseguiti all'interno della console del sw; come faccio/si può fare?


es.
[ecthelion@localhost ~]$ comando -argomenti
.........
.........
avvio e inizializzazioni varie
.........
.........
CLI> qui digito i comandi specifici del sw

grazie

7 Risposte

  • Re: Script bash x test

    In linea teorica sì, utilizzando expect, che serve proprio a creare questo tipo di script.

    Come alternativa c'è anche empty.
  • Re: Script bash x test

    Innanzitutto GRAZIE stan!

    quindi ho letto il man e ho cercato in giro anche se un vero e proprio manuale non l'ho frovato cmq ho prodotto un primo abbozzo di scrit

    #!/usr/bin/expect -f

    set timeout -1
    spawn asterisk -vvvvvvvvvvvccccccccccccccccggggggggg
    expect \"*CLI>\\r\" {send \"help\\r\"}

    che però nn funzia; il programma (asterisk) parte ed esegue la fase di iniz. e creazione db ma quando finisce e propone il prompt *CLI>, al quale dovrei inserire i comandi, non esegue nulla (in questo caso il comando è help).

    ho provato diverse combinazioni, con il send su una riga a parte , con il tutto all'interno di un blocco racchiuso tra graffe dopo il com expect, ma il risultato è sempre lo stesso

    please help me!
  • Re: Script bash x test

    ecthelion ha scritto:


    ho prodotto un primo abbozzo di scrit

    #!/usr/bin/expect -f

    set timeout -1
    spawn asterisk -vvvvvvvvvvvccccccccccccccccggggggggg
    expect "*CLI>\\r" {send "help\\r"}

    che però nn funzia; il programma (asterisk) parte ed esegue la fase di iniz. e creazione db ma quando finisce e propone il prompt *CLI>, al quale dovrei inserire i comandi, non esegue nulla (in questo caso il comando è help).
    Così ad occhio, proverei a togliere il \\r dopo il prompt CLI>, perché altrimenti expect ricerca il prompt e anche un carattere di invio, che ovviamente non c'è/ci sarà mai.

    Comunque, secondo me fai prima a usare lo script autoexpect (incluso nel pacchetto che hai installato) per crearti l'ossatura del tuo script se non lo script per intero.

    In pratica basta che lanci il comando:
    
    autoexpect -f nome_script asterisk -vvvvvvvvvvvccccccccccccccccggggggggg
    
    ed eseguire una breve sessione, basterebbe anche solo dargli il comando di uscita (da asterisk) per ottenere uno script di base che poi puoi modificare/editare secondo le tue esigenze, cioè aggiungendo altri comandi da inviare ad asterisk ad esempio.
    Nello script che ottieni in genere viene usata la ricerca esatta dello schema tramite l'opzione -exact, ma per avere maggiore flessibilità ti consiglio di toglierla.
  • Re: Script bash x test

    Lo scoglio del passaggio dei comandi l'ho superato
    Il mio problema è ora che non riesco ad ottenere risultati in termini temporali significativi; ho provato ad usare timestamp , per ottenere i seconti trascorsi, prima e dopo il ciclo for che invia i comandi, facendo quindi la differenza, ma non ottengo i risultati attesi.

    ho provato così:
    #!/usr/bin/expect

    set timeout -1

    spawn asterisk -vvvvvvvvvvvccccccccccccccccggggggggg

    set time1 [timestamp]

    for {set count 0} {$count < 100} {incr count 1} {
    expect \"*CLI> \" {send \"add extension test$count,1,TEST,TEST into context$count\\r\"}
    }

    set time2 [timestamp]
    send \"$time1\\n$time2\\n\"
    set difftime [expr $time2 - $time1]
    send \"delta time: $difftime\\n\"

    expect \"*CLI> \" {send \"show dialplan test30@context30\\r\"}
    expect \"*CLI> \" {send \"stop now\\r\"}
    expect eof

    consigli?
    ciao grazie
  • Re: Script bash x test

    ecthelion ha scritto:


    non riesco ad ottenere risultati in termini temporali significativi; ho provato ad usare timestamp , per ottenere i seconti trascorsi, prima e dopo il ciclo for che invia i comandi, facendo quindi la differenza, ma non ottengo i risultati attesi.
    Scusa, non ho capito cosa intendi per "risultati in termini temporali significativi", quali sono quelli attesi?
  • Re: Script bash x test

    Avrei bisogno di misurare il tempo impiegato per l'esecuzione dei comandi.
    in particolare il tempo impiegato per l'esecuzione del ciclo for.

    eseguendolo realmente, dopo la fase di avvio e inizializzazione, i comandi inviati dal ciclo vengono eseguiti in meno di un minuto ma il valore di difftime risulta attorno a 800, che indicando i secondi sarebbe inconpatibile con il tempo reale.

    dovendo confrontare due versioni del sw ed in funzione anche del tempo valutarne i miglioramenti ho bisogno dei valori dei tempi.

    spero di essere stato un po' più chiaro
    grazie ciao
  • Re: Script bash x test

    Non conosco asterisk, però ho provato a installarlo e a eseguire il tuo script (leggermente modificato) e sul mio sistema sembra funzionare, ottengo un delta di 3 secondi.

    Lo script è questo (ho modificato solo quelle che penso siano delle istruzioni diagnostiche e non dei comandi ad asterisk):
    
    #!/usr/local/bin/expect
    
    set timeout -1
    
    spawn asterisk -vvvvvvvvvvvccccccccccccccccggggggggg
    
    set time1 [timestamp]
    
    for {set count 0} {$count < 100} {incr count 1} {
        expect \"*CLI> \" {
    	    send \"add extension test$count,1,TEST,TEST into context$count\\r\"
        }
    }
    
    set time2 [timestamp]
    send_user \"$time1\\n$time2\\n\"
    set difftime [expr $time2 - $time1]
    
    
    expect \"*CLI> \" {send \"show dialplan test30@context30\\r\"}
    expect \"*CLI> \" {send \"stop now\\r\"}
    expect eof
    send_user \"delta time: $difftime\\n\"
    
    Comunque credo sia incompleto come script, perché asterisk segnala un errore ad ogni comando del ciclo: no existence of 'context, oppure, più probabilmente, sono io che non lo so usare.
Devi accedere o registrarti per scrivere nel forum
7 risposte