Helpful Information
 
 
Category: Linux Help
automatically pipe text to a program

Hi there, I have a little prgram that executes commands. One of the commands involves a program that has the format as follows:

#prog
please enter A: [user text 1]
please enter B: [user text 2]
please enter C: [user text 3]
-- results --
#

Can you think of a way to automatically send [user text i] from the command line.

Thanks

You get all params from the command line in the vars $0, $1, $2, ..., $0 being the file name. Of course this makes it impossible for the user to give only the 1st and 3rd param while leaving the 2nd empty.

What I mean is that my program runs commands as if they were at teh command prompt and there is a program that doesn't use params but requires the user to type them in.

Basically I'm writing a program that does some automation, a similar example would be writing a script like such:
setPassword $username$ $password$
which would then run the unix passwd command

Assuming that the user inputs are separated by the return key, you can simply echo the stuff you get from the user with some newlines into a temporary file and pass that to the program's stdin.

Like this:


echo "" > /tmp/tmpinput
chmod 700 /tmp/tmpinput

echo "$1" > /tmp/tmpinput
echo -e "\n" > /tmp/tmpinput
# etc.

myprog < /tmp/tmpinput

rm /tmp/tmpinput

I don't know if it works, though.

Btw: I hope you took passwd just as an example. You shouldn't try to do it really with that or any other security-related command.

Yeah passwd's just an example. It works fine, thanks.










privacy (GDPR)