<div dir="ltr"><span style="font-family: courier new,monospace;">Ola pessoal, estou com um problema para tentar &#39;automatizar&#39; um openvpn que está muito chato e estou implorando pela ajuda dos universitário.<br><br>
Eu preciso fazer um cliente do openvpn &#39;subir&#39; sem a intervenção humana, tentei utilizar o &#39;--auth-user-pass&#39; 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: &#39;simples, vou fazer um script com o IPC::Open2 ou IPC::Open3 e vou fazer a manutenção da barriga de chop&#39;. <br>
<br>Pois bem, fiz os script e descobri que o cliente do openvpn cria uma outra &#39;thread&#39; e mandam a mensagem requisitando o usuário e senha neste &#39;filho&#39;. 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.<br>
<br>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 :( !!!!<br><br>Obrigadooooo !!<br><br><br>&lt;log_do_strace&gt;<br>5092&nbsp; send(3, &quot;&lt;29&gt;Jul 17 10:44:49 ovpn-client[&quot;..., 111, MSG_NOSIGNAL) = 111<br>
5092&nbsp; open(&quot;/dev/tty&quot;, O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4<br>5092&nbsp; fstat64(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0<br>5092&nbsp; ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0<br>
5092&nbsp; mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f3a000<br>5092&nbsp; write(4, &quot;Enter Auth Username:&quot;, 20) = 20<br>5092&nbsp; close(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>5092&nbsp; munmap(0xb7f3a000, 4096)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>
5092&nbsp; open(&quot;/dev/tty&quot;, O_RDONLY)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 4<br>5092&nbsp; fstat64(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0<br>5092&nbsp; ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0<br>
5092&nbsp; mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f3a000<br>5092&nbsp; read(4, &quot;alguma_coisa\n&quot;, 4096) &nbsp; = 6<br>5092&nbsp; close(4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>5092&nbsp; munmap(0xb7f3a000, 4096)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0<br>
5092&nbsp; open(&quot;/dev/tty&quot;, O_RDWR|O_CREAT|O_TRUNC, 0666) = 4<br>5092&nbsp; fstat64(4, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0<br>5092&nbsp; ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost -isig icanon -echo ...}) = 0<br>
5092&nbsp; mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f3a000<br>5092&nbsp; write(4, &quot;Enter Auth Password:&quot;, 20) = 20<br>5092&nbsp; read(4, &quot;outra_coisa\n&quot;, 4096)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 7<br>5092&nbsp; write(4, &quot;\n&quot;, 1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1<br>
<br></span><span style="font-family: courier new,monospace;">&lt;/log_do_strace&gt;</span><br clear="all"><br><span style="font-family: courier new,monospace;">Solli M. Honório</span><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa</div>