diff --git a/cccli/command/host.py b/cccli/command/host.py
index 5c749dd37657d482d859c7950b36c5e63e07ccad..c5bf1b9e818485097a4010c980fce02995e1d307 100644
--- a/cccli/command/host.py
+++ b/cccli/command/host.py
@@ -6,7 +6,7 @@ CloudControl physical host related commands
 from cccli.exception import *
 from sjrpc.core.exceptions import *
 from cccli.printer import Printer, color
-from cccli.command.command import Command
+from cccli.command.command import Command, OptionCommand
 
 class Command_exec(Command):
     '''Execute a command on the remote host'''
@@ -21,15 +21,27 @@ class Command_exec(Command):
     def usage(self):
         return "Usage: exec <tql> <command>"
 
-class Command_shutdown(Command):
+class Command_shutdown(OptionCommand):
     '''Shutdown a physical host'''
+
+    def __init__(self, cli, argv0):
+        OptionCommand.__init__(self, cli, argv0)
+        self.option.set_usage("%prog [options] <tql>")
+        self.option.add_option("-r", "--reboot", action="store_true", dest="reboot",
+                                help="Reboot after shutdown (default)")
+        self.option.add_option("-H", "--halt", action="store_false", dest="reboot",
+                                help="Halt after shutdown")
+        self.option.add_option("-n", action="store_false", dest="graceful", default=True,
+                               help="do not go through init but go down real fast")
+
     def __call__(self, argv):
-        if len(argv) != 2:
+        try:
+            (options, args) = self.option.parse_args(argv[1:])
+        except SystemExit:
+            return
+        if len(args) != 1:
             raise cmdBadArgument()
         try:
-            self.cli.rpc.call("shutdown", argv[1])
+            self.cli.rpc.call("shutdown", args[0], options.reboot, options.graceful)
         except RpcError as e:
             raise cmdError("RPCError: %s"%str(e))
-
-    def usage(self):
-        return "Usage: shutdown <tql>"