Macとしてシャットダウンする

Macとしてシャットダウンする

Mac コンピューターをリモートでシャットダウンできる iPhone アプリがあります。このアプリで Ubuntu コンピューターをシャットダウンしたいと思います。

シャットダウンしようとすると、アプリケーションから次のメッセージが表示されます。

Ubuntuがオフの場合:

"接続エラー"

Ubuntu がオンの場合:

「zsh:1: コマンドが見つかりません: osascript」

これにより、アプリは実際に zsh にアクセスできると考えられます。もしそうだとしたら、次のように「osascript」のエイリアスを作成できないでしょうか。

alias osascript="shutdown -h now"

問題は、まだメッセージが表示されることです(iPhone アプリ内)。

「zsh:1: コマンドが見つかりません: osascript」

理由について何か考えはありますか? 私の推測では、アプリは SSH を使用しており、Ubuntu のエイリアスと同じユーザー名を使用していると思います。

failsearch の場合: 「.zsh_history」でリモート アクセス コマンドを確認できるのでしょうか? ここではアプリからのコマンドがまったく表示されません。

答え1

Linux をサポートしていないアプリは使用しないでください。「RMsrv Reboot」は Linux の起動とシャットダウンに最適です。

答え2

エラー メッセージは、少なくとも、 を介して直接コマンドを実行しようとして失敗した場合ssh(例: )と一致しています。 の起動ssh someuser@somehost somecommand方法zshと、アプリによってエイリアスを指定した構成ファイルによっては、単に読み込まれなかった可能性があります。また、履歴ファイルは対話型セッションによってのみ書き込まれます (これは「良いこと」です。すべての zsh スクリプトが実行時にその内容を履歴ファイルにダンプすることを想像してください)。


osascriptコマンドラインAppleScriptインタープリタです(四角形ヒントについては、Ubuntu では使用できません。ただし、このアプリはコマンドライン パラメータを使用して、Mac をシャットダウンするための小さなスクリプトを実行している可能性があります。

  • マシンをシャットダウンするだけであれば、/usr/bin/osascriptUbuntu マシンにシャットダウン用のスクリプトを配置するだけで済みます。例:

    #!/bin/sh
    sudo /sbin/shutdown -h now
    

    これは、少なくとも へのパスワードなしのアクセスを前提としています。これを実現するには、 またはそれに含まれるファイルshutdown -h nowに次の行を追加します。/etc/sudoers

    YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
    
  • さまざまなコマンド (シャットダウン、再起動など) に反応したい場合は、 で、アプリがそれらに対して使用するコマンドライン パラメータを取得してみてください。そのためには、まず という名前の次のスクリプトosascript(/usr/bin理論的には にリストされている任意のパスでPATH問題ありません。残念ながらsshは に独自の設定を使用することが多いですPATH。以下を参照してください。) を Ubuntu マシンに配置します。

    #!/bin/sh
    logfile='/path/to/logfile'
    echo "$@" >> "$logfile"
    echo '---->8----' >> "$logfile"
    

    実行可能にすることを忘れないでください(chmod 755 /usr/bin/osascript)。

    これで、アプリが提供するさまざまなオプションを実行し、そのたびにログ ファイルの出力を確認できます (tail -F /path/to/logfile役立つ場合があります)。これで、各出力の違いを見つけて、それに応じて反応するスクリプトを作成するだけです。


上で述べたように、sshは に対して独自の設定を使用する可能性がありPATH、これはターミナルセッション ( ) で取得する設定とはかなり異なる場合があります。幸いなことに、が使用する は次のようにecho $PATH簡単に取得できます。PATHssh

    ssh localhost 'echo $PATH'

/usr/local/sbinまたは がそこに表示されている場合は/usr/local/bin、そこにスクリプトを配置することをお勧めしますが、リストされているどのディレクトリでもかまいません。

関連情報