一、背景

使用smbj实现samba有个问题,不能先列出服务器的所有samba账户。当面对某些场景,例如先列出局域网所有的samba账户,再让用户选择其中一个,然后让用户输入密码,完成登录再浏览文件。samba代码交叉编译出android平台可以用的smbclient非常困难,很难实现像LINUX平台smbclient -L这样的列出结果。

二、使用jcifs与smbj联合解决

可以使用老版本jcifs库先匿名访问服务器。列出所有用户后,根据用户的操作(选择一个账户,并输入密码)。但是jcifs仅支持samba 1.0。之后再使用支持较高版本的smbj接口完成浏览。

jcifs匿名访问代码:

import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;String remoteUrl= "smb://10.10.10.1";SmbFile smbFile = new SmbFile(remoteUrl, NtlmPasswordAuthentication.ANONYMOUS);for(SmbFile smbfile: smbFile.listFiles("*")){String username = smbfile.getName();System.out.println("user name: " + username);}

上面的username可以存成一个列表,滤掉带$的打印机等用户名,每个username可以作为参数,加上密码,配合smbj代码完成单个账户的访问:

    SmbConfig config = SmbConfig.builder().withTimeout(120, TimeUnit.SECONDS).withTimeout(120, TimeUnit.SECONDS) // 超时设置读,写和Transact超时(默认为60秒).withSoTimeout(180, TimeUnit.SECONDS) // Socket超时(默认为0秒).build();SMBClient client = new SMBClient(config);Connection connection = null;try {connection = client.connect("10.10.10.1");} catch (IOException ioException) {ioException.printStackTrace();}AuthenticationContext ac = new AuthenticationContext("username", "password".toCharArray(), "10.10.10.1");assert connection != null;Session session = connection.authenticate(ac);DiskShare share = (DiskShare) session.connectShare("username");//如果要访问用户username目录里面的仅share文件夹,则// share.list(null, "*.*") 改成 share.list("share", "*.*")//share.list(null, "*.*")表示该用户名下全部文件和文件夹for (FileIdBothDirectoryInformation f : share.list(null, "*.*")) {String fname = f.getFileName();System.out.println("File : " + fname);}

其他:

需要使用1.X版本的jcifs.jar.以下链接的jcifs亲测完美支持。下载jar后,把jcifs-1.3.18.3.jar放在代码build.gradle同级新建的文件夹libs中。模块的build.gradle里面加上包的导入:
implementation files('libs/jcifs-1.3.18.3.jar')

jcifs-1.3.18用于android访问samba服务器。支持匿名访问,实现smbclient-L列出服务器用户名-Android文档类资源-CSDN文库

匿名访问查看服务器samba用户名实现smbclient -L相关推荐

  1. ftp邮箱里的文件无法连接服务器地址,匿名访问ftp服务器 电子邮件地址

    匿名访问ftp服务器 电子邮件地址 内容精选 换一换 如果你正在运行Confluence6.8或者后续版本,邀请你的小组开始使用Confluence服务器的移动应用,可以使用下面的方法.访问Confl ...

  2. tor 匿名访问_Tor:匿名者变得更好或更糟

    tor 匿名访问 为什么要使用Tor? (Why use Tor?) Transport Layer Security (TLS) already provides privacy by encryp ...

  3. linux 查看服务器信息命令

    1.查看服务器连接数 netstat -na|wc -l 1.1查看服务器的进程 netstat -nplt 1.2根据端口查看服务进程 netstat -an|grep 8081 2.查看服务器有效 ...

  4. android layout(l, t, r, b);,服务器里的a,t,l,r,b是什么意思? Android编程中关于layout(l,t,r,b)函数的问题...

    导航:网站首页 > 服务器里的a,t,l,r,b是什么意思? Android编程中关于layout(l,t,r,b)函数的问题 服务器里的a,t,l,r,b是什么意思? Android编程中关于 ...

  5. Red Hat 6.5 Samba服务器的搭建(匿名访问,免登录)

    搭建Samba服务器是为了实现Linux共享目录之后,在Windows可以直接访问该共享目录. 现在介绍如何在红帽6.5系统中搭建Samba服务. 搭建Samba服务之前,yum源必须配置好,本地源和 ...

  6. Linux服务器之Samba匿名访问配置

    摘要:Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共 ...

  7. Linux与Windows共享文件夹之samba的安装与使用 资源管理器直接查看服务器文件

    安装Samba sudo apt-get install samba 创建共享文件夹 // 创建的目录即之后能够在Windows主机上直接访问的目录. // 例如:在用户gzd的主目录下新建share ...

  8. 【内网穿透服务器】使用Frp外网访问内网FTP服务器(以访问内网samba服务为例)

    使用Frp外网访问内网FTP服务器(以访问内网samba服务为例) FTP是基于TCP的服务,使用两个端口,命令端口和数据端口,命令端口是21,数据端口在主动模式下为20,在被动模式随机分配. FTP ...

  9. samba服务器传输大量文件,smbclient操作命令,服务器文件传输

    摘要:smaba,linux,windows,smbclient smbclient概述 smbclient命令属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源.sam ...

最新文章

  1. ajax调取json接口,通过 Ajax 调取后台接口将返回的 json 数据绑定在页面上
  2. 分析B站10万条弹幕后,发现了歪嘴战神的终极奥义!
  3. HiveSQL窗口函数
  4. 8、非空约束(NOT NULL)
  5. 从Xamarin.Essentials谈Xamarin库的封装
  6. wince ./configure
  7. 哪些数据类型能使用切片操作python_Python学习之路「16」非数字数据类型-切片-slice...
  8. ASP.NET MVC 1.0 + spring.net 1.2.0.20288 + NHibernate 2.0.1.4000整合笔记(四)——整合asp.net mvc...
  9. 从yield关键字看IEnumerable和Collection的区别
  10. 点云投影_激光点云变换到图像平面并保存成int16灰度图一帧激光点云+一张RGB图像得到彩色点云
  11. 51nod 1067 Bash游戏 V2 博弈
  12. VHDL_EDA课设_八音电子琴
  13. Android实现图片(拍照+相册)上传功能
  14. js获取当前域名的方法
  15. 转载:如何使用RFT自动打开IE
  16. 大疆云台和华为P30_全面分析曝光大疆云台3和mobile有没有区别?哪个好?优缺点内幕透露...
  17. 周末作业-循环练习题(2)
  18. 如何破坏双亲委派模型
  19. 宕机处理:Kubernetes集群高可用实战总结
  20. c语言上交源代码怎么交啊,C语言问题在线等啊作业提交上交的的内容必须由以下两个部分组成,缺 爱问知识人...

热门文章

  1. 《Kaggle Histopathologic Cancer Detection癌症图像分类比赛》之Keras/Generator实现
  2. 平民开发者利器:FileMaker助力AA健身高效管理工作室
  3. 浪潮云跻身中国政务大数据管理平台市场领导者位置
  4. 9款中药养生茶 保健祛感冒
  5. 开关灯效果HTML,H5+CSS3打开关闭灯泡开关动画特效
  6. Springboot测试过程中遇到的404 not found
  7. 闭眼前道一声晚安...
  8. Linux Skype 4.3 下载地址
  9. python集合的元素可以是_python集合入门须知
  10. 【iOS内购支付】Uniapp拉起苹果内购支付注意事项、实现步骤以及踩过的坑(手把手教程)