macOS Server 5.2 (for Sierra) comes with the /usr/sbin/serverinfo command (introduced in Mountain Lion Server). The serverinfo command is useful when programmatically obtaining information about the very basic state of an Apple Server.
The first option indicates whether the Server app has been downloaded from the app store, which is the –software option:
serverinfo --software
When used, this option reports the following if the Server.app can be found:
This system has server software installed.
Or if the software cannot be found, the following is indicated:
This system does NOT have server software installed.
The –productname option determines the name of the software app:
serverinfo --productname
If you change the name of the app from Server then the server info command won’t work any longer, so the output should always be the following:
Server
The –shortversion command returns the version of the Server app being used:
serverinfo --shortversion
The output will not indicate a build number, but instead the version of the app on the computer the command is run on:
5.2
To see the build number (which should iterate with each update to the Server app from the Mac App Store, use the –buildversion option:
serverinfo --buildversion
The output shows the build of server, which doesn’t necessarily match the OS X build number:
16S1195
Just because the Server app has been downloaded doesn’t mean the Server setup assistant has been run. To see if it has, use the –configured option:
serverinfo --configured
The output indicates whether the system is running as a server or just has the app installed (e.g. if you’re using it to connect to another server:
This system has server software configured.
You can also output all of the information into a single, easy to script against property list using the –plist option:
serverinfo --plist
The output is a list of each of the other options used:
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>IsOSXServerVolume</key>
<true/>
<key>IsOSXServerVolumeConfigured</key>
<true/>
<key>IsServerHardware</key>
<false/>
<key>LocalizedServerProductName</key>
<string>Server</string>
<key>MinimumServerVersionAllowed</key>
<string>5.0.19</string>
<key>ServerBuildVersion</key>
<string>16S1195</string>
<key>ServerPerformanceModeEnabled</key>
<false/>
<key>ServerVersion</key>
<string>5.2</string>
</dict>
</plist>
The Server Root can reside in a number of places. To see the path (useful when scripting commands that are relative to the ServerRoot:
serverinfo –prefix
By default, the output is as follows, which is basically like a dirname of the ServerRoot:
/Applications/Server.app/Contents/ServerRoot
You can also see whether the system is running on actual hardware desgnated by Apple for servers using the –hardware option:
serverinfo --hardware
The output simply indicates if the hardware shipped with OS X Server on it from Apple:
This system is NOT running on server hardware.
The –perfmode option indicates whether or not the performance mode has been enabled, dedicating resources to binaries within the Server app:
serverinfo --perfmode
If the performance mode has not been enabled then the output will be as such:
Server performance mode is NOT enabled.
To enable performance mode, you can also use serverinfo. This is the only task that the command does that can make any changes to the system and as such is the only time you need to elevate privileges:
sudo serverinfo —setperfmode 1
Note: This isn’t really working for me right now, but I filed a radar and guessing it will shortly.
Or set the boolean value back to 0 to disable.
sudo serverinfo —setperfmode 0
Note: This isn’t really working for me right now, but I filed a radar and guessing it will shortly.