2014-11-18 11 views
5

Hey sono nuovo per gli script di bash e mi chiedevo come avrei catturato l'output del comando ssh in una variabile bash? Mi sono guardato intorno e non riesco a farlo bene. Ho provato mette $expect_out(buffer) ma quando echo si dice variabile non esistecapture expect l'output ssh alla variabile

So che la risposta dovrebbe essere solo una riga e se voglio salvare quella in una variabile response e poi echo è come dovrei farlo?

+0

includere il codice che hai ora e l'uscita esatta stai ottenendo attualmente. –

risposta

4

Un'idea generica può essere qualcosa come in basso.

  1. spawn la sessione ssh
  2. fare buon login
  3. inviare ogni comandi con send
  4. Attendere output desiderato con expect

Esempio:

spawn ssh [email protected]$domain 
expect "password" { send "$pwd\r"} 
expect "#"; # This '#' is nothing but the terminal prompt 
send "$cmd\r" 
expect "#" 
puts $expect_out(buffer); #Will print the output of the 'cmd' output now. 

La parola da attendere dopo l'esecuzione del comando può variare in base al sistema. Può essere # o $ o > o :; Quindi, assicurati di dare quello corretto. In alternativa, è possibile fornire un modello generalizzato per il prompt come tale

set prompt "#|>|:|\\\$"; # We escaped the `$` symbol with backslash to match literal '$' 

Durante l'utilizzo del expect dopo l'invio dei comandi, può essere utilizzato come

expect -re $prompt; #Using regex to match the pattern`