Smbclient schlägt fehl, wenn es von einem Java-Programm aufgerufen wird

Smbclient schlägt fehl, wenn es von einem Java-Programm aufgerufen wird

Ursprünglich habe ich diese Frage in einem anderen Thread gepostet:

smbclient erhält NT_STATUS_LOGON_FAILURE beim Herstellen einer Verbindung zur Windows-Box

Hier ist es also:

Ich muss ZPLII-Dateien von einer Java-Prozedur in einer Oracle-Datenbank an einen Zebra-Drucker senden.

Wenn ich zum Drucken einen Bash-Befehl ausführe, funktioniert es:

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

Natürlich habe ich Benutzer und Passwörter des Befehls ausgeblendet. Aber sie sind korrekt.

Wenn ich diesen Befehl jedoch in einer Java-Quelle in einer Oracle-Datenbank verwenden muss, schlägt derselbe Aufruf fehl:

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.

Möglicherweise finden Sie diesmal etwas Merkwürdiges an den Anführungszeichen, das vom ersten Beispiel abweicht. Aber das ist die Art und Weise, wie plsql einen String zusammenstellt, der ein Anführungszeichen enthält.

Weiß jemand, ob für den Aufruf smbclientinnerhalb eines Java-Programms zusätzliche Berechtigungen erforderlich sind?

Bei dem Drucker handelt es sich um einen Netzwerkdrucker und der Druckserver ist ein Windows NT.

verwandte Informationen