adduser per Skript steuern

Direkte Linux-Programmierung, POSIX
Antworten
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

adduser per Skript steuern

Beitrag von Dirty Oerti » So Feb 08, 2009 10:06 pm

Tag :)

Ich möchte adduser gerne per Skript steuern.
Wenn ich adduser nun "normal" aufrufe, werde ich ja allerlei Dinge (Passwort 2x, Voller Name etc) gefragt.
Nun muss ich solch eine Eingabe ein paar Tausendmal machen.

Ich kann mir dafür ein Skript generieren.
Das sieht zur Zeit etwa so aus:

Code: Alles auswählen

echo "<PASSW>\n<PASSW>\n<FULL NAME>\n<ETC>\n<ETC>\n<ETC>\n<ORG>\n<JA>\n" | sudo adduser <NAME>
Das Problem liegt aber daran, dass man adduser glaube ich so nicht steuern kann. Hier die Fehlerausgabe, die dadurch in einer Endlosschleife kommt:
Geben Sie ein neues UNIX Passwort ein: Geben Sie das neue UNIX Passwort erneut ein: passwd: Authentifizierungsinformationen können nicht wiederhergestellt werden
passwd: password unchanged
Use of uninitialized value in chop at /usr/sbin/adduser line 531.
Use of uninitialized value in pattern match (m//) at /usr/sbin/adduser line 532.
Nochmal versuchen? [J/n]
Hilfe?^^
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Jside
Beiträge: 377
Registriert: Di Nov 11, 2008 12:56 am

Re: adduser per Skript steuern

Beitrag von Jside » So Feb 08, 2009 10:16 pm

probier mal
useradd -m <name>
passwd <name> < echo "<Passwort>\n<Passwort>"
adduser und useradd sind zwei verschiedene Methoden, wobei useradd besser für solche Scriptsteuerungen geeignet ist.
/Edit: bzw ist der | operator ehr ungeeignet, probier lieber den <

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: adduser per Skript steuern

Beitrag von Dirty Oerti » Mo Feb 09, 2009 9:46 am

Tag!

Danke, ich werde das dann heute mal ausprobieren.
Wird so auch ein HomeVerzeichnis erstellt? Laut manpage schon...denke ich^^

Worin genau liegt der Unterschied der beiden Operatoren?
Was genau tut "|" bzw "<" ?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: adduser per Skript steuern

Beitrag von Dirty Oerti » Mo Feb 09, 2009 3:27 pm

So wie du meintest hat es leider nicht funktioniert.
Ich habs jetzt aber:

Das Paket whois wird dazu gebraucht.
sudo useradd -m -p $(mkpasswd --hash=md5 <PASSW>) <NAME>
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: adduser per Skript steuern

Beitrag von fat-lobyte » Mo Feb 09, 2009 6:19 pm

Dirty Oerti hat geschrieben:Worin genau liegt der Unterschied der beiden Operatoren?
Was genau tut "|" bzw "<" ?
Die Pipe "|" bedeutet bei

Code: Alles auswählen

progA | progB 

Nimm das was progA auf der Standardausgabe ausgibt und stecke es in die Standardeingabe von progB rein

Das less than "<" bedeutet bei

Code: Alles auswählen

progA < dateiA 

Nimm das was in Datei A drinnensteht und stecke es in die Standardeingabe von progA rein

Ich glaube allerdings nicht dass deine Experimente mit der Pipe und passwd funktionieren werden. passwd liest nämlich nicht einfach von der Standardeingabe mit "scanf()" oder irgendwas ähnlichem. Es liest soweit ich weiß von der gerade aktiven Konsole (Konsole! Und nicht Standardeingabe!), also vom tty der gerade aktiv ist. Du kannst sicher irgendwie herumtricksen dass du den input des TTY's umleitest allerdings führt passwd da einige überprüfungen durch und lässt sich nicht leicht austricksen (klar, ist ja auch eines der Sicherheitskritischsten Programme eines UNIX Systems).

Darf ich mal generell Fragen:
Was genau soll dein Skript tun? Vielleicht gibt es andere wege das zu bewerkstelligen was du versuchst.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: adduser per Skript steuern

Beitrag von Dirty Oerti » Mo Feb 09, 2009 7:10 pm

Ja, das passwd nicht einfach von der Standardeingabe liest war mir klar.
So wie's oben steht funktioniert es nun super.

Sinn der Sache ist es automatisch Benutzer nach einer Datebank mit einem vorgegebenen Standardpasswort anzulegen.

Irgendwie ging das doch auch, das bei der ersten Anmeldung das Passwort vom Benutzer eingetragen werden muss, weißt du wie? :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: adduser per Skript steuern

Beitrag von fat-lobyte » Mo Feb 09, 2009 10:14 pm

Dirty Oerti hat geschrieben:So wie's oben steht funktioniert es nun super.
Hm, das freut mich für dich, aber ist das ein bisschen zu "quick and dirty"?
Ich hab mal gegoogelt, versuchs doch mal mit sowas: http://www.linux.com/feature/119333
So weit ich weiß gibt es da noch LDAP, das für Account Management verwendet wird. Lies dir mal durch, was es kann.
Mir ist klar das wäre ein riesen Overkill. Wenn du allerdings ambitionen in richtung Linux- Administration hast, dann glaube ich wird dir das Wissen nicht schaden.
Dirty Oerti hat geschrieben:Sinn der Sache ist es automatisch Benutzer nach einer Datebank mit einem vorgegebenen Standardpasswort anzulegen.
Standardpasswort? Ist es da nicht klüger das passwort leer zu lassen, und die user beim ersten login das passwort setzen zu lassen?
Dirty Oerti hat geschrieben:Irgendwie ging das doch auch, das bei der ersten Anmeldung das Passwort vom Benutzer eingetragen werden muss, weißt du wie? :)
Hier muss ich leider auf die Manpage deiner "passwd" implementation verweisen. So wies aussieht haben manche Systeme die option "-f", die das Passwort löscht und den Benutzer zwingt das Passwort beim nächsten Login zu setzen. Bei anderen Systemen bedeutet es aber etwas anderes, also aufpassen!

