J'ai une question sur l'accès au fichier avec Samba JCIFS. Il y a donc un serveur auquel je veux accéder, appelons-le server.unv.edu et le groupe de travail est WKGRP. il y a un partage sur ce serveur: \\ server.unv.edu\pcb $
la façon dont j'essaye d'accéder au serveur est:
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);
}
et
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;
}
}
mais cela ne fonctionne pas. et j'ai eu une erreur 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)
Quelqu'un peut-il me donner une suggestion ou une exactitude de mon code, pour m'aider à accéder au fichier?
Merci beaucoup.
Vous rendez cela plus difficile qu'il ne devrait l'être. Veuillez suivre les étapes ci-dessous et assurez-vous que le dossier partagé que vous créez a un accès en écriture pour cet utilisateur que vous utilisez.
J'exécutais cela sur Linux et je voulais écrire dans une boîte Windows afin que vous souhaitiez créer un dossier partagé et mettre le nom du dossier partagé dans la variable ci-dessous si vous ne savez pas comment créer un dossier partagé sur Windows ... utilisez google comme toujours
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 !");