Einen "gepipeten" Befehl mit jexec(8) ans Jail senden

carp

Member
Hallo liebe Leute,

ich schreibe mir ein kleines Skript zum einrichten eines Jails und möchte einen initialen Benutzer einrichten. Mein Befehl dazu schlägt leider fehl:
Code:
$ jexec $JAILNAME 'echo $JAILNAME:: | adduser -s bash -M 700 -q -f -'
jexec: execvp(): -: No such file or directory

Liegt es an dem Pipe-Symbol? Ein simples echo kann ich an das Jail senden.

Kann mir jemand sagen, ob aneinandergereihte Befehle auf diese Weise mit jexec(8) im Jail ausgeführt werden können oder ob es eine Alternativoption gibt? Danke!
 
Aber er meckert doch über das letzte -

Code:
-f file
             Get the list of accounts to create from file.  If file is “-”,
             then get the list from standard input.  If this option is speci‐
             fied, adduser will operate in batch mode and will not seek any
             user input.  If an error is encountered while processing an
             account, it will write a message to standard error and move to
             the next account.  The format of the input file is described
             below.

das wird so nix.

hth
 
Code:
# echo foo:: | adduser -s bash -M 700 -q -f -
# id foo
uid=1002(foo) gid=1002(foo) groups=1002(foo)

Doch, wird. Genauso will ich es ja haben.
 
solltest du es dann nicht auch oben (bei jexec) angeben? für mich fehlt "id foo" oder verstehe ich da gerade was nicht?
 
Dein Zitat der adduser Manpage habe ich so interpretiert, dass Du mich auf die richtige Benutzung von adduser im Batchmodus hinweisen wolltest und dass die von mir gewählte Syntax im ersten Post nicht korrekt ist. Mein zweiter Post diente nur der Klarstellung, dass adduser genauso funktioniert. id foo war nur zum Beweis, dass der User auch tatsächlich durch den vorangehenden Befehl angelegt wurde :)
 
ich wollte nur sagen, dass du da noch etwas angeben musst, da der Befehl ja in der jail ausgeführt wird und wenn du nichts weiter angibst kommt der Fehler zurück

Code:
jexec: execvp(): -: No such file or directory

da hier das "-" angemeckert wird denke ich, dass nach dem - irgend etwas in der jail passiert was ich gerade nicht testen kann.
Ich nehme an, dass du die user Angaben dann nach und nach eintippen willst, sonst hättest du ja was angegeben, wenn ich richtig denke versuche mal das vor deinem befehl.

Code:
sh -c 'echo $JAILNAME:: | adduser -s bash -M 700 -q -f -'
oder aber
Code:
sh; 'echo $JAILNAME:: | adduser -s bash -M 700 -q -f -'

dann solltest du ne shell die auch geöffnet bleibt und eingaben annimmt habe.

hth sonst bin ich erstmal raus da gerade nix zum testen sry.
 
ath, sh -c ... war der entscheidende Tipp – merci!

Code:
jexec $JAILNAME sh -c "echo $JAILNAME:: | adduser -s bash -M 700 -q -f -"
 
Für solche geskripteten Usergeschichten würde ich allerdings auch immer pw(8) benutzen.
 
Zurück
Oben