2009-12-08
hostsファイルの自動書き換え
自宅LAN内から自宅サーバーをいじろうとすると、名前解決周りが少し面倒だったりする。
外出先から自宅サーバーを見るときにはkishibe.dyndns.tvを叩けばいいだけなのだが、自宅LAN内からこれを叩こうとすると、ルーターのほうを見に行ってしまう。これはdyndnsによりルーターのWAN側のIPに名前解決されてしまうためだ。そのため、内部から見る場合はマシン名を使って名前解決するかIPをじか打ちしなければならないのだが、これは結構面倒だ。
hostsファイルを書き換えれば内部LANからkishibe.dyndns.tvで自宅サーバーを引くことができるのだが、今度は出先で意味のないIPに解決されてしまう。
これらを解決するために少し前まではhostsファイルを内部LANと出先で書き換えるbatファイルを用意しておき、ネットする場所に応じて適宜hostsファイルの書き換えをして対処していた。だが、これも面倒になってきた。
どうにかhostsファイルを自動的に書き換えられないかと思っていたところ、そこそこよいアイデアが思いついた。プログラムでkishibe.dyndns.tvにアクセスできるかどうかを調べて、その結果に応じて内部LAN用と出先用の設定を切り替えればよいのだ。考えてみれば単純なことだった。さらにブラウザのプロファイルを自宅サーバーで共有するためのスクリプトに組み込めば、ブラウザ立ち上げ時に自動的に設定を書き換えてくれる。これは便利かもしれない。
ということで書いてみた。
#!/usr/bin/python import os import time import urllib import shutil url = 'http://kishibe.dyndns.tv:8080/' hosts_file_path = 'c:/Windows/System32/drivers/etc/hosts' def contain(file_path, text): for line in open(file_path): if line.find(text) != -1: return True return False is_local = contain(hosts_file_path, 'kishibe.dyndns.tv') try: urllib.urlopen(url).close() print 'kishibe.dyndns.tv was found.' except: print 'kishibe.dyndns.tv was not found.' src = None if is_local: print 'copying hosts.global to hosts' src = '/home/nodchip/firefox/hosts.global' else: print 'copying hosts.local to hosts' src = '/home/nodchip/firefox/hosts.local' shutil.copy(src, hosts_file_path) os.system('rsync -avzu --progress --delete --exclude urlclassifier3.sqlite kishibe.dyndns.tv:~/firefox ~/') os.system('firefox.exe') while os.system('tasklist /FI "IMAGENAME eq firefox.exe" | grep firefox.exe') == 0: time.sleep(5) os.system('rsync -avzu --progress --delete --exclude urlclassifier3.sqlite ~/firefox kishibe.dyndns.tv:~/')
動かしてみたところ、意図したとおりに動いてくれた。しばらくはこんな感じでやっていこうと思う。
- 12 http://mixi.jp/view_diary.pl?url=http://d.hatena.ne.jp/nodchip/20091208/1260286027&owner_id=1394387
- 12 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=4Bi&q=疑似乱数関数&btnG=検索&lr=lang_ja&aq=f&oq=
- 12 http://www.google.co.jp/search?q=Windows7+送る&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 11 http://crazy-man.cocolog-nifty.com/blog/2009/10/windows-7bsod-9.html
- 10 http://search.yahoo.co.jp/search?p=ダブルラリアット+歌詞&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=1&oq=だぶるらり
- 9 http://www.google.co.jp/search?hl=ja&source=hp&q=windows7+クイック起動&lr=&aq=0r&oq=windows7+くいっく
- 9 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4RNWN_ja___JP205&q=windows7+ブルースクリーン
- 8 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja:official&channel=s&hl=ja&source=hp&q=sendto windows7&lr=lang_ja&btnG=Google+検索
- 7 http://www.google.co.jp/search?hl=ja&q=windows7+??????&lr=lang_ja
- 6 http://chihara.naist.jp/opencv/?掲示板