Instalação de um pacote com parâmetros sendo solicitados no cli

3

Digamos que eu precise instalar um pacote usando dpkg -i , que solicitaria ao usuário alguns valores, como nome de usuário e senha.

Eu posso facilmente fazer isso a partir do terminal e prosseguir com a instalação.

Mas seguindo este plano eu não posso automatizar a instalação, por exemplo se eu quiser escrever um script para a instalação de um pacote que leve os parâmetros interativamente.

Portanto, eu quero um plano de instalação do dpkg que seja interativo (solicitando nome de usuário e senha), mas ainda possa ser chamado de um script para que o processo de instalação seja automatizado.

Como posso fazer isso? Existem alternativas?

    
por user207475 25.10.2013 / 13:55

2 respostas

3

Para essas coisas, você pode escrever um script expect . Não é muito difícil de lidar.

Primeiro você tem que instalar o intérprete:

apt-get install expect

Então você pode escrever algo assim, por exemplo:

#!/usr/bin/expect -f
set timeout 30
set password "pass"
set username "user"

#run the command
spawn dpkg -i package.deb

# Look for username prompt
expect "*?sername:*" #<--- this statement is important it wait's for a prompt "username:"
send "$username\r"

# Look for passwod prompt
expect "*?assword:*" #<--- the same with the "password:" prompt
send "$password\r"

#dpkg -i continues

O script deve ser executável, é claro. Esperar é perfeito para controlar programas terminais interativos via script (ssh, ftp, ...)

    
por chaos 25.10.2013 / 14:57
3

Você pode criar um arquivo de pré-configuração usando ferramentas no pacote debconf-utils. Você pode criar um arquivo de pré-configuração manualmente com:

<owner> <question> <type> <value> 

ou como exemplo:

my-package username string Bob
my-package password string I$aN1ceGuy

Mais fácil é instalá-lo em sua máquina e executar:

debconf-get-selections | grep my-package

Use a saída para criar um arquivo.

Depois de ter o arquivo, use:

debconf-set-selections <filename>.  
dpkg -i my-package

As seleções listadas no nome do arquivo serão usadas por padrão e o pacote será instalado silenciosamente.

link

    
por Jeffery Williams 25.10.2013 / 15:11