sourCEntral - mobile manpages

pdf

SMBCLIENT

NAME

smbclient − 類似FTP操作方式的訪問SMB/CIFS伺服器資源的客戶端

總覽 SYNOPSIS

smbclient {servicename} [password] [-b <buffer size>] [-d debuglevel] [-D Directory] [-U username] [-W workgroup] [-M <netbios name>] [-m maxprotocol] [-A authfile] [-N] [-l logfile] [-L <netbios name>] [-I destinationIP] [-E] [-c <command string>] [-i scope] [-O <socket options>] [-p port] [-R <name resolve order>] [-s <smb config file>] [-T<c|x>IXFqgbNan] [-k]

描述 DESCRIPTION

此程式是Samba(7)套件的一部分。

smbclient 是個可以和SMB/CIFS伺服器“交談”的客戶端程式。它提供 了類似FTP程式(參見ftp (1))的使用者界面。它可以完成的操作包括像從服務 器下載檔案到本地,上傳本地檔案到伺服器及在伺服器上查找目錄信息等。

選項 OPTIONS

servicename

servicename就是你要使用的服務名稱。服務名使用//server/service這樣的形式,其中server 是提供服務的SMB/CIFS伺服器的NetBIOS名字,而service 是可獲得服務資源的名稱。所以如果要聯接伺服器"smbserver"上的"printer"服務的話,應該使用這樣的服務名稱://smbserver/printer

注意服務名不使用伺服器的IP(或DNS)主機名,而應該用NetBIOS名,而它可能與伺服器的IP主機名相同當然也可能不相同。

伺服器名是根據smbclient使用的-R 參數或者smb.conf(5)配置檔案中的名稱解析順序參數來解析的。名稱解析參數使管理員可以控制名稱解析的順序和方法。

password

用password指定訪問服務時所需的口令。如果使用了這個選項,就假定使用了-N(suppress password prompt)參數,在執行過程中不出現口令提示。

口令沒有預設值。如果在命令行上沒有提供口令(或者使用這個參數,或者在-U-fR參數中指定),並且也沒有使用-N選項,那麼即使需要的服務項不要求口令,程式也會提供要使用者輸入一個口令。(如果服務不需要口令,只要簡單地打個回車就向伺服器回應了一個空口令)

注意:有些伺服器(包括OS/2和Windows for Workgroups)會強調使用大寫口令,它們會拒絕小寫或者大小寫混合的口令。

在稿本中使用口令要小心。(可能有安全問題嘛!)

-R <name resolve order>

通過指定這個選項讓Samba套件中的程式決定使用怎樣的名字解析服務及其次序來解決主機名和IP的對應。這個選項以一個以空格分隔的不同的名稱解析方法為選項值。

可選值是:“lmhosts”,“host”,“wins”和“bcast”。這些選項使名字解析按以下的方法來進行:

lmhosts: 向Samba的lmhosts檔案查詢IP地址。If the line in lmhosts has no name type attached to the NetBIOS name (see the lmhosts(5) for details) then any name type matches for lookup.

host: 用標準的名字到IP地址解析方法:系統/etc/hosts檔案,NIS或DNS查詢。如何使用這個名字解析由系統決定。舉例來說,在IRIX或者Solaris系統中,/etc/nsswitch.conf檔案會處理這些問題。 Note that this method is only used if the NetBIOS name type being queried is the 0x20 (server) name type, otherwise it is ignored.

wins: 用配置檔案中wins server選項列出的地址來查詢名字。如果沒有指定WINS伺服器的話

會略過這種方法。

bcast: 向配置檔案中interfaces參數列出的每個已知本地接口進行廣播來進行查詢。這是最不可靠的名字解析方法,因為它要求目標主機在本地子網內。

如果不使用這個參數的話,將按 smb.conf(5)配置檔案中(name resolve order)參數指定的次序來進行名字解析。

預設的解析次序是lmhosts,host,wins,bcast,在不使用這個參數或者沒有在smb.conf(5)配置檔案中設定name resolve order 參數的情況下將使用這樣的次序進行解析。

-M NetBIOS name

使用這個選項可以讓你以“WinPopup” 協議向其它電腦發送信息。一旦聯接成功你就可以發送信息了,結束時可以按^D(Ctl-D).

