Compilando Xen-3.3.1

2 views
Skip to first unread message

marcosmilk

unread,
Jun 30, 2009, 12:20:51 PM6/30/09
to xen-br
Boa tarde.

Estou criando um script de instalação do Xen-3.3.1, onde esse script
baixa e compila e joga a saida da compilacao para um arquivo "/tmp/
comp_xen" verifica se tem algum error e caso tenha erros aborta a
instalação, caso não encontre nenhum erro o script continua com a
instalação até finalizar com reboot do sistema operacional para que em
seguida seja criada as maquinas virtuais.

Desejo saber se tem alguma maneira de na compilação ele responder as
pergunta automaticamente, algum default para as respostas.

Agradeço pela ajuda.

Abraço!!!

Rogerio Ferreira

unread,
Jun 30, 2009, 12:30:21 PM6/30/09
to xen...@googlegroups.com
Você pode usar expect, segue abaixo um exemplo de expect, respondendo a um ssh e scp:

#!/bin/sh
# Autor: Rogerio Ferreira

HOST="$1"
USER="$2"
PASS="$3"
DIR_SRC="$4"
DIR_DST="$5"
DATE=$(date --date='yesterday' +'%F')
EXT="$6"

conn_ssh_list() {
  expect -c "
    set timeout -1
    spawn ssh $USER@$HOST ls -ltr --full-time $DIR_SRC/*.$EXT
    expect \"*assword: \" {send \"$PASS\r\"}
  expect eof"
}

conn_ssh_copy() {
  FILES=$(conn_ssh_list | grep $DATE | awk '{print $9}')
 
  for FILE in $FILES
  do
    expect -c "
      set timeout -1
      spawn scp $USER@$HOST:$FILE $DIR_DST/
      expect \"*assword: \" {send \"$PASS\r\"}
    expect eof"
  done
}

conn_ssh_copy

No script acima, o comando ssh e scp solicitam que o usuário entre com uma senha e enter. Então quando qualquer comando do seu script solicitar alguma intervenção humana, usa expect.

Para instalar expect do debian: aptitude install expect
No CentOS: yum install expect

--
Rogerio Ferreira
http://rogerioferreira.objectis.net
--------------------------------------------------------
LPI 302 (Mixed Environment) Specialty
Senior Level Linux Professional (LPIC-3)
Advanced Level Linux Professional (LPIC-2)
Junior Level Linux Professional (LPIC-1)

2009/6/30 marcosmilk <marco...@gmail.com>

marcosmilk

unread,
Jun 30, 2009, 1:15:55 PM6/30/09
to xen-br
Rogério!

Primeiramente muito obrigado por responder

Veja se entendi.

Terei q fazer o Make world da seguinte maneira?

expect -c "make world"

São várias perguntas feitas durante a compilação onde a resposta
default d algumas perguntas é N e outras perguntas Y, dentre outras
opções.

O "-c" seria para respostas default mesmo?
> Rogerio Ferreirahttp://rogerioferreira.objectis.net
> --------------------------------------------------------
> LPI 302 (Mixed Environment) Specialty
> Senior Level Linux Professional (LPIC-3)
> Advanced Level Linux Professional (LPIC-2)
> Junior Level Linux Professional (LPIC-1)
>
> 2009/6/30 marcosmilk <marcosm...@gmail.com>

Rogerio Ferreira

unread,
Jun 30, 2009, 1:23:47 PM6/30/09
to xen...@googlegroups.com
expect -c "
    set timeout -1
    spawn make world
    expect \"*yesno \" {send \"Y\r\"}
expect eof"

Vamos supor que a após o comando make world, o prompt que irá aparecer será yesno, pedindo um confirmação com Y ou N. A instrução expect espera pela string de um prompt qualquer e a instrução send envia a solicitação.

2009/6/30 marcosmilk <marco...@gmail.com>



--
Rogerio Ferreira

marcosmilk

unread,
Jun 30, 2009, 2:32:09 PM6/30/09
to xen-br
E no caso quando dou o comando make world ele possui várias perguntas,
ae ficaria tipo:
set timeout -1
> spawn *make world*
> expect \"**yesno* \" {send \"*Y*\r\"}
expect \"**yesno* \" {send \"*Y*\r\"}
expect \"**yesno* \" {send \"*y*\R\"}
> expect eof"

um expect para cada pergunta q ele me envia?

E tem alguma meneira dele jah responder a opção default? É q tem
alguma opçoes em q a resposta é "Y\n\m "outras perguntas a resposta é
"y\n\M" e outras perguntas a resposta é "y\n\N", tem alguma maneira
dele já passar a default?



On 30 jun, 14:23, Rogerio Ferreira <rogerio...@gmail.com> wrote:
> expect -c "
>     set timeout -1
>     spawn *make world*
>     expect \"**yesno* \" {send \"*Y*\r\"}
> expect eof"
>
> Vamos supor que a após o comando make world, o prompt que irá aparecer será
> yesno, pedindo um confirmação com Y ou N. A instrução expect espera pela
> string de um prompt qualquer e a instrução send envia a solicitação.
>
> 2009/6/30 marcosmilk <marcosm...@gmail.com>

gunther boeckmann

unread,
Jun 30, 2009, 7:30:52 PM6/30/09
to xen...@googlegroups.com
Pessoal, sugiro vocês discutirem questões de shell script diretamente apenas entre vocês.

Abraços,
Gunther


2009/6/30 marcosmilk <marco...@gmail.com>
Reply all
Reply to author
Forward
0 new messages