1 2# 3# This file and its contents are supplied under the terms of the 4# Common Development and Distribution License ("CDDL"), version 1.0. 5# You may only use this file in accordance with the terms of version 6# 1.0 of the CDDL. 7# 8# A full copy of the text of the CDDL should have accompanied this 9# source. A copy of the CDDL is also available via the Internet at 10# http://www.illumos.org/license/CDDL. 11# 12 13# 14# Copyright 2017 Nexenta Systems, Inc. All rights reserved. 15# 16 17This directory builds a program linking all of the SMB client code 18into a user-level process. The result is not a fully functional 19SMB client but is very useful for some kinds of development work. 20 21The architecture of this roughly parallels the in-kernel version, 22where the kernel modules are built as libraries including: 23 libfksmbfs, libfknsmb 24 25Just as with the kernel code, there are mdb modules that know 26how to walk data structures in libfksmbfs, etc. 27 28For debugging, etc. it's easiest to run this as a normal user, 29i.e. yourself (not root) 30 31Now you can run fksmbcl from the proto area using this script: 32 ./Run.sh -df 33 34You can also run it under dbx (see the .dbxrc file). 35To run it under mdb (with mdb modules build here): 36 mdb -L $ROOT/usr/lib/mdb/proc:/usr/lib/mdb/proc ... 37where ... is one of: fksmbcl, core.nnn, -p $PID 38 39There are also some dtrace scripts in here, and in ../dtrace 40for watching either all activity or only selected areas. 41Run these like: dtrace -s Watch-all.d -p $PID -o output 42 43These two (from over in ../dtrace) also work with fksmbcl: 44 dtrace -s fksmbcl.d -p `pgrep fksmbcl` -o output 45 46Here is the help output: 47 48 > help 49 Commands: 50 help 51 exit 52 logon [user [dom [pass]]] 53 logoff [close-driver] 54 shares 55 mount {share} [optstr] 56 umount 57 unmount 58 statfs 59 dir {rdir} [lfile] 60 dirx {rdir} [lfile] 61 get {rfile} [lfile] 62 put {lfile} [rfile] 63 mv {from} {to} 64 rm {rfile} 65 mkdir {rfile} 66 rmdir {rfile} 67 opt {option} 68 69 70Here is an example of how to connect, mount, and list a directory: 71 72 $ ./Run.sh //myserver 73 # Start with: 74 > logon [user [dom [pw]]] 75 > shares 76 > mount {share} 77 78 > logon test test test 79 > shares 80 open pipe: /srvsvc 81 enum strings 82 junk 83 c$ 84 Default Share 85 test1 86 ipc$ 87 Remote IPC 88 test 89 > mount test 90 > dir 91 1224750917 . 92 1224750917 .. 93 900818955 test9.dat 94 3908265151 lock1.txt 95 2452346625 test_dir 96 > umount 97 > logoff 98 > exit 99 $ 100