如果接受方電腦也正在運行WinPopup的話,使用者會收到發送的信息並且系統可能會鳴叫一聲。如果對方並沒有運行WinPopup的話信息就被丟棄,而不會發出出錯信息。

如果發送的信息超過1600字節的話會自動被截斷,因為這是此協議規定的極限。

這裏有個很有用的小技巧,通過smbclient,用cat處理信息,例如:

cat mymessage.txt | smbclient -M FRED 將會把 mymessage.txt 中的信息發送給主機 FRED.

你也許會發現-U-I選項很有用,因為它們允許你控制信息的源地址和目的地址部分。

參見smb.conf(5)配置檔案中的message command參數獲得如何在Samba中處理新進的WinPopup消息的詳細描述。

注意:如果你總是要用你的WfWg PC的WinPopup來接收消息的話可以在你的Windows機器中把它拷到“啟動”中。

-p port

聯接伺服器所用的TCP端口號。標準(眾所周知)的SMB/CIFS伺服器TCP端口是139,當然也是預設值。

-h|--help

列印出命令行幫助信息。

-I IP-address

指定要聯接的伺服器IP地址。當然格式應該是“a.b.c.d”。

通常client會使用上面介紹過的name resolve order參數中描述的NetBIOS名字解析機制通過查詢嘗試查找一個已命名的SMB/CIFS伺服器。使用這個參數會強制客戶端程式採用指定的IP地址而忽略要聯接的服務資源的NetBIOS名部分。

這個參數並沒有預設值。如果不指定的話程式會用上面說的方法來自動檢測。

-E

當使用了這個參數後,程式會把信息寫到標準錯誤流(stderr)而不是標準輸入流中。

預設情況下,程式會把信息寫入標準輸入中 - 典型的例子是使用者的tty。

-L

此選項允許你查看伺服器上可以獲得的服務資源。使用smbclient -L host 命令會顯示一份列表。如果你的NetBIOS名與TCP/IP域名不匹配或者要在其它網路上查找主機時,-I 選項會非常有用。

-t terminal code

用這個選項告訴smbclient怎樣解釋從遠程伺服器上傳來的檔名。通常,UNIX系統對亞洲多字節的語言的實現與SMB/CIFS伺服器使用的字符集不同(例如用EUC代替 SJIS)。設置這個參數可以讓smbclient 在UNIX檔名與SMB檔名之間進行正確的轉換。不過,這個選項還沒有經過嚴格的測試,所以可能會有些問題。

終端編碼包含CWsjis, CWeuc, CWjis7, CWjis8, CWjunet, CWhex, CWcap. 當然這個列表並不完整,要獲取完整列表請查看samba 原始碼。

-b buffersize

在對伺服器進行上/下傳檔案時可以用這個選項來改變傳輸緩沖大小。預設值是65520個字節。當從一個Win9x的伺服器上進行檔案傳輸時,把這個值設為稍小一點的值(例如1200字節)可以得到一些速度提升。

-V

Prints the program version number.

-s <configuration file>

指定的這個檔案包含伺服器需要的配置詳細信息。檔案中的信息包含針對伺服器的信息,比如使用什麼printcap檔案,還有所有伺服器提供的服務的描述。參見smb.conf來獲得更多信息。預設的配置檔名是在編譯時指定的。

-d|--debug=debuglevel

debuglevel 調試等級是個從0到10的整數。參數未指定時預設值為0。

如果這個值越高,越多關於伺服器的詳細活動信息將被記錄到檔案中。在0調試級時,只記錄緊急錯誤和嚴重警告。對於平日的運行服務,1調試級是個合理的等級,它只產生小量的關於執行操作的信息。

1以上的調試級將產生相當多的記錄數據,並且只在解決問題時才有用。3以上的調試級只被設計為讓開發者使用並會產生極大數量的記錄數據,而且其中很多部分非常難以理解。

注意在此使用這個參數將越過在smb.conf (5)檔案中的log level參數。

-l|--logfile=logbasename

指定一個記錄和調試的檔名。檔案會被添加.client擴展名。記錄檔案無法被客戶端刪除。

-N

如果指定了這個選項,就會省略通常的口令提示。當訪問無需口令的服務資源時它很有用。

