Comment un script shell peut-il savoir qu'il s'exécute dans une zone Solaris?
-
03-07-2019 - |
Question
Un script shell installe et configure certains services et applications dans une instance Solaris. L'un de ces services est NTP - mais NTP ne peut pas s'exécuter dans une zone non globale (bien sûr, mais xntpd échoue lorsqu'il tente d'ajuster l'horloge. Au lieu de cela, la zone hérite de l'heure de la zone globale).
Comment un script shell peut-il savoir qu'il est effectivement exécuté dans une zone Solaris non globale, afin de pouvoir ignorer l'étape de configuration NTP dans ces cas?
La solution
Utilisez nom_zone (1)
. Dans la zone globale (ou sur un serveur autonome sans aucune zone), la chaîne global
sera renvoyée.
NAME
zonename - print name of current zone
SYNOPSIS
zonename
DESCRIPTION
The zonename utility prints the name of the current zone.
...
Autres conseils
Vous pouvez également essayer zoneadm list -cv
. Dans la zone globale, le résultat s'affiche:
# zoneadm list -cv
ID NAME STATUS PATH
0 global running /
1 zone1 running /zones/zone1
alors que dans toute autre zone, vous ne verrez que cette zone particulière, par exemple
.# zoneadm list -cv
ID NAME STATUS PATH
1 zone1 running /zones/zone1
Eh bien, si vous exécutez un script dans la zone et souhaitez vous assurer qu'il s'exécute dans une zone, exécutez-le sous la commande
.arp -a |grep SP
Vous pouvez voir votre zone globale sur 1 ligne à la sortie de la commande ci-dessus. Il peut être utile d’appliquer check dans votre script sur la base de cette sortie.