[SP-pm] Como ler o 'filho' de um processo 'filho' criado via o open2/3 ?

Solli Honorio shonorio at gmail.com
Thu Jul 17 07:26:29 PDT 2008


Ola pessoal, estou com um problema para tentar 'automatizar' um openvpn que
está muito chato e estou implorando pela ajuda dos universitário.

Eu preciso fazer um cliente do openvpn 'subir' sem a intervenção humana,
tentei utilizar o '--auth-user-pass' sem sucesso (se alguém souber como
fazer esta opção funcionar ficarei feliz do mesmo jeito, e prometo que eu
tentei um monte de coisa), então pensei: 'simples, vou fazer um script com o
IPC::Open2 ou IPC::Open3 e vou fazer a manutenção da barriga de chop'.

Pois bem, fiz os script e descobri que o cliente do openvpn cria uma outra
'thread' e mandam a mensagem requisitando o usuário e senha neste 'filho'.
Então o open2/3 abre e fica aguardando o output do cara criado, e este
recebe depois que eu digito o usuário e a senha. capturando este cara via o
strace eu peguei o log abaixo.

Então a minha dúvida é se tem como interagir com esta coisa que eu acredito
ser um stdin e stdout de uma outra thread, ou eu estou comendo bola :( !!!!

Obrigadooooo !!


<log_do_strace>
5092  send(3, "<29>Jul 17 10:44:49 ovpn-client["..., 111, MSG_NOSIGNAL) =
111
5092  open("/dev/tty", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
5092  fstat64(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0
5092  ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo
...}) = 0
5092  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7f3a000
5092  write(4, "Enter Auth Username:", 20) = 20
5092  close(4)                          = 0
5092  munmap(0xb7f3a000, 4096)          = 0
5092  open("/dev/tty", O_RDONLY)        = 4
5092  fstat64(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0
5092  ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo
...}) = 0
5092  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7f3a000
5092  read(4, "alguma_coisa\n", 4096)   = 6
5092  close(4)                          = 0
5092  munmap(0xb7f3a000, 4096)          = 0
5092  open("/dev/tty", O_RDWR|O_CREAT|O_TRUNC, 0666) = 4
5092  fstat64(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0
5092  ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost -isig icanon
-echo ...}) = 0
5092  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xb7f3a000
5092  write(4, "Enter Auth Password:", 20) = 20
5092  read(4, "outra_coisa\n", 4096)       = 7
5092  write(4, "\n", 1)                 = 1

</log_do_strace>

Solli M. Honório
-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080717/5f071f99/attachment.html>


More information about the SaoPaulo-pm mailing list