Come può uno script di shell sapere che funziona in una zona di Solaris?
-
03-07-2019 - |
Domanda
Uno script di shell installa e configura alcuni servizi e applicazioni in un'istanza di Solaris. Uno di questi servizi è NTP - ma NTP non può essere eseguito in una zona non globale (ma può farlo, ma xntpd fallisce quando tenta di regolare l'orologio; invece la zona eredita l'ora dalla zona globale).
In che modo uno script di shell può dire che è effettivamente in esecuzione in una zona Solaris non globale, in modo che possa saltare il passaggio di configurazione NTP in quei casi?
Soluzione
Usa zonename (1)
. Nella zona globale (o su un server autonomo senza zone), questo restituirà la stringa global
.
NAME
zonename - print name of current zone
SYNOPSIS
zonename
DESCRIPTION
The zonename utility prints the name of the current zone.
...
Altri suggerimenti
Puoi anche provare zoneadm list -cv
, nella zona globale vedrai un output come:
# zoneadm list -cv
ID NAME STATUS PATH
0 global running /
1 zone1 running /zones/zone1
mentre in qualsiasi altra zona vedresti solo quella particolare zona, ad esempio
# zoneadm list -cv
ID NAME STATUS PATH
1 zone1 running /zones/zone1
Bene, se stai eseguendo script all'interno della zona e vuoi assicurarti che sia in esecuzione sulla zona, esegui sotto il comando
arp -a |grep SP
Puoi vedere la tua zona globale in 1 riga all'output del comando sopra. Potrebbe essere utile applicare il controllo nel tuo script sulla base di questo output.