Smbclient falha se for chamado de um programa java

Smbclient falha se for chamado de um programa java

Inicialmente postei esta pergunta neste outro tópico:

smbclient obtendo NT_STATUS_LOGON_FAILURE conectando-se à caixa do Windows

Então aqui está:

Preciso enviar arquivos ZPLII para uma impressora zebra a partir de um procedimento java dentro de um banco de dados oracle.

Se eu executar um comando bash para impressão, ele funcionará:

[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 ~]$

Claro que escondi usuários e senhas do comando. Mas eles estão corretos.

Porém, se eu precisar usar este comando dentro de uma fonte Java em um banco de dados Oracle, a mesma chamada falhará:

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.

Você pode achar algo estranho nas aspas duplas desta vez, divergindo do primeiro exemplo. Mas é assim que o plsql monta uma string contendo uma aspa.

Alguém sabe se é necessária alguma permissão adicional para chamar smbclientdentro de um programa Java?

A impressora é uma impressora de rede cujo servidor de impressão é um Windows NT.

informação relacionada