jcifs.smb.SmbException: This client does not support the negotiated dialect

881 views Asked by At

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

)

0

There are 0 answers