December 11th, 2001, 07:09 AM
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:
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.
December 11th, 2001, 09:47 AM
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.
December 11th, 2001, 09:55 AM
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
December 11th, 2001, 10:25 AM
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.
I don't know if it works, though.
echo "" > /tmp/tmpinput
chmod 700 /tmp/tmpinput
echo "$1" > /tmp/tmpinput
echo -e "\n" > /tmp/tmpinput
myprog < /tmp/tmpinput
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.
December 11th, 2001, 10:39 AM
Yeah passwd's just an example. It works fine, thanks.