あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

hostsを書き換えるスクリプト完成

自宅でgitサーバーを運用中であるが、DNSサーバーを建てていないのでサーバーのLAN内に入った時にいちいち

/etc/hosts

を書き換えなければならない。(コメントアウトするか外すか)

例えば

192.168.0.2 example.com

#192.168.0.2 example.com

にするためだけに、

sudo vim /etc/hosts

として書き換えるのは阿呆らしい。

かといって稼働中でバリバリ使用中のサーバーサイドをいじりたくなかったので、hostsファイルを半自動で書き換えてしまえと思いました。

以下シェルスクリプト(OSX用)

#!/bin/sh
var=`sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I|grep "\sSSID"|sed -e "s/[^:]*: //"`
var2=`cat /etc/hosts|grep "example"`

if [ -z ${var} ]; then	#
	echo "Please turn on Wifi or connect to the Wifi spot!"
	exit 1
elif [ ${var} = "your_SSID" ]; then
	echo ${var2} | grep '#'
	if [ $? -eq 0]; then
	#if [ !`echo ${var2} | grep -q '#'` ]; then
		sed -i -e '/example/s/^#//' /etc/hosts
	fi
else
	echo ${var2} | grep -q '#'
	if [ $? -eq 0 ]; then
	#if [ `echo ${var2} | grep -q '#'` ]; then
		echo "already have #"
	else
		echo "add # on the beginning"
		sed -i -e '/example/s/^/#/' /etc/hosts
	fi
fi
exit $?

Githubにもソースをあげているのでご自由にどうぞNa0ki/hosts_rename_script · GitHub

上から順に雑に説明します。

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I

で以下の情報が得られます。(値は適当に変えてあります)

     agrCtlRSSI: -57
     agrExtRSSI: 0
    agrCtlNoise: -95
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 300
        maxRate: 300
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: 0:0:00:00:00:00
           SSID: your_SSID
            MCS: 15
        channel: 44,1

ここからSSIDの行grepしてsedで整形してあげれば、SSIDを取得できます。(varの中身)

次にexample.comのある行を取得したいのでexampleでgrepをかけています。

最初のifではwifiが接続されていない場合を想定しています。wifiが接続されていない場合はNULLが返ってくるため

[ -z ${var} ]

でNULLの場合の処理に持って行っています。

次のifはサーバーと同一LAN内にいる場合の処理を書いています。

sedexample.comの行頭のコメントアウトを外しています。

最後はサーバーのLAN外にいるときはコメントアウトするように処理しています。

以上です。

 

シェルスクリプトを普段書かないので書式に随分と苦しめられました。

助けてくれた友人に感謝。

OSXではlaunchdでスクリプトをバックグラウンドで動かせるらしいので、このスクリプトを動かせるようにlaunchdの勉強中です(☝  ՞ਊ ՞)☝

ではでは

 

Is Initial View Controller

一番最初のビューについてる矢印をうっかり消してしまい、そういやどうやってつけるんだっけと思ったので覚え書き。

 

最初にもってきたいView Controllerを選択した状態で右側のUtilitiesにあるAttributes inspectorを開き、Is Initial View Controllerにチェックをいれて終わり。

 

友人に聞くまで知らんかった。

XPeria Z3にかえた

f:id:ahiruZ:20141125200439j:plain

XPeria UL(SOL22)からXPeria Z3(SOL26)にかえました。

 

ハード的にはULで満足していたのですが、OSの公式アップデートがAndroid4.2で止まっていたため、グローバルモデルのZシリーズに変更しました。

ULが5インチに対してZ3が5.2インチで画面が若干大きくなりました。片手で操作するぶんには困らないサイズです。

本体の縦のサイズはZ3がULより大きく、厚さはZ3の方が薄いです。

Z1などは角がカクカクしていて持ちにくかったのですが、Z3は角が丸くなっているので比較的持ちやすいです。ただULと比較するとULの方が圧倒的に持ちやすかったです。

ソフトウェア面ではZ3はAndroid4.4.4です。

5.0がすでにアナウンスされているので、しばらくしたらアップデートが降ってくると思います。

今のところ改善してほしいと思っているのはアイコンサイズです。やたらとデカイのでせっかくの5インチFHDが台無しです。

しかし、これでやっとAndroidの最新を追いつつ開発ができそうなのでとても嬉しいです。

OSC東京に行ってきた

10/18~19と明星大学で行われたOSC東京Fallに参加しました。

今回はぐるぐるのお手伝いとかしたくて前日の金曜日に東京入り。

スタッフの方の後ろをちょろちょろとついていました(もっと働け

いつもこんなに大変なことをしていたのかとびっくりしました。

OSC東京は今回で3回目ですが、これまでは一般参加でぐるぐるなどはしていませんでした。

ただただいろんなブースを見て回っていただけでした。

一般参加として特に困ることなく楽しめるのは裏方でしっかりと準備してくれるスタッフさん達あってのことだなぁとしみじみと感じました( ˘ਊ˘)

 

続きを読む

gitのブランチでひと悶着

gitを使っていて、よく分からないことが起きたのでひとつ。(解決?済み)

ローカル環境から見ると、リモートにブランチが存在しているように見えるが、実際には存在していないという奇っ怪な現象に見舞われました。

$ git branch -a
  remotes/origin/hoge

となって実際には既にないはずのremotes/origin/hogeがあるというのです。

試しにpushして消そうとしましたが、

$ git push origin :hoge
  error: unable to delete 'hoge': remote ref does not exist
  error: failed to push some refs ro 'ssh://example.com/foo'

と表示され消そうにも消せません。

実際にgitサーバーを確認しても既にないので当たり前といえば当たり前ですが...

そこで友人に教えて貰ったコマンドを使ってみたところ解決!!!

git remote prune origin

どうやらローカル側にキャッシュされていたリモートのブランチが悪さしていたようで、コレを実行すると既にリモートにないリポジトリのキャッシュがローカルから消されるようです。

しばらく悩まされていたので解決して一安心

秘密鍵認証

_人人人人人人人人人人人人人人_
> 今まで使ったことなかった <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

  ☝

        ՞
 _人人人人人人_
 > (     ) <  ☞
  ̄Y^Y^YY^Y^Y ̄

 ՞
      ਊ

初めて使ったので忘れないように...

rootユーザーになり、.ssh/authorized_keysを/home/ユーザー名/.sshにコピー

.sshはなければ自分で作る

コピーしたら、自分のディレクトリでauthorized_keysのオーナーを自分に変更

多分以上

   ∞
   ∫
,';:☜;.`,ਊ,,;';,;☞,.՞
՞
       お わ り