FreeBSD連載(69):使用smbclient訪問Windows資源
通過配置Samba服務器,可以提供Windows客戶機來訪問FreeBSD系統上共享的資源。也能夠在FreeBSD上通過SMB協議訪問Windows系統上的共享資源。只是習慣上Unix計算機用做服務器,Windows計算機用做客戶機,很少有讓Unix訪問Windows計算機的需要。但是越來越多的計算機使用者不但使用Unix作服務器,也使用Unix來處理很多其他任務,那么就可能會需要訪問其他Windows計算機上的資源。
使用smbclIEnt訪問Windows資源
samba軟件中用于訪問網絡上其他SMB資源的軟件為smbclient,它是一個類似于ftp操作方式,通過遠程操作的方式進行文件傳遞的軟件。為了獲得網絡上可以訪問的計算機列表,首先需要使用smbclient來獲得一個Windows計算機共享出來的資源,這需要使用-L參數訪問IPC$資源,對于使用用戶級認證的Windows NT或Samba服務器,可以使用-N參數指定使用空口令登錄,或者使用-U%參數,使用空用戶名和空口令訪問服務器:
$ smbclient -L windows_host -N如果沒有使用-N或-U%,smbclient將提示口令,一般可以直接回車,也可以給予正確的口令。因為一般計算機均允許匿名瀏覽IPC$資源,即能給所有的計算機提供自己所了解的瀏覽數據。smbclient將顯示一個瀏覽數據列表和該機的共享資源列表。
如果不清楚一個Windows計算機的NetBIOS名字,可以使用-I加要訪問計算機的IP地址來代替-L參數及使用的NetBIOS名字。或者可以使用nmblookup先來解析NetBIOS名字。
$ nmblookup fbsdsrvSending queries to 192.168.3.255192.168.3.1 fbsdsrv要想使用smbclient來訪問windows時,也需要使用UNC來標識Windows資源的位置。此時就需要了解Windows UNC在Unix下進行表示的不同之處。不同之處在于Unix的shell下反斜線為特殊字符,它被定義為轉義恢復字符,表示將一些轉義字符恢復為其本身字符的意義。因此必須使用兩個反斜線才能等同于一個反斜線。因此一個UNC實際使用時應使用雙倍的反斜線。
$ smbclient localhostwb -U wbAdded interface ip=192.168.3.1 bcast=192.168.3.255 nmask=255.255.255.0PassWord:Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.0.2]smb:> helpls dir du lcd cdpwd get mget put mputrename more mask del rmmkdirmd rmdirrd promptrecursetranslate lowercase printprintmodequeuecancel quit q exitnewerarchivetar blocksize tarmodesetmodehelp ? !smb:> quit然后就可以使用與ftp相似的命令,如dir,cd,get,put等命令來傳輸文件。
Samba可以用于幫助備份Windows系統,除了使用smbclient之外,Samba還提供了一個shell腳本smbtar,它使用smbclient以及tar,直接將Windows系統中的文件備份到FreeBSD系統中的磁帶設備中。
要使用Windows下的打印機資源,要首先使用smbclient以將打印文檔發送給Windows計算機,并執行print命令。samba軟件包中提供了一個shell腳本smbprint用來使用合適的命令幫助FreeBSD將打印文件發送給Windows打印機。FreeBSD下這個腳本被安裝到/usr/local/share/examples/samba/printing目錄下,可以根據需要將這個腳本復制到/usr/local/bin或其他目錄下,提供給用戶使用。
對于經常使用的Windows打印機,還可以在printcap文件中為它增加一個入口,使用smbprint作過濾器,這樣就將打印輸出直接交給smbprint,用戶不必手工進行控制,而是直接使用FreeBSD系統的打印系統lpr等命令進行打印和管理。這樣還可以將這臺FreeBSD計算機用做一個打印網關,所有的支持LPD方式打印的Unix均可通過這臺服務器的smbprint打印機入口,將打印文檔發送給Windows打印機。
未完,待續。。。