Exemple #1
0
def BuildHistogram():
  filename = cliutils.get_input("File name?")
  timemarks = cliutils.get_input("Time span?", "0s,5d")
  columns = cliutils.get_input("columns?", "1")
  columns = int(columns)
  bins = cliutils.get_input("bins [N, super, zoom]?", "2000")
  legenddata = cliutils.get_input("legend data?", None)

  analyze.PlotHistogram([filename], timemarks=timemarks, columns=columns,
      bins=bins, legenddata=legenddata, interactive=True)
Exemple #2
0
def newpass(argv):
    """Change a users' password.
    newpass [--password=<newpass>] <username>
    """
    try:
        opts, longopts, args = getopt.getopt(argv[1:], "h?")
    except getopt.GetoptError:
        print(newpass.__doc__)
        return
    for opt, optarg in opts:
        if opt in ("-?", "-h"):
            print(newpass.__doc__)
            return
    try:
        username = args[0]
    except IndexError:
        username = cliutils.get_input("Account name? ")

    password = longopts.get("password")
    if not password:
        password = ask_password()
        if not password:
            print("Passwords do not match, exiting.", file=sys.stderr)
            return

    user = models.query(models.User, username=username).one()
    user.password = password
    models.commit()
    update_shadow(username, password)
Exemple #3
0
 def yes_no(self, prompt, default=True):
     while 1:
         yesno = cliutils.get_input(self.prompt_format(prompt), "Y" if default else "N", self._io.raw_input)
         yesno = yesno.upper()
         if yesno.startswith("Y"):
             return True
         elif yesno.startswith("N"):
             return False
         else:
             self.Print("Please enter yes or no.")
Exemple #4
0
 def yes_no(self, prompt, default=True):
     while 1:
         yesno = cliutils.get_input(self.prompt_format(prompt), "Y" if default else "N", self._io.raw_input)
         yesno = yesno.upper()
         if yesno.startswith("Y"):
             return True
         elif yesno.startswith("N"):
             return False
         else:
             self.Print("Please enter yes or no.")
Exemple #5
0
def deleteuser(argv):
    """Delete a user
    deleteuser <username>
    """
    try:
        opts, longopts, args = getopt.getopt(argv[1:], "h?")
    except getopt.GetoptError:
        print(deleteuser.__doc__)
        return
    for opt, optarg in opts:
        if opt in ("-?", "-h"):
            print(deleteuser.__doc__)
            return
    try:
        username = args[0]
    except IndexError:
        username = cliutils.get_input("Account name? ")

    user = models.query(models.User, username=username).one()
    models.delete(user)
    models.close()
    delete_shadow(username)
    shutil.rmtree(user.home, ignore_errors=True)
Exemple #6
0
 def yes_no(self, prompt, default=True):
     yesno = cliutils.get_input(self.format(prompt), IF(default, "Y", "N"), self._io.raw_input)
     return yesno.upper().startswith("Y")
Exemple #7
0
 def get_value(self, prompt, default=None):
     return cliutils.get_input(self.format(prompt), default, self._io.raw_input)
Exemple #8
0
 def yes_no(self, prompt, default=True):
     yesno = cliutils.get_input(self.format(prompt), IF(default, "Y", "N"),
                                self._io.raw_input)
     return yesno.upper().startswith("Y")
Exemple #9
0
 def get_value(self, prompt, default=None):
     return cliutils.get_input(self.format(prompt), default,
                               self._io.raw_input)
Exemple #10
0
 def yes_no(self, prompt, default=True):
     if self.INTERACTIVE:
         yesno = cliutils.get_input(prompt, IF(default, "Y", "N"))
         return yesno.upper().startswith("Y")
     else:
         raise TestIncompleteError, "user input in non-interactive test."
Exemple #11
0
 def get_value(self, prompt, default=None):
     if self.INTERACTIVE:
         return cliutils.get_input(prompt, default)
     else:
         raise TestIncompleteError, "user input in non-interactive test."
Exemple #12
0
def newuser(argv):
    """Create a new user
    newuser [-Mm] [<longopts>] <username>

    Options:
        -M  Do NOT make home directory.
        -m  Only make home directory for existing user with no home directory.

    Where long options are:
        --first_name=<firstname>
        --last_name=<lastname>
        --password=<newpass>
        --shell=<shell>
        --home=<home>
    You will be prompted for missing information.

    This function should be run as root user.
    """
    makehome = True
    onlyhome = False
    try:
        opts, longopts, args = getopt.getopt(argv[1:], "h?Mm")
    except getopt.GetoptError:
        print(newuser.__doc__)
        return
    for opt, optarg in opts:
        if opt in ("-?", "-h"):
            print(newuser.__doc__)
            return
        elif opt == "-M":
            makehome = False
        elif opt == "-m":
            onlyhome = True

    try:
        username = args[0]
    except IndexError:
        username = cliutils.get_input("Account name? ")

    try:
        pwent = passwd.getpwnam(username)
    except KeyError:
        pass
    else:
        if onlyhome:
            make_homedir(pwent.home, pwent.uid, pwent.gid)
            return
        else:
            print("User already exists, exiting.", file=sys.stderr)
            return

    password = longopts.get("password")
    if not password:
        password = ask_password()
        if not password:
            print("Passwords do not match, exiting.", file=sys.stderr)
            return

    # Get maximum UID value from passwd and database, not including system ones.
    uidl = [pwe.uid for pwe in passwd.getpwall() if pwe.uid < 10000]
    dblist = [u.uid for u in models.dbsession.query(models.User).all()]
    uidl.extend(dblist)
    uid = max(uidl) + 1

    first_name = longopts.get("first_name")
    if not first_name:
        first_name = cliutils.get_input("First Name? ")
    last_name = longopts.get("last_name")
    if not last_name:
        last_name = cliutils.get_input("Last Name? ")

    gecos = "{}, {}".format(last_name, first_name)

    shell = longopts.get("shell")
    if not shell:
        shell = cliutils.get_input("Shell? ", default="/bin/sh")

    home = longopts.get("home")
    if not home:
        home = cliutils.get_input("Homedir? ", default="/home/{}".format(username))

    email = longopts.get("email")
    if not email:
        email = cliutils.get_input("Email? ")

    primary_grp = models.dbsession.query(models.Group).filter(models.Group.groupname == "users").one()
    glist = models.dbsession.query(models.Group).all()
    glist.remove(primary_grp)
    sup_groups = cliutils.choose_multiple(glist, prompt="Extra groups?")

    superuser = cliutils.yes_no("Is admin?")

    user = models.create(
        models.User,
        username=username,
        uid=uid,
        gid=primary_grp.gid,
        gecos=gecos,
        first_name=first_name,
        last_name=last_name,
        shell=shell,
        homedir=home,
        email=email,
        is_superuser=superuser,
        is_active=True,
    )
    user.password = password
    models.dbsession.add(user)
    models.dbsession.commit()
    user.groups = sup_groups
    models.dbsession.commit()
    new_shadow(username, password)
    if makehome:
        make_homedir(home, user.uid, user.gid)
    return user
Exemple #13
0
 def yes_no(self, prompt, default=True):
     if self.INTERACTIVE:
         yesno = cliutils.get_input(prompt, IF(default, "Y", "N"))
         return yesno.upper().startswith("Y")
     else:
         raise TestIncompleteError, "user input in non-interactive test."
Exemple #14
0
 def get_value(self, prompt, default=None):
     if self.INTERACTIVE:
         return cliutils.get_input(prompt, default)
     else:
         raise TestIncompleteError, "user input in non-interactive test."