问题描述
我正在尝试使用 hierynomus(SMB 协议)从 Linux 机器访问文件并收到此错误。
这是我的代码
import java.util.EnumSet;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.springframework.stereotype.Component;
import com.hierynomus.msdtyp.AccessMask;
import com.hierynomus.mssmb2.SMB2Createdisposition;
import com.hierynomus.mssmb2.SMB2ShareAccess;
import com.hierynomus.smbj.SMBClient;
import com.hierynomus.smbj.SmbConfig;
import com.hierynomus.smbj.auth.AuthenticationContext;
import com.hierynomus.smbj.connection.Connection;
import com.hierynomus.smbj.session.Session;
import com.hierynomus.smbj.share.diskShare;
import com.hierynomus.smbj.share.File;
import com.hierynomus.smbj.transport.tcp.async.AsyncDirectTcpTransportFactory;
@Component
public class SMBHelper {
private static String USERNAME = "***********";// username
private static String PASSWORD = "***********"; // password
private static String DOMAIN = "***********"; // Domain
private static String sharename = "greatplainsfast"; // sharename
private static final String SHARE_SRC_DIR = "greatplains";
private static final String SHARE_DST_DIR = "archive";
public static List<String> getFiles(String pathId) {
// Set the timeout (optional)
SmbConfig config = SmbConfig.builder()
.withMultiProtocolNegotiate(true)
.withSigningrequired(true)
.withTransportLayerFactory(new AsyncDirectTcpTransportFactory<>())
.withTimeout(120,TimeUnit.SECONDS)
.withTimeout(120,TimeUnit.SECONDS) // Timeout sets read,write and Transact timeouts (default is 60 seconds)
.withSoTimeout(180,TimeUnit.SECONDS) // Socket timeout (default is 0 seconds)
.build();
SMBClient client = new SMBClient(config);
try {
Connection connection = client.connect(DOMAIN );
AuthenticationContext ac = new AuthenticationContext(USERNAME,PASSWORD.tochararray(),DOMAIN);
Session session = connection.authenticate(ac);
// Connect to a shared folder
diskShare share = (diskShare) session.connectShare("greatplainsfast");
if (share.fileExists(pathId)) {
File smbFileRead = share.openFile(pathId,EnumSet.of(AccessMask.GENERIC_READ),null,SMB2ShareAccess.ALL,SMB2Createdisposition.FILE_OPEN,null);
} else {
System.out.println("File does not exist");
}
错误 成功连接到:smbproxy\n","stream":"stdout","time":"2021-01-27T16:50:13.128311213Z"}
c.hierynomus.smbj.connection.Connection :在 smbproxy 上成功验证了 Greatplains,会话是 3455975439\n","time":"2021-01-27T16:50:13.138414333Z" }
com.hierynomus.smbj.session.Session:在会话 3455975439\n","time":"2021-01-27T16:50:13.14037554Z 上连接到 \\smbproxy\greatplainsfast "}
{"log":"com.hierynomus.mssmb2.SMBApiException: STATUS_ACCESS_DENIED (0xc0000022): 无法连接到 \\smbproxy\greatplainsfast\n","stream":"stderr","time":"2021- 01-27T16:50:13.14302621Z"}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)