docs: def account(self, username, flags, arguments=[],
                  authen_type=TAC_PLUS_AUTHEN_TYPE_ASCII, priv_lvl=TAC_PLUS_PRIV_LVL_MIN,
                  rem_addr=TAC_PLUS_VIRTUAL_REM_ADDR, port=TAC_PLUS_VIRTUAL_PORT):
          """
          Account with a TACACS+ server.
  
          :param username:
          :param flags:          TAC_PLUS_ACCT_FLAG_START,
                                 TAC_PLUS_ACCT_FLAG_WATCHDOG,
                                 TAC_PLUS_ACCT_FLAG_STOP
          :param arguments:      The authorization arguments
          :param authen_type:    TAC_PLUS_AUTHEN_TYPE_ASCII,
                                 TAC_PLUS_AUTHEN_TYPE_PAP,
                                 TAC_PLUS_AUTHEN_TYPE_CHAP
          :param priv_lvl:       Minimal Required priv_lvl.
          :param rem_addr:       AAA request source, default to TAC_PLUS_VIRTUAL_REM_ADDR
          :param port:           AAA port, default to TAC_PLUS_VIRTUAL_PORT
          :return:               TACACSAccountingReply
          :raises:               socket.timeout, socket.error
          """
          with self.closing():
              packet = self.send(
                  TACACSAccountingStart(username, flags,
                                        TAC_PLUS_AUTHEN_METH_TACACSPLUS,
                                        priv_lvl, authen_type, arguments,
                                        rem_addr=rem_addr, port=port),
                  TAC_PLUS_ACCT
              )
              reply = TACACSAccountingReply.unpacked(packet.body)
              logger.debug('\n'.join([
                  reply.__class__.__name__,
                  'recv header <%s>' % packet.header,
                  'recv body <%s>' % reply
              ]))
          return reply