ターミナルから画面共有を有効にする
画面共有はとっても便利なんだが、たまに、接続したいマシンの「画面共有」のチェックを入れ忘れていたりして、がっくりする...。もし、sshで接続して、コマンドから画面共有の有効・無効を切り換えることができれば、その瞬間、幸せな人生を感じることが出来そう。...なんて考えていたら、そんな技が紹介されていた。早速、試してみる。
コマンドで画面共有を入・切
拙い英語の理解力で読み取ると、その技は、以下のようなコマンドになる。(上段:有効にする/下段:無効にする)
# OSX 10.5 sudo echo -n enabled > /Library/Preferences/com.apple.ScreenSharing.launchd sudo rm /Library/Preferences/com.apple.ScreenSharing.launchd # OSX 10.6 sudo echo -n enabled > /private/etc/ScreenSharing.launchd sudo rm /private/etc/ScreenSharing.launchd
ところが、アクセス権がないと怒られる...。
$ sudo echo -n enabled > /private/etc/ScreenSharing.launchd -bash: /private/etc/ScreenSharing.launchd: Permission denied
- sudo付けてるのに、なぜ?
- sudo rmの方は問題ないのに...。
もう一度読み直してみると、コメントで議論され、解決されていた。
$ sudo sh -c "/bin/echo -n enabled > /private/etc/ScreenSharing.launchd"
- 想像するに、最初は、sudoの効力がリダイレクト先に効いていなかったということか?
さらに試すと、ファイルの有無に意味があるようで、もっとシンプルに以下のコマンドでも有効になった。
$ sudo touch /private/etc/ScreenSharing.launchd
- 但し、GUIのシステム環境設定 >> 共有 >> 画面共有のチェックを入れると、「enabled」が書き込まれたファイルが生成される。
必要最小限のコマンド
- 同じことを実現できるのなら、コマンドは短い方が良い。
- 自分の場合は、以下のコマンドとして覚えることにした。
-
- OSX環境において、/private/etc = /etc
-
# OSX 10.5 sudo touch /Library/Preferences/com.apple.ScreenSharing.launchd sudo rm /Library/Preferences/com.apple.ScreenSharing.launchd # OSX 10.6 sudo touch /etc/ScreenSharing.launchd sudo rm /etc/ScreenSharing.launchd
- 10.5と10.6の違いは、ディレクトリだけでなく、ファイル名も違っている所に注意。
sudo touch /etc/com.apple.ScreenSharing.launchd ... NG sudo touch /etc/ScreenSharing.launchd ... OK
- 最初、上段のように書いてしまって、一向に画面共有が開始されず、かなり悩んだ。
sshで接続する
例:
- 管理者ユーザ名:zari
- コンピュータ名:MacBook.local
不明な場合は、以下のコマンドで調べられる。
$ whoami zari $ hostname MacBook.local
ターミナルを開いて...
- リモートログインして、
- 画面共有を有効にして、
- 画面共有を無効にして、
- ログアウトしてみた。
$ ssh zari@macbook.local Password: Last login: Wed May 19 03:48:18 2010 MacBook:~ zari$ sudo touch /etc/ScreenSharing.launchd Password: MacBook:~ zari$ sudo rm /etc/ScreenSharing.launchd MacBook:~ zari$ exit logout Connection to macbook.local closed.
- 大文字・小文字は区別されないようなので、MacBook.local = macbook.local
- MacBook.localの部分は、IPアドレス指定でもOK。(例:ssh zari@10.0.1.2)
これで、リモートログインできるなら、何とかなる。