Smbclient дает сбой при вызове из программы Java

Smbclient дает сбой при вызове из программы Java

Первоначально я разместил этот вопрос в другой теме:

smbclient получает NT_STATUS_LOGON_FAILURE при подключении к Windows-компьютеру

Итак, вот оно:

Мне нужно отправить файлы ZPLII на принтер Zebra из процедуры Java внутри базы данных Oracle.

Если я запускаю команду bash для печати, то она работает:

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

Конечно, я скрыл пользователей и пароли команды. Но они верны.

Однако, если мне нужно использовать эту команду внутри исходного кода Java в базе данных Oracle, тот же вызов завершится ошибкой:

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.

На этот раз вы можете найти что-то странное в двойных кавычках, отличающееся от первого примера. Но это способ, которым plsql собирает строку, содержащую кавычки.

Кто-нибудь знает, требуются ли какие-то дополнительные разрешения для вызова smbclientвнутри Java-программы?

Принтер является сетевым принтером, а сервером печати является Windows NT.

Связанный контент