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を参照。