ÜBrigens, hab grade gesehen dass manche auch noch die option "--stdin" unterstützen, also ein Passwort direkt von der standardeingabe (und auch einer pipe) lesen können. Vielleicht siehst du dir man 1 passwd wirklich mal genauer an!

mfg, fat-lobyte
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: adduser per Skript steuern

Beitrag von Dirty Oerti » Di Feb 10, 2009 10:45 pm

Tag!

Das ganze ist für den Schulserver, den wir wohl bald bekommen/schon haben.
Es ist im Endeffekt eine Lösung, die einmal im Jahr durchgeführt werden muss.
fat-lobyte hat geschrieben:Wenn du allerdings ambitionen in richtung Linux- Administration hast, dann glaube ich wird dir das Wissen nicht schaden.
Ich werde es mir auf jedenfall angucken. Ob die Zuständigen bei mir in der Schule da aber was mit anfangen können, weiß ich nicht....
fat-lobyte hat geschrieben:Standardpasswort? Ist es da nicht klüger das passwort leer zu lassen, und die user beim ersten login das passwort setzen zu lassen?
Ja, ich weiß...deswegen ja die Frage^^ :)
fat-lobyte hat geschrieben:Hier muss ich leider auf die Manpage deiner "passwd" implementation verweisen. So wies aussieht haben manche Systeme die option "-f", die das Passwort löscht und den Benutzer zwingt das Passwort beim nächsten Login zu setzen. Bei anderen Systemen bedeutet es aber etwas anderes, also aufpassen!

ÜBrigens, hab grade gesehen dass manche auch noch die option "--stdin" unterstützen, also ein Passwort direkt von der standardeingabe (und auch einer pipe) lesen können. Vielleicht siehst du dir man 1 passwd wirklich mal genauer an!
Habe ich schon. Da es aber nicht auf meinem System laufen wird, sondern auf einem Debian Server System kann ich darüber wenig erfahren...
Bei mir funktioniert auf jedenfall keine der beiden Optionen....

Deswegen dieser "quick and dirty way". Natürlich könnte ich es auch durch "manuelles" editieren der /etc/passwd oder so lösen, das wird aber schwer und wahrscheinlich auch recht verbuggt, zumindest am Anfang. Und das System sollte nunmal recht schnell einsatzbereit sein. (In der jetzigen Version ist es fertig und funktioniert, zumindest bei mir. Auf dem Debian Server kann ich es evtl morgen testen. Ich habe dazu ein .deb erstellt. Muss ich da irgendwas beim Compilieren beachten? Zur Not hab ich auch noch das Source mit auf meinem USB-Stick...)

LG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten