Anschrift
Frauengasse 3-5
2500 Baden
02252 / 44403

STDIN simulieren 10-09-2009

Wie simuliert man einen STDIN in Ruby?

Wir wollen mir Ruby ein externes Programm starten, das im Anschluss auf eine Eingabe wartet. Wie kann man das machen?
Wir müssen also mit Ruby irgendwie den STDIN simulieren. Als Beispiel sehen wir hier den Aufruf der so genannten smbldap-tools
[highlight=ruby]system("smbldap-useradd -a -m -G #{gruppen} -c \"#{fullname}\"  #{username}")
#über die STDIN die Passwörter 2x übergeben
#Ausgabe unterdrücken
IO.popen "smbldap-passwd #{username} > /dev/4 2> /dev/4", 'w' do |io|
  io.write pwd
  io.write "\n"
  io.write pwd
  io.close_write
end[/highlight]
Wie man sieht, wird der Eingabestrom der verwendet um die Passwörter abzusetzen. Also ganz einfach smiley