Open Source im professionellen Einsatz

Die Programmieraufgabe

Listing 2 schlägt eine Lösung für die Aufgabenstellung aus der Einleitung dieser Titelstrecke in Python vor. Zunächst definiert »def« die Funktion »createAccount()« , die sich des Useradd-Kommandos bedient. Dann folgt die Prüfung, ob das Skript als Root läuft (mit »os.getuid()« . Das eingangs geladene Modul »csv« ermöglicht den Umgang mit der CSV-Datei, die Zeile 21 einliest. Die Schleife ab Zeile 23 erledigt anschließend die verlangten Prüfungen, ehe »createAccount()« in Zeile 41 den User anlegt.

Listing 2

aufgabe.py

01 #!/usr/bin/python
03 import csv
04 import sys
05 import os
06 import re
07 import subprocess
08 import pwd
10 def createAccount(username, lastname, firstname):
11  return subprocess.call(['useradd', '-m', username, '-c', '%s, %s' % (lastname, firstname), '-U', '-s', '/bin/bash'])
13 if os.geteuid() != 0:
14  print "You must run this program as root"
15  exit(1)
17 if len(sys.argv) != 2:
18  print "Usage: %s <input.csv>" %
(sys.argv[0])
19  exit(1)
21 input = csv.reader(open(sys.argv[1]))
23 for row in input:
24  if len(row) != 3:
25   print "Line %d: Not enough data" %
input.line_num
26   continue
28  (username, lastname, firstname) = row
30  if not re.match('^[a-z][a-z0-9]+$', username):
31   print "Line %d: Login name must start with a letter, and contain only letters and numbers" % input.line_num
32   continue
34  try:
35   pwd.getpwnam(username)
36   print "Line %d: Account '%s' already exists" % (input.line_num, username)
37   continue;
38  except KeyError:
39   pass
40  createAccount(username, lastname, firstname)

Der Autor

Steve Hardy ist Chief Technology Officer und Entwicklungsleiter bei Zarafa und war einer der Gründer des deutsch-holländischen Groupwareherstellers.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook