2月 212014
システム環境設定→共有→画面共有をon/offできるコマンドを作った。
gistに置いてある。
% git clone https://gist.github.com/9120415.git
使い方
% vnc startで有効/無効できる。
% vnc stop
用途
sshだけ有効になっていて、画面共有が無効なMacなどで便利だと思う。例えばうちではサーバーとしてMacMiniを使ってるんだけど、OSアップデートをインストールしたい時とかGUIが必要で、でもずっと画面共有を開けっ放しにしておくのは気持ち悪い。
VNCする前に
% ssh ホスト名 vnc startで有効にできるので平和だと思う。
普段持ち歩いてるMacbookが家のwifiに接続されたら自動的に画面共有を有効にして、タブレットからも操作できるようにする、とかもできそう。
スクリプト
#!/usr/bin/env ruby
## enable/disable VNC on Mac OSX (testing with OSX 10.9)
def show_current_status
if system "sudo launchctl list | grep com.apple.screensharing > /dev/null" and
system "sudo defaults read /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled | grep 'Disabled = 0' > /dev/null"
puts "VNC: enabled"
else
puts "VNC: disabled"
end
end
def show_help
app_name = File.basename $0
STDERR.puts "% #{app_name} start # enable VNC"
STDERR.puts "% #{app_name} stop # disable VNC"
show_current_status
end
if ARGV.empty?
show_help
exit 1
end
enable = case ARGV.shift
when "start" then true
when "stop" then false
else
show_help
exit 1
end
system "sudo defaults write /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled -bool #{!enable}"
if enable
system "sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist"
else
system "sudo launchctl unload /System/Library/LaunchDaemons/com.apple.screensharing.plist"
end
show_current_status