Java 프로그램에서 호출하면 Smbclient가 실패합니다.

Java 프로그램에서 호출하면 Smbclient가 실패합니다.

처음에 나는 이 질문을 다른 스레드에 게시했습니다.

smbclient가 Windows 상자에 연결하는 NT_STATUS_LOGON_FAILURE를 받고 있습니다.

그래서 여기 있습니다:

Oracle 데이터베이스 내부의 Java 프로시저에서 ZPLII 파일을 zebra 프린터로 보내야 합니다.

인쇄를 위해 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 ~]$

물론 명령의 사용자와 비밀번호를 숨겼습니다. 그러나 그들은 정확합니다.

그러나 Oracle 데이터베이스의 Java 소스 내에서 이 명령을 사용해야 하는 경우 동일한 호출이 실패합니다.

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이 인용문이 포함된 문자열을 조립하는 방식입니다.

smbclientJava 프로그램 내부에서 호출하려면 추가 권한이 필요한지 아는 사람이 있습니까 ?

프린터는 인쇄 서버가 Windows NT인 네트워크 프린터입니다.

관련 정보