Usando o comando de script para o script de instalação no AIX

3

Eu tenho um script de instalação para o meu software e preciso executá-lo em ambos, Linux e AIX.

No Linux, posso usar um wrapper myinstaller.ksh como este:

#!/usr/bin/ksh
script -c myrealinstaller.ksh /var/log/myinstaller.log

Mas no AIX script não suporta o -c opção .

Como posso executar meu myrealinstaller.ksh dentro do shell bifurcado criado pelo script?

    
por Patrick 15.03.2018 / 13:45

1 resposta

1

Você pode aprimorar seu script de wrapper para detectar o sistema operacional; se ele estiver em execução no Linux, execute script -c ... , mas se estiver em execução no AIX, forneça ao shell de script um perfil substituído que apenas executa seu instalador e, em seguida, sai:

$ cat myinstaller.ksh
#!/usr/bin/ksh

case $(uname -s) in
  (Linux)
        script -c myrealinstaller.ksh /var/log/myinstaller.log
        ;;
  (AIX)
        printf "ENV= ./myrealinstaller.ksh\nexit\n" > ./installer.profile
        trap 'rm -f ./installer.profile' INT
        ENV=./installer.profile script -q ./var/log/myinstaller.log
        rm ./installer.profile
        ;;
esac

Eu ajustei os caminhos para o script e os logs para testá-lo localmente. Os outros fatores envolvidos são:

  • definindo ENV para apontar para o perfil substituído como chamamos script
  • chamando script com -q para acalmar um pouco
  • importante, desativando ENV durante a chamada para o instalador real, para que não façamos um loop infinitamente
  • informando ao perfil substituído para sair assim que o instalador for concluído

Com uma amostra myrealinstaller.ksh de:

#!/bin/ksh
echo Hi, I am the real installer

O conteúdo de ./var/log/myinstaller.log é:

Script command is started on Thu Mar 15 09:34:04 2018.
Hi, I am the real installer


Script command is complete on Thu Mar 15 09:34:04 2018.
    
por 15.03.2018 / 14:38