Mac OS XやFreeBSDには、 /usr/bin/smbutil というコマンドがある。詳しいことは man してもらうとして、 ざっくり言うと、Windowsのネットワークサービスを使う便利なコマンドだ。
ブロードバンドルータを1台置いてdhcpサーバ機能を有効にし、WindowsなPCを
何台か繋いだ環境を想定してみる。ネットワークコンピュータを見てみると、
繋がっている他のコンピュータが表示されているし、共有フォルダがあれば、それも
表示される。
が、ちょっとここで考えてみよう。通信するには相手のIPアドレスが
わからなければならない。dhcpを使っていると、コンピュータに割り当てられる
IPアドレスは、常に同じであるという保証はない。Dynamic DNSという機能を使って、
コンピュータ名とdhcpで割り当てられたIPアドレスを登録するという方法もあるが、
そんな機能のないブロードバンドルータを使っていても、
ネットワークコンピュータには繋がっているコンピュータが表示される。一体、
どうやってIPアドレスを調べているのだろうか。
Windowsには、独自の名前解決(コンピュータ名←→IPアドレス 変換)がある。 DNSを使った名前解決も行われるので、Windowsを使っている限り、2つを意識することは ない。UNIXからネットワークコンピュータを探そうと思って始めて、あれ?という ことになる。
と、前振りが長くなったが、smbutilはこのWindowsの名前解決やってくれる。
Windowsの共有フォルダに対していろいろやろうとするなら、
Sambaを使ったほうがいいが、名前さえ
解決できれば…という時は、これ。
例えば、リモートデスクトップのクライアントの1つである、
rdesktopを使うときに
#!/bin/sh
if [ $# -ne 1 ]; then
echo "Usage: $0 hostname"
exit 1
fi
smbutil lookup $1 | awk -F $1: '/IP/{print $2;}' | xargs rdesktop -f -a 24 -r sound:remote
Sambaのクライアントソフトであるsmbclientを使うと、Windowsネットワークに ある共有資源をいろいろと使えるのだが、その話はまたの機会に。