Smbclient falla si se llama desde un programa java

Smbclient falla si se llama desde un programa java

Inicialmente publiqué esta pregunta en este otro hilo:

smbclient obtiene NT_STATUS_LOGON_FAILURE conectándose al cuadro de Windows

Asi que aqui esta:

Necesito enviar archivos ZPLII a una impresora Zebra desde un procedimiento Java dentro de una base de datos Oracle.

Si ejecuto un comando bash para imprimir, funciona:

[oracle@serverws01 ~]$ smbclient //serverps02/zebra_teste -U 'XXXXXX\uuu.uuuuuu%pppppppppp' -W XXXXXX -c 'print /home/oracle/oradata/zpl/et.txt'
Domain=[XXXXXX] OS=[Windows Server 2012 Datacenter 9200]
Server=[Windows Server 2012 Datacenter 6.2]
putting file /home/oracle/oradata/zpl/et.txt as et.txt-18047 (102.4 kb/s) (average 102.4 kb/s)
[oracle@serverws01 ~]$

Por supuesto oculté usuarios y contraseñas del comando. Pero tienen razón.

Sin embargo, si necesito usar este comando dentro de una fuente Java en una base de datos Oracle, la misma llamada falla:

SQL> declare
2 cmd varchar2(2000);
3 begin
4 cmd := 'smbclient -U ''xxxxxx\xxxxxx%xxxxxx'' //serverps02/zebra_teste -c ''print /home/oracle/oradata/zpl/et.txt'' ';
5 dbms_output.put_line(cmd);
6 rc(cmd);
7 end;
8 /
smbclient -U 'xxxxxx\xxxxxx%xxxxxx' //serverps02/zebra_teste -c 'print /home/oracle/oradata/zpl/et.txt'
**session setup failed: NT_STATUS_LOGON_FAILURE**
X = 1
PL/SQL procedure successfully completed.

Es posible que esta vez encuentre algo extraño entre las comillas dobles, que difiere del primer ejemplo. Pero es la forma en que plsql ensambla una cadena que contiene una comilla.

¿Alguien sabe si se requiere algún permiso adicional para llamar smbclientdentro de un programa Java?

La impresora es una impresora de red y el servidor de impresión es un Windows NT.

información relacionada