NBTなネットワークへCLIで Samba編
Windowsの共有に対して、*NIXから接続したいことは結構ある。いくつかメモしておく。
NetBIOS名の解決やシェア名の取得
nmblookupを使う(Sambaに含まれる)
IPアドレスからNetBIOS名を引くには、以下のようにする。
hostA# nmblookup -A 192.168.X.X
params.c:pm_process() - Processing configuration file "/usr/local/etc/smb.conf"
Processing section "[global]"
added interface ip=192.168.X.X bcast=192.168.X.255 nmask=255.255.255.0
Socket opened.
Looking up status of 192.168.X.Y
DATA1 <00> - B <ACTIVE>
DATA1 <03> - B <ACTIVE>
DATA1 <20> - B <ACTIVE>
DOC <00> - <GROUP> B <ACTIVE>
DOC <1e> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00ふつーにNetBIOS名からIPアドレスを引くなら、単純に引数として渡すだけでOK。
hostA# nmblookup data1 params.c:pm_process() - Processing configuration file "/usr/local/etc/smb.conf" Processing section "[global]" added interface ip=192.168.X.X bcast=192.168.X.255 nmask=255.255.255.0 Socket opened. querying data1 on 192.168.X.255 Got a positive name query response from 192.168.X.2 ( 192.168.X.2 ) 192.168.X.2 data1<00>
シェアの一覧とシェアへの接続
NetBIOS名かIPアドレスがわかれば、接続できる。
hostA# smbclient -N -L data1
Domain=[DATA1] OS=[Unix] Server=[Samba 3.0.x]
Sharename Type Comment
--------- ---- -------
strage1 Disk somethings
strage2 Disk somethings
IPC$ IPC IPC Service (SRV)実際に接続したいシェアがわかれば、あとは接続して操作できる。
hostA# smbclient -N //data1/strage1
Domain=[DATA1] OS=[Unix] Server=[Samba 3.0.x]
smb: \> ls
. D 0 Wed Dec 24 20:01:55 2008
.. D 0 Wed Dec 24 20:01:59 2008
somedata.txt 28 Thu Nov 1 14:03:36 2007
stock1 D 0 Wed Dec 24 19:44:31 2008
stock2 D 0 Wed Dec 24 19:44:31 2008
Document D 0 Wed Dec 24 20:01:57 2008
57742 blocks of size 4194304. 19141 blocks availableこのとき、環境変数 USER があれば、それがユーザー名として使われる。が、普通は設定してないだろうから、GUESTとしてログオンすることになる。もし、GUESTではなくて、特定のユーザー名とパスワードを使用する場合には、-U オプションを使うべし。
hostA# smbclient -U interplinker //data1/strage1 Password: Domain=[DATA1] OS=[Unix] Server=[Samba 3.0.x] smb: \>
パスワードを空にすると、GUEST扱いになる。
hostA# smbclient -U interplinker //data1/strage1 Password: Anonymous login successful Domain=[DOC] OS=[Unix] Server=[Samba 3.0.x]
パスワードが違うとこうなる。
hostA# smbclient -U interplinker //data1/strage1 Password: session setup failed: NT_STATUS_LOGON_FAILURE
smbclientので使えるコマンドは、割とftpコマンドと似ていて、ls/put/mput/get/mget/rm/rmdirが使える。操作の詳細は、smbclientを参照。