フェムトセカンド #七味とーがラジオ / @melonsode

The Destination is unknown. The Journey is the Reward.
Author: 野澤真一 / NOZAWA Shinichi , version 2.0220330 / Podcast: 七味とーがラジオ / twitter: @melonsode

dscl: adding host name and IPAddress

|

カテゴリ:

あるホスト名とIPAddressを対応させたいとき、
Linuxならば/etc/hostsにあるファイルにそのペアを書き込めばいい。
(例えばこのページを参照:信州大学 7.2 ネットワークの設定

たとえば、自分自身に「http://localhost」とブラウザに打ち込むと
アクセスできるのは/etc/hostsファイルに「127.0.0.1」と
そのホスト名がペアで登録されているからである。

そのことは、たとえばシェルで
「cat /etc/hosts」とやれば見ることができる。
MacもLinuxベースのOSなので、
ターミナルを起動して、同じように打てばそのファイルを見ることができる。
ちなみに「cat」というのはファイルを表示するためのコマンドである。

バイト先でIPアドレスが「192.168.1.50」になっているサーバーに
「http://hogehoge/」というホスト名でアクセスしたい。
Linuxならばvi(テキストエディタ)などで/etc/hostsファイルを開いて、
そこに「192.168.1.50 hogehoge」と一行追加すればよい。

では、Macでそれをやるにはどうしたらいいか?
この場合、Linuxと同じようにはいかない。
viなどをつかって/etc/hostsファイルを書き換えても、
何故か元に戻ってしまうからである。

MacではNetinfo ManagerかDSCLを使わねばならない。

もし使っているOSがMac OS 10.4場合は「Netinfo Manager」という
Macにデフォルトで入っているソフトを使います。
その使い方については以下のページできちんと解説されているので、
そちらを参考にしてください。
/etc/hostsファイルの代わりに・・・

使っているOSがMac OS 10.5の場合はdsclという
コマンドラインソフトを使います。
何故、Netinfo Managerを使わないかというと、
OS 10.5以降はNetinfo Managerが含まれていないからです。
参考:Mac OS X 10.5: 以前「NetInfo マネージャ」にあったいくつかの機能の代わりにコマンドラインユーティリティ "dscl" を使用してください

以下で、dsclを使ったhost nameの登録の仕方を簡単に説明します。

まず、ターミナルを起動します。
そして、以下のように入力します。

sudo dscl

そうすると、パスワードを聞かれるので、
そのMacの管理者権限のパスワードを入力してください。
戸惑うかもしれませんが、Macを起動して
ログインするときのパスワードで大抵はOKです。
そうすると次のようになります。

*****:~ shinichi$ sudo dscl
Password:
Entering interactive mode... (type "help" for commands)
>

「sudo」というのは「superuserでDoする」という意味だと
(僕は勝手に)解釈していますが、
すなわち、管理者権限でそのコマンドを実行するという意味です。
sudo抜きの「dscl」だけを打ち込んでも
dsclは起動しますが、管理者権限をもっていないため、
ホスト名を追加するという処理ができません。
なので、sudoを使います。
sudoはLinuxを日常的に使う人にとってはおなじみのコマンドでしょう。

インタラクティブモードで起動したら、
「hogehoge」というホスト名を「192.168.1.50」に対して設定するために、
以下のように入力してエンターを押します。

-create /Local/Default/Hosts/hogehoge IPAddress 192.168.1.50

これで、登録OKです。
次のように打つことで確認ができます。

-list /Local/Default/Hosts/  (これでファイルができてるか確認)
-readall /Local/Default/Hosts/ (これでそのフォルダ内のファイルの中身全てを見られる)

これできっと「http://hogehoge」とブラウザのアドレスバーに入力するだけで、
「192.168.1.50」にアクセスできるようになったでしょう。

ところで、何故「/Local/Default/Hosts/」に登録したのかは
自分でもあまりよくわかっていません。
試行錯誤したら、ここにしか登録できなかったからです。
dsclを起動して、「ls」と打ってみてください。
そうすると

BSD
Local

Search
Contact

という反応があると思います。
調べてみたところ、hostsファイルらしきものは

BSD/local/Hosts
Local/Default/Hosts

この内、データを書き込めたのはLocal/Default/Hostsのほうのみでした。

なので、

-create /Local/Default/Hosts/hogehoge IPAddress 192.168.1.50

としたのです。

プロフィール

月別アーカイブ

全アーカイブ

フェムトセカンド1.0


メールを送る(故障中)