I run samba server locally using following docker compose file:
samba:
image: instantlinux/samba-dc:latest
container_name: samba-dc
cap_add:
- CAP_SYS_ADMIN
hostname: my.company
environment:
DOMAIN_ACTION: provision
REALM: my.company
volumes:
- etc:/etc/samba
- lib:/var/lib/samba
ports:
- "53:53"
- "53:53/udp"
- "88:88"
- "88:88/udp"
- "389:389"
- "139:139"
- "446:445"
secrets:
- samba-admin-password
After the container has started I executed the command:
samba-tool user setpassword Administrator --newpassword=mySecurePassword
I want to create a new user or printer using jcifs library.
I tried to implement the code:
public static void main(String[] args) throws IOException {
String path = "smb://Administrator:mySecurePassword@localhost/smb.conf";
SmbFile smbFile = new SmbFile(path);
try(SmbFileOutputStream smbFileOutputStream = new SmbFileOutputStream(smbFile)) {
String newPrinter = "[new_printer]\n" +
" comment = New printer\n" +
" path = /path/to/printer\n" +
" printable = yes\n" +
" printer name = new_printer";
byte[] newPrinterBytes = newPrinter.getBytes();
smbFileOutputStream.write(newPrinterBytes);
}
}
dependency is:
<dependency>-->
<groupId>jcifs</groupId>-->
<artifactId>jcifs</artifactId>-->
<version>1.3.17</version>-->
</dependency>-->
Error is
Exception in thread "main" jcifs.smb.SmbException: Failed to connect: localhost/127.0.0.1
jcifs.util.transport.TransportException: Connection in error
jcifs.util.transport.TransportException
jcifs.smb.SmbException: This client does not support the negotiated dialect.
at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:329)
at jcifs.util.transport.Transport.run(Transport.java:241)
at java.base/java.lang.Thread.run(Thread.java:833)
Update
When I've changed the library I've started to get another error:
Exception in thread "main" jcifs.smb.SmbException: The network name cannot be found.
at jcifs.smb.SmbTransportImpl.checkStatus2(SmbTransportImpl.java:1496)
at jcifs.smb.SmbTransportImpl.checkStatus(SmbTransportImpl.java:1607)
at jcifs.smb.SmbTransportImpl.sendrecv(SmbTransportImpl.java:1014)
at jcifs.smb.SmbTransportImpl.send(SmbTransportImpl.java:1578)
at jcifs.smb.SmbSessionImpl.send(SmbSessionImpl.java:409)
at jcifs.smb.SmbSessionImpl.send(SmbSessionImpl.java:347)
at jcifs.smb.SmbTreeImpl.treeConnect(SmbTreeImpl.java:611)
at jcifs.smb.SmbTreeConnection.connectTree(SmbTreeConnection.java:614)
at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:568)
at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:489)
at jcifs.smb.SmbTreeConnection.connect(SmbTreeConnection.java:465)
at jcifs.smb.SmbTreeConnection.connectWrapException(SmbTreeConnection.java:426)
at jcifs.smb.SmbFile.ensureTreeConnected(SmbFile.java:573)
at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:112)
at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:95)
at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:76)
at com.example.test_jcif.TestJcifApplication.main(TestJcifApplication.java:18
)