除非在命令行上輸入了口令或者使用了上述這個選項,否則使用者將被提示要求輸入一個口令。

-k

Try to authenticate with kerberos. Only useful in an Active Directory environment.

-A|--authfile=filename

This option allows you to specify a file from which to read the username and password used in the connection. The format of the file is

username = <value>
password = <value>
domain = <value>

Make certain that the permissions on the file restrict access from unwanted users.

-U|--user=username[%password]

這個參數指定程式聯接時使用的使用者名或者使用者名和密碼

如果沒指定%password,將提示使用者輸入。程式會使用環境變量USER或LOGNAME,如果任何一個存在就會被轉換為大寫。如果既沒有使用者名也不存在環境變量的話,將使用GUEST作為使用者名。

A third option is to use a credentials file which contains the plaintext of the username and password. This option is mainly provided for scripts where the admin does not wish to pass the credentials on the command line or via environment variables. If this method is used, make certain that the permissions on the file restrict access from unwanted users. See the -A for more details.

在稿本中包含口令或者使用PASSWD環境變量時要小心。而且在很多系統中,運行的命令行可以通過ps命令來查看,所以讓rpcclient提示輸入口令並直接鍵入會比較安全。

-n <primary NetBIOS name>

使用這個選項讓你越過機器的主機名而使用你要用的NetBIOS名。這樣作和設置smb.conf檔案中的netbios name選項作用相同。但是,命令行設置比配置檔案中的設置優先級高。

-i <scope>

這個參數指定一個產生NetBIOS名字時nmblookup用來通信所需要的NetBIOS范圍。對於NetBIOS范圍這個概念,可以參見rfc1001.txt和rfc1002.txt這兩個檔案中的詳細定義。實際上這個NetBIOS范圍的概念很少被用到,僅當你作為負責整個NetBIOS通信的管理員時才要設置。

-W|--workgroup=domain

設置使用者名的SMB域。這個選項越過了smb.conf配置檔案中的預設域。如果指定的域與伺服器NetBIOS名相同,會使得使用者使用伺服器本地安全管理local SAM來登入(與域SAM相反).

-O socket options

TCP套接字選項用來在客戶端設定套接字方面的功能。參見smb.conf(5)手冊頁中的socket options參數獲得合法的選項列表。

-T tar options

我們可以用smbclient來對位於SMB/CIFS共享資源上的所有檔案建立相容tar(1) 格式的備份。可使用的tar選項是以下這些:

c - 在unix系統上建立一個tar檔案。當然了,卷檔名,目標設備都必須給出,或者用"-"代表標準輸出。如果用

標準輸出,你必須把記錄等級調到它的最低值-d0以避免影響產生的tar檔案。這個標誌的功能正好與x標誌相反。

x - 用這個標誌可以把本地的一個tar備份檔案釋放(恢復)到共享資源上。除非使用了-D選項,tar備份檔案將從共享資源的頂層開始恢復。當然了,使用這個參數時後面必須緊跟一個想要恢復的檔名,設備,或者用"-"代表標準輸入。與上面一樣,這個標誌的功能正好與c標誌的功能相反。恢復後檔案的建立時間(mtime)會被tar檔案中保存的日期來替換, 而目錄無法做到這一點的。

I - 用這個標誌可以包含檔案和目錄。當在用-T參數時指定了一個檔名的話這就是預設的操作了。在釋放或建立時tar檔案都會包含這些內容(同時不會包含其他的內容)。參見下面的示例。檔名通配符有兩種方式,參見下面r

X - 排除檔案和目錄。在釋放或者建立備份時使這些檔案或目錄不被包含在內。請看下面的示例檔名通配符有兩種方式,參見下面r

b - 塊大小。在這個標誌後必須用一個合法的塊大小(大於0)。使建立備份時寫入到塊大小*TBLOCK(通常是512字節)這樣

大小的塊中。

g - 增量備份。只備份設置了歸檔位的檔案。必須與c標誌一起使用。

q - 靜態工作。當操作進行時沒有輸出。它的意義與tar相應的靜態工作模式一樣。

r - 用正則表達式來描述包含或排除操作。當用HAVE_REGEX_H編譯的話,用通常的正則表達式可以描述排除操作及要排除的檔案,但是這種模式工作非常慢。如果沒有用HAVE_REGEX_H的話,僅僅可以用通配符’*’和’?’。

N - 時間更新(newer)的檔案.在這個標誌後面必須是一個用來與共享中的檔案創建時間做比較的檔名。只有共享中的檔案比指定的檔案要新的時候才會被備份。必須

c標誌一起使用。

a -設定歸檔位。使用這個標誌在備份時對檔案設置歸檔位。必須與g和fIc標誌一起用.

Tar Long File Names

smbclient的tar選項現在可以在備份與恢復操作時支持長檔名了。但是,檔案的完整路徑描述必須小於1024 個字節。而且,當建立了一個歸檔包時,smbclient的tar選面會用檔案相對路徑寫入歸檔包中,而不是絕對路徑。

Tar Filenames

所有的檔名都要以DOS路徑名(以’\\’作分隔符)或UNIX路徑名(以’/’作分隔符)給出。

示例

把備份檔案backup.tar恢復到位於mypc上的myshare中(無須口令)

smbclient //mypc/yshare "" -N -Tx backup.tar

恢復除了users/docs以外的所有內容

smbclient //mypc/myshare "" -N -TXx backup.tar users/docs

users/docs下建立一個備份檔案

smbclient //mypc/myshare "" -N -Tc backup.tar users/docs

與上面操作相同,不過用的是DOS路徑名

smbclient //mypc/myshare "" -N -tc backup.tar users\docs

對共享資源上所有內容(檔案和目錄)作一完整的備份

smbclient //mypc/myshare "" -N -Tc backup.tar *

-D initial directory

在開始前用這個參數來改變初始目錄。可能只在用tar的-T選項才用。

-c command string

命令字符串串是一個以單引號(“’”)分隔的用來替換標準輸入提示的一系列命令列表,這個參數意味著 -N

當使用稿本或者要列印標準輸入信息到伺服器時這個選項就非常有用了,例如:-c ’print -’

操作 OPERATIONS

一旦運行了這個命令,就會在使用者的提示行出現以下信息:

smb:\>

反斜槓符("\\")指出了在伺服器上使用者當前的工作路徑,如果這個路徑改變了的話,相同的提示也會改變。

提示符表示使用者準備好並等待執行一個使用者命令。每個命令都是一個單獨的詞,一般隨後可以有選擇地指定一些命令所需的參數。命令和參數之間用空格來分隔,除非有其它規定。當然所有命令都區分大小寫,而參數可能不一定要區分大小寫,不過這應該由命令來決定。

要在檔名中使用空格的話必須用雙引號封閉,例如:"a long file name"。

以方括號("[]")封閉的參數是可選項,如果沒有使用,命令還是以預設的情況執行;而以尖括號<>封閉的參數就是必須的了。

注意,所有對伺服器的命令操作實際上是完成的是向伺服器發送一個請求。因而,這種動作可能在伺服器到伺服器之間會作些改變,這由伺服器的實現方式來決定。

下面以字母次序給出可以使用的命令。
? [command]

如果指定了command ,那麼?命令就顯示該命令的一些簡單介紹信息。如果單獨使用?的話,它會 給出一份給用命令的列表。

! [shell command]

如果指定了 shell command,那麼!命令會執行一個本地的命令解釋器並運行指定的shell命令。如果不指定 要運行哪個shell命令,那麼就只執行一個本地命令解釋器。

altname file

The client will request that the server return the "alternate" name (the 8.3 name) for a file or directory.

cancel jobid0 [jobid1] ... [jobidN]

The client will request that the server cancel the printjobs identified by the given numeric print job ids.

chmod file mode in octal

This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not. The client requests that the server change the UNIX permissions to the given octal mode, in standard UNIX format.

chown file uid gid

This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not. The client requests that the server change the UNIX user and group ownership to the given decimal values. Note there is currently no way to remotely look up the UNIX uid and gid values for a given name. This may be addressed in future versions of the CIFS UNIX extensions.

cd [directory name]

如果指定了"directory name",那麼伺服器的當前工作路徑就改為使用者指定的路徑。如果指定了任何不可訪問的目錄的話,該操作就失敗了。

如果不指定目錄名,就向使用者給出伺服器當前工作路徑。

del <mask>

刪除所有當前工作路徑中匹配mask的檔案。

dir <mask>

列出所有當前工作路徑中匹配mask的檔案。

exit

終止聯接並退出程式。

get <remote file name> [local file name]

把伺服器上名為remote file name的檔案到拷貝到本地,名稱為local file name。要注意的是,smbclient所用的傳送模式為二進制模式。同時參見lowercase命令。

help [command]

同以上的?命令相同。

lcd [directory name]

把本機目錄改為directory name指定的地點。如果要換的目錄是不可訪問的話,操作將會失敗。

如果不指定目錄名,則顯示當前本機的工作路徑。

link source destination

This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not. The client requests that the server create a hard link between the source and destination files. The source file must not exist.

lowercase

在get和mget命令中選用小寫字符作為檔名。

當選擇了小寫狀態時,用get和mget命令時會把本地檔名都轉換為小寫。從伺服器上拷貝MSDOS 檔案時這個選項非常有用,因為小寫檔名是UNIX系統的標準。

ls <mask>

同以上的dir命令。

mask <mask>

此命令允許使用者設置在mget和mput命令的遞歸形式操作中使用的一個掩碼(通配符)。

當選擇了遞歸複製目錄時,mget和mput命令指定這個掩碼(通配符)作為目錄過濾器。

用mask命令指定的掩碼可以用來過濾目錄中的檔案。例如,如果在mget命令中指定了掩碼"source*",並且用mask命令指定了檔案掩碼"*.c",並且選擇了遞歸複製目錄的話,mget命令會下載所有在當前工作目錄中匹配"source*"的目錄以及其下所有匹配"*.c" 的檔案。

注意掩碼(通配符)預設值是空(等價於"*"),除非使用mask命令來改變它。它會一直保持最近一次指定的值。為了避免出現意外的結果,在使用了mget和mput命令之後把值改回"*"是比較明智的。

md <directory name>

同以上的mkdir命令。

mget <mask>

複製伺服器上所有匹配mask 的檔案到本機。

注意mask在命令的遞歸調用和非遞歸調用兩種方法之間有不同的解釋含義 - 請參考recurse和mask命令獲得更多信息。其次就是smbclient傳送的方式是二進制的。另見lowercase命令。

mkdir <directory name>

在伺服器上建立指定名稱的目錄(當然使用者要有相應的訪問權限)。

mput <mask>

複製本機上當前目錄內所有匹配mask 的檔案到伺服器當前工作目錄。

注意mask在命令的遞歸調用和非遞歸調用兩種方法之間有不同的解釋含義 - 請參考recurse和mask命令獲得更多信息。其次就是smbclient 傳送的方式是二進制的。

print <file name>

列印本機上指定的檔案到伺服器的可列印資源上。

參見printmode命令。

printmode <graphics or text>

設定列印模式以適應二進制數據(例如圖形信息)或文本,這樣後續的列印命令皆使用當前設好的列印模式。

prompt

在執行mget和mput命令時使用對檔名的提示。

當用提示時,在執行命令期間會提示使用者對每個要傳送的檔案進行確認。反之,所有傳送操作都不會出現提示。

put <local file name> [remote file name]

從本機拷貝名為local file name的檔案到伺服器上並取名為remote file name。與上面提到的一樣,smbclient 傳送用的是二進制模式。參見lowercase命令。

queue

用來顯示列印隊列、任務標識、名稱、容量大小和當前狀態。

quit

參見exit命令。

rd <directory name>

參見rmdir命令。

recurse

以目錄遞歸方式運行mget和mput命令。

當使用了遞歸方式時,這些執行的命令會處理源目錄下所有的子目錄,進入匹配通配符的子目錄。只有與mask命令指定的通配符相符的檔案才會被處理。參見mask命令。

當沒有使用這種遞歸方式時,只有源主機當前工作目錄中與匹配通配符的檔案才會被複製。mask命令指定的通配符將被忽略。

rm <mask>

刪除所有伺服器上當前工作目錄中與mask相符的檔案。

rmdir <directory name>

從伺服器上刪除指定的目錄,當然了,需要一定的使用者訪問權限。

setmode <filename> <perm=[+|\-]rsha>

與DOS命令attrib類似的東東,用來設定檔案權限,例如:

setmode myfile +r

將把myfile設為只讀。

symlink source destination

This command depends on the server supporting the CIFS UNIX extensions and will fail if the server does not. The client requests that the server create a symbolic hard link between the source and destination files. The source file must not exist. Note that the server will not create a link to any path that lies outside the currently connected share. This is enforced by the Samba server.

tar <c|x>[IXbgNa]

執行一個tar操作。參見上面的 -T 命令行選項。tarmode命令可能會影響具體的行為。還有就是g(增量方式)和N(新建方式)會改變tarmode設定。這裏要注意的是 tar x參數前加"-"可能會導致命令不執行,應當使用命令行選項方式。

blocksize <blocksize>

塊大小。參數後必須跟一上合法的(就是比0大的數啦)塊尺寸。因為在執行命令時,tar檔案要被寫到一個大小為blocksize*TBLOCK(一般是512字節)的塊中。

tarmode <full|inc|reset|noreset>

根據歸檔位來改變tar的行為。當用完全備份時,tar會備份所有的內容而不管歸檔位是如何設置的,這正好是預設的工作模式。當為增量模式時,它只備份置有歸檔位的檔案。而用重組模式時,tar會對所有要備份檔案的歸檔位進行復位(同時讀/寫共享)。

注意 NOTES

一些伺服器對使用者提供的使用者名、口令、共享資源名(也就是服務名)和機器名的大小寫形式非常挑剔。如果你聯接失敗,試一下全部用大寫。

通常你在聯接某種伺服器時用-n選項會方便一點。例如OS/2 LanManager會強調要使用合法的NetBIOS名字,所以你需要提供讓伺服器可以理解的合法名字。

smbclient支持在伺服器使用LANMAN2及更高的協議時使用長檔名。

環境變量 ENVIRONMENT VARIABLES

USER變量包含使用客戶端的使用者的使用者名。只有當連接的協議等級足夠高,支持會話級別的口令時才使用此信息。

PASSWD變量包含使用客戶端的使用者的口令。只有當連接的協議等級足夠高,支持會話級別的口令時才使用此信息。

The variable LIBSMB_PROG may contain the path, executed with system(), which the client should connect to instead of connecting to a server. This functionality is primarily intended as a development aid, and works best when using a LMHOSTS file

安裝 INSTALLATION

存放這個程式的位置對於個人的系統管理員來說也是件麻煩事。下面僅僅是一些建議。

推薦你把smbclient套件安裝到/usr/local/samba/bin//usr/samba/bin/目錄中,而這個目錄對所有人來說應該是只讀的,對root才是可寫的。程式本身可以被所有人調用,但是它是setuid或者setgid的。

而程式的記錄檔案應該放在一個使用者可讀寫的目錄中。

要測試這個程式,你要先知道運行SMB/CIFS的伺服器名。這個伺服器可能運行著smbd(8) a守護進程並提供一個使用者可以訪問的端口(通常端口號大於1024),這樣使用者就可以用這些數據來測試了。

診斷 DIAGNOSTICS

通常情況下診斷信息都記錄到指定好的記錄檔案中。這個檔案的名稱是在編譯時指定的,但也可以用命令行來指定。

使用者可以得到的診斷信息的數量和種類取決於使用者執行客戶端程式時所用的調試等級。如果你發現有問題的話,把調試級設到3並詳細閱讀記錄檔案裏的內容。

版本 VERSION

此手冊頁是針對Samba套件版本2.2的。

作者 AUTHOR

samba軟體和相關工具最初由Andrew Tridgell創建。samba現在由Samba Team 作為開源軟體來發展,類似linux核心的開發方式。

最初的samba手冊頁是 Karl Auer寫的。 手冊頁原始碼已經轉換為YODL格式(另一種很好的開源軟體,可以在ftp://ftp.ice.rug.nl/pub/unix找到),由Jeremy Sllison 更新到Samba2.0 版本。 Gerald Carter 在Samba2.2中將它轉化為DocBook 格式。 Alexander Bokovoy 在Samba 3.0中實現了DocBook XML4.2 格式的轉換。

[中文版維護人]

meaculpa <meaculpa AT 21cn DOT com>

[中文版最新更新]

2000/12/08

《中國linux論壇man手冊頁翻譯計劃》:

http://cmpp.linuxforum.net

pdf