Como um script de shell pode saber que ele é executado em uma zona solaris?
-
03-07-2019 - |
Pergunta
Um script de shell instala e configura alguns serviços e aplicativos em uma instância do Solaris. Um desses serviços é o NTP - mas o NTP não pode ser executado em uma zona não global (bem, ele pode, mas o XNTPD falha quando tenta ajustar o relógio; em vez disso, a zona herda o tempo da zona global).
Como um script de shell pode dizer que ele está realmente sendo executado em uma zona solaris não global, para que possa pular a etapa de configuração do NTP nesses casos?
Solução
Usar zonename(1)
. Na zona global (ou em um servidor independente sem zonas), isso retornará a string global
.
NAME
zonename - print name of current zone
SYNOPSIS
zonename
DESCRIPTION
The zonename utility prints the name of the current zone.
...
Outras dicas
Você também pode tentar zoneadm list -cv
, na zona global, você verá a saída como:
# zoneadm list -cv
ID NAME STATUS PATH
0 global running /
1 zone1 running /zones/zone1
Considerando que em qualquer outra zona você só veria aquela zona específica, por exemplo,
# zoneadm list -cv
ID NAME STATUS PATH
1 zone1 running /zones/zone1
Bem, se você estiver executando o script interno da zona e querendo garantir que ele esteja funcionando na zona, então execute abaixo o comando
arp -a |grep SP
Você pode ver sua zona global em 1 linha na saída do comando acima. Pode ser útil aplicar a verificação do seu script na base desta saída.