
Первоначально я разместил этот вопрос в другой теме:
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.