Mac OS X,  Mac OS X Server,  Xsan

Using the xsanadmin Command

There are some commands where you just have to wonder why. Sure, I see what this command does, but why bother? Well, I’m not going to say that xsanadmin is one of those commands, but I’m not going to say that it isn’t. At first glance, you might think that the list, stop, start and other verbs look promising. Like maybe you can actually administer a volume from a much simpler to use command line interface. However, if you want a quick and dirty of what xsanadmin does, look no further than just running the command without any verbs or operators:

xsanadmin

The result is help information from the serveradmin command:

Usage: serveradmin [-dhvx] [list | start | stop | status | fullstatus | settings | command] [<service_key> [ = <value> ]]
-h, --help display this message
-v, --version display version info
-d, --debug print command
-x, --xml print output as XML plist
Examples:
serveradmin list
--Lists all services
serveradmin start afp
--Starts afp server
serveradmin stop ftp
--Stops ftp server
serveradmin status web
--Returns current status of the web server
serveradmin fullstatus web
--Returns more complete status of the web server
serveradmin settings afp
--Returns all afp configuration parameters
serveradmin settings afp:guestAccess
--Returns afp guestAccess attribute
serveradmin settings afp:guestAccess = yes
--Sets afp guestAccess to true
serveradmin settings
--Takes settings commands like above from stdin
serveradmin command afp:command = getConnectedUsers
--Used to perform service specific commands
serveradmin command
--Takes stdin to define generic command that requires other parameters

Why’s that? Because all the command is doing is piping information to and from the serveradmin command, thus the verbs are basically the same: list, status, fullstatus, etc. To see which services, let’s pipe settings for all to a file:

xsanadmin settings all > xsanadminsettings.txt

Here, you’ll notice that you have settings for the xsan/san service, file sharing and info. That’s it. You may be asking yourself, “why did you write this article then?” My answer would be that I’m not really sure. Mostly because I wasted my time trying to see if I could do cool stuff with this command and it turns out I can’t…