Mac の画面共有を iPhone から起動する (2)「画面共有を起動するコマンドを考える」

ターミナルから簡単に画面共有のオン・オフを変更出来るコマンドを考えてみました。

SSH でログインすると $HOME/.bashrc が読み込まれるのでとりあえず alias でそのままコマンドを書いてみました。

.bashrc
alias startss="sudo touch /etc/ScreenSharing.launchd"
alias killss="sudo rm /etc/ScreenSharing.launchd"

 

上の方法だとちょっと寂しいのでシェルスクリプトの勉強も兼ねて一工夫してみました。接続中に再度 touch を実行するとファイルが変更されて接続が切れてしまうかも…と思ったのでファイルの有無で条件分岐にしてみたけど、実際にやってみたら単にファイルが更新されるだけで接続は切れないみたい。

.bashrc
alias startss="if [ ! -e /etc/ScreenSharing.launchd ]; then sudo touch /etc/ScreenSharing.launchd > /dev/null 2>&1 && echo '画面共有を開始しました'; else echo '画面共有は実行中です'; fi"
alias killss="if [ -e /etc/ScreenSharing.launchd ]; then sudo rm /etc/ScreenSharing.launchd > /dev/null 2>&1 && echo '画面共有を解除しました'; else echo '画面共有は実行されていません'; fi"

 

改行使って書くならこんな感じ。(alias の中って改行出来ないものだと思ってましたが改行してもいいんですね)

.bashrc
alias startss="if [ ! -e /etc/ScreenSharing.launchd ]; then
     sudo touch /etc/ScreenSharing.launchd > /dev/null 2>&1 && echo '画面共有を開始しました'
else
     echo '画面共有は実行中です'
fi"
alias killss="if [ -e /etc/ScreenSharing.launchd ]; then
     sudo rm /etc/ScreenSharing.launchd > /dev/null 2>&1 && echo '画面共有を解除しました'
else
     echo '画面共有は実行されていません'
fi"

 

実行結果はこんな感じになります。

bash
$ startss # /etc/ScreenSharing.launchd を作成
画面共有を開始しました
$ startss # ファイルが存在するのでメッセージのみ
画面共有は実行中です
$ killss # /etc/ScreenSharing.launchd を削除
画面共有を解除しました
$ killss # ファイルが存在しないのでメッセージのみ
画面共有は実行されていません 

 

んで、.bashrc がダサくなったので ss という名前の外部スクリプトを作ってみました。ついでに引数を使って終了コマンドが使えるようにしてみたり。パスの通っているところに実行権限を付けて置いておけば ssss -k だけで画面共有のオン・オフが切り替えられます。

ss
#!/bin/sh

FOO="$@"

if [ ! "${FOO}" = "-k" ]; then
    if [ ! -e /etc/ScreenSharing.launchd ]; then
        sudo touch /etc/ScreenSharing.launchd > /dev/null 2>&1 && echo "画面共有を開始しました"
    else
        echo "画面共有は実行中です"
    fi
else
    if [ -e /etc/ScreenSharing.launchd ]; then
        sudo rm /etc/ScreenSharing.launchd > /dev/null 2>&1 && echo "画面共有を解除しました"
    else
        echo "画面共有は実行されていません"
    fi
fi

 

iPhone の SSH クライアントからコマンドを実行してみます。

 

これで今年の冬は布団から出なくても良さそうだ…(・∀・)ニヤニヤ