help with supplying credentials from a program.
Nagesh Pabbisetty
Pabbisetty.henr at xerox.com
Sat Feb 18 07:24:27 AEST 1989
Folks,
I am currently developing a tool that transfers files between file servers
and workstations. The tool reads commands from a file. Provision is made to
specify the time at which this tool is to start tranfering files. However,
sybntax-checking of the command-file should be done at the current time,
It is possible that the user of this tool has different login names and
passwords on different file servers. I want the program to accept the
various login names and passwords at the current time. Then, when the
actual file transfer is to take place, I want the program to login to the 2
file servers involved in the transfer (validate credentials using
"servlogin") and continue with the transfer operation.
In order to test if fork-exec-pipe combination would help me in the
process, I developed a prototype, excerpts of which are given below:
----------------------------------
# include <stdio.h>
# define R 0
# define W 1
main()
{
int fork(), p[2], q[2] ;
FILE *writeptr, *readptr;
char buffer[200];
if (pipe(p) == -1)
perror("pipe(p) failed\n");
if (pipe(q) == -1)
perror("pipe(q) failed\n");
switch(fork()) {
case 0: /* child process */
close(p[W]);
close(R);
dup(p[R]);
close(p[R]);
close(q[R]);
close(W);
dup(q[W]);
close(q[W]);
execlp("/export/swap/opt/sun3/servlogin","servlogin",0);
perror("exec failed\n");
exit (1);
case -1: /* unsuccesful fork */
perror("fork failed\n");
exit (1);
default: /* parent process */
close(p[R]);
close(q[W]);
writeptr = fdopen(p[W],"w");
readptr = fdopen(q[R],"r");
/* this obviously doesn't work! */
fprintf(writeptr,"Pabbisetty\n");
fflush(writeptr);
fprintf(writeptr,"hastalavista\n");
fflush(writeptr);
.
.
.
fclose(writeptr);
}
}
----------------------------------
As is obvious from this simple program, I have set up bi-directional pipes
between the parent and the child process. From the parent, I am trying to
pipe the user-name and password to the login process. However, this doesn't
work. I get the login prompt to the terminal!!
How can I get the login process to accept login-name and password from the
parent process and not expect it from the terminal?
Could anyone out there suggest a correct way to do this?
Any help in this regard is appreciated!!!
Thanks....
Nagesh
716-427-1827 / 5458
More information about the Comp.unix.questions
mailing list