libreria example java protocols smb jcifs

example - jcifs smb java



Acceso a archivo usando Java con Samba JCIFS. (1)

Tengo una pregunta sobre el acceso al archivo con Samba JCIFS. Entonces hay un servidor al que quiero acceder, llamémoslo server.unv.edu y el grupo de trabajo es WKGRP hay un recurso compartido en este servidor: // server.unv.edu / pcb $

La forma en que estoy tratando de acceder al servidor es:

public class SMBAuthenticator extends NtlmAuthenticator{ private String username = "username"; private String password = "password"; private String domain = "smb://server.unv.edu/WKGRP/"; public SMBAuthenticator(){ NtlmAuthenticator.setDefault(this); }

y

public class SMBConnection{ public String urlString = "smb://server.unv.edu/pcb$/path/file.txt"; NtlmPasswordAuthentication auth; SmbFile smbFile; public SMBConnection() throws MalformedURLException{; //url = new URL(urlString); SMBAuthenticator authenticator = new SMBAuthenticator(); auth = authenticator.getNtlmPasswordAuthentication(); smbFile = new SmbFile(urlString, auth); } public InputStream getSMBInputStream() throws IOException{ return this.smbFile.getInputStream(); } public InputStream getInputStream() throws IOException{ InputStream is = this.getSMBInputStream(); return is; } }

pero esto no funciona.y recibí un error de

jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password. at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:544) at jcifs.smb.SmbTransport.send(SmbTransport.java:661) at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:390) at jcifs.smb.SmbSession.send(SmbSession.java:218) at jcifs.smb.SmbTree.treeConnect(SmbTree.java:176) at jcifs.smb.SmbFile.doConnect(SmbFile.java:929) at jcifs.smb.SmbFile.connect(SmbFile.java:954) at jcifs.smb.SmbFile.connect0(SmbFile.java:880) at jcifs.smb.SmbFile.open0(SmbFile.java:972) at jcifs.smb.SmbFile.open(SmbFile.java:1006) at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73) at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65) at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2844) at edu.umd.lib.sambaConnection.SMBConnection.getSMBInputStream(SMBConnection.java:33) at edu.umd.lib.sambaConnection.SMBConnection.getInputStream(SMBConnection.java:37) at edu.umd.lib.sambaConnection.SambaConnectionTest.test(SambaConnectionTest.java:21) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

¿Alguien puede darme una sugerencia o una corrección de mi código para ayudarme a acceder al archivo?

Muchas gracias.


Estás haciendo esto más difícil de lo que debería ser. Siga los pasos a continuación y asegúrese de que la carpeta compartida que está creando tenga acceso de escritura para el usuario que está usando.

  1. descargue el archivo jar http://jcifs.samba.org/ (solo hay un archivo jar)
  2. copie y pegue el siguiente código con su información de nombre de usuario, contraseña y carpeta compartida, y eso es todo lo que necesita

Estaba ejecutando esto en Linux y quería escribir en un cuadro de Windows por lo que desea crear una carpeta compartida y poner el nombre de la carpeta compartida en la siguiente variable si no sabe cómo crear una carpeta compartida en Windows ... use google como siempre

String user = "your_user_name"; String pass ="your_pass_word"; String sharedFolder="shared"; String path="smb://ip_address/"+sharedFolder+"/test.txt"; NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass); SmbFile smbFile = new SmbFile(path,auth); SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile); smbfos.write("testing....and writing to a file".getBytes()); System.out.println("completed ...nice !");