仕事の都合でMacのインターネット共有のオンオフを割りと頻繁に切り替えている
今までは「システム環境設定」の「共有」の「インターネット共有」のチェックボックスを押して切り替えていたのだがいかんせんめんどくさい
ターミナルとかAlfredからぽんと1発で切り替えたい!!
どーせコマンドかなんかあってちょちょいのちょいでしょ!!
・・・
ググってもでてこねぇ・・・!!
コマンドワンパンじゃねぇのか・・・
と諦めかけていた矢先、やはり先人は偉大であるのであった
Start/Stop Internet Sharing via Terminal in Yosemite without AppleScript
恐ろしい発想の転換だ
インターネット共有は常にONにしておいて経路に用いるネットワーク設定のほうを切り替えるとは・・・
下準備
インターネット共有に使うための経路を用意する
システム環境設定のネットワークを開く
使いたい経路を選んで歯車ボタンから「サービスを複製...」を選ぶ
とりあえずこの例では「Thunderbolt Ethernet」を元に「Sharing」という名前で保存
優先度は一番下にしておく
共有設定をする
システム環境設定の共有を開く
「共有する接続経路」に先ほど作成した「Sharing」を設定、Wi-Fiを使用することにして、「入」に!
以上で事前準備は終了
ターミナルから切り替える
以下のコマンドをターミナルから叩く
$ sudo networksetup -setnetworkserviceenabled "Thunderbolt Ethernet" off
$ sudo networksetup -setnetworkserviceenabled "Thunderbolt Ethernet" on
ね?簡単でしょ?
普段インターネット接続に使っている「Thunderbolt Ethernet」がoffになると待機していた「Sharing」が使われ、共有の経路が出来上がるという仕組み
逆にonになると、優先度の低い「Sharing」は使われなくなるので共有も止まる
on,offの記述が「やりたいこと」と「パッと見の見た目」とで逆だし絶対忘れるので叩くと切り替えてくれるの書いた
共有してるかどうかはWi-Fiのアイコンとかみればわかるしね
service="Thunderbolt Ethernet"
status=`networksetup -getnetworkserviceenabled "$service"`
if [ $status = 'Disabled' ]; then
sudo networksetup -setnetworkserviceenabled "$service" on
else
sudo networksetup -setnetworkserviceenabled "$service" off
fi
パスワード入力がめんどくさいから/etc/sudoers
でnetworksetup
を許可した、なんかザルな気もする
$ sudo visudo
# 下記をどっかに追加(%userは自分のユーザ名に置き換える)
%user ALL=(root) NOPASSWD: /usr/sbin/networksetup
Alfredから切り替える
ターミナルからはいいけどAlfredからでも切り替えられるようにしたい・・・どうしよう
そうだ、Automatorだ!
というわけでAutomatorでアプリ化した、もはやDockからでも切り替えられる
Automatorを起動して、アプリケーションを選択
シェルスクリプトの実行を選んできてコードをぽい!
Automatorのシェルスクリプト実行だとsudo
つけてるとパスワードの入力で止まっちゃうので外す
sudo
がついてないといつものシステムダイアログでパスワードを聞いてくる
(/etc/sudoers
でnetworksetup
を許可していれば止まらないのでsudo
つけてても良い)
出来上がった
アプリケーションなのでAlfredにかぎらずSpotlightからでもDockからでもFinderからでもopen /Applications/InternetSharing.app
からでも何でも起動できるぜ!!!
ああ〜超快適になった!