2006/10/01

smbutilを使う

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
のようにwrapすると、Windowsのコンピュータ名を指定できるようになる。

Sambaのクライアントソフトであるsmbclientを使うと、Windowsネットワークに ある共有資源をいろいろと使えるのだが、その話はまたの機会に。



0 件のコメント :

コメントを投稿

Comments on Google+: