Automatizando a instalação do postfix

2

Eu tenho tentado instalar automaticamente o postfix de uma maneira não interativa via script de inicialização na inicialização da máquina.

Após um pouco de pesquisa, descobri uma sugestão de que eu poderia tentar instalá-lo manualmente em uma máquina de amostra usando as configurações desejadas e obter as respostas corretas sobre as configurações quando o script de inicialização estiver sendo executado usando

debconf-utils package command debconf-get-selections | grep postfix >preseed.cfg

O problema é com uma configuração que é o nome de correio que é devido ao fato de que minhas máquinas de instância são geradas de uma maneira não predeterminada pelo host de nuvem gcp. Eu não posso dizer antecipadamente qual nome passar quando eu passar inicialmente. primeira seleção de configuração como:

debconf-set-selections <<< 'postfix postfix/main_mail_type string "Local only" 

Agora, a questão é como é que podemos deixar o valor padrão? (qual deles pode ver se foi uma instalação assistida e simplesmente clique ok para finalizar)

    
por Benedict 06.11.2018 / 12:37

1 resposta

0

Obrigado Kusalananda! Eu acho que agora eu entendo onde está o bug. Antes deste bug aparecer, eu tentei usar alguns scripts de espera e gerar subscript bash dentro dele como uma forma indireta de instalar o postifiX interativamente através de séries de pares de perguntas e respostas. Mais tarde, decidi alterar esse plano e removi o script de expectativa completamente e mudei para DEBIAN_FRONTEND="noninteractive" with debconf-set-selections command . Agora, o problema como aprendi em alguns posts deste site foi obviamente devido a chamar os restos modificados deste subscrito bash com o comando su (como você deve saber que a instalação do postfix deveria ser executada com privilégios de root) dentro do script de inicialização principal. vez que rodou, ele emitiu uma exceção ao chamar este subscrito com a mensagem 'ERROR OPENNING TERMINAL: UKNOWN'. Depois que eu revisei alguns posts aqui, descobri que poderia resolver isso modificando o código de subscrito introduzindo algum código como ilustrado abaixo

UID=$(ID -U)
if [xUID != x0]
then 
printf -v cmd_str '%q'"$0" "$@" 
exec su -c "$cmd_str"
fi
#the rest of the script code
#continues hereunder

Depois de fazer alterações no subscrito; removendo sua declaração, seu chmod de ativação, sua chamada via comentando excluindo sua linha #! / bin / bash e incluindo suas partes funcionais processualmente no script de inicialização principal agora o script está rodando como supostamente deveria.

    
por 07.11.2018 / 20:09