I have no experience with Expect.pm, so maybe that is
what you want, but if not, or you want to stick with
modules that are part of the standard distribution,
IPC::Open2 and IPC::Open3 give you the ability to open
pipes both to and from a child process. Something like
(untested):
use IPC::Open2;
local (*RD, *WR);
my $child = open2(\*RD, \*WR, 'passwd');
# RD and WR are now pipes connected to STDOUT/STDERR and
# STDIN respectively of the child process. $child contains
# the PID.
my $prompt = <RD>; # not caring what the prompt is, here
print WR "password\n";
$prompt = <WR> # prompted again
print WR "password\n";
Though, to make the code robust, you will want to check the prompts, and probably deal with SIGCHLD yourself so you can get return conditions and so on. You should also set an alarm to time out if something blocks unexpectedly.
Andrew.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.