有没有一种实用的方法,例如 net 命令或其他 cli,可以获取 Linux 服务器(Ubuntu 发行版)上定义的所有共享的列表,不仅列出共享名称,还列出本地共享目录的完整路径?无需查看 samba 配置文件或用户共享文件。
答案1
不可以
smbclient [-U ADUser] -L localhost
显示共享,但您必须在 smb.conf 中查找才能找到路径。
ADUser 是一个域用户,至少可以列出 samba 共享。
答案2
是的你可以。
解决方案(感谢http://ubuntuforums.org/showthread.php?t=1304277&p=8186452#post8186452)是查看目录/var/lib/samba/usershares
:每个共享包含一个文件,每个文件都有一行以path=
包含本地路径开头
答案3
尝试一下这个脚本...随意改进它
#!/bin/bash
while read line; do
[[ "$line" =~ ^\[ ]] && name="$line"
[[ "$line" =~ ^[[:space:]]*path ]] && echo -e "$name\t$line"
done </etc/samba/smb.conf
答案4
至少有两种方法可以做到这一点:
1. 安装
$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=1959288k,nr_inodes=489822,mode=755)
...
# etc, etc
如果不带任何选项,mount
将列出所有已安装的文件系统。有两个选项可用:
-l
:包括标签-t <type> : filters the output by filesystem <type>; e.g.
cifs`
请参阅man mount
详细信息。我的系统中的一个例子:
$ mount -l -t cifs
//NetgearNAS-3/backup on /mnt/NetgearNAS/backup type cifs (rw,relatime,vers=1.0,cache=strict,username=seamus,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.246,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1)
//SynologyNAS-1/backups on /mnt/SynologyNAS/backups type cifs (rw,relatime,vers=3.1.1,cache=strict,username=seamus,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.102,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1,user=seamus)
2. findmnt
从man findmnt
:
findmnt 将列出所有已安装的文件系统或搜索文件系统。 findmnt 命令可以在 /etc/fstab、/etc/mtab 或 /proc/self/mountinfo 中搜索。 如果没有指定设备或安装点,则显示所有文件系统。
不带任何选项,findmnt
提供所有已安装文件系统的整洁列表树格式:
$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda1 ext4 rw,relatime,errors=remount-ro
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,mode=755
...
# etc, etc
findmnt
具有广泛的过滤和格式化选项,非常适合用于必须解析输出的脚本 - 请参阅man findmnt
详细信息。在这种情况下,如果我们希望将输出限制为共享(如 smb/cifs/nfs 意义上),则该-t
选项很方便:
$ findmnt -t cifs,nfs4
TARGET SOURCE FSTYPE OPTIONS
/mnt/SynologyNAS/rpi_share SynologyNAS-1:/volume1/rpi_share nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,se
/mnt/NetgearNAS-3/backup //NetgearNAS-3/backup cifs rw,relatime,vers=1.0,cache=strict,username=seamus,uid=0,noforceuid,gid=0,noforcegid,addr=192.16
/mnt/SynologyNAS/backups //SynologyNAS-1/backups cifs rw,relatime,vers=3.1.1,cache=strict,username=seamus,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.