Macで終了

Macで終了

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

閉じようとすると、アプリケーションに次のメッセージが表示されます。

Ubuntuが終了したら:

「接続エラー」

Ubuntuが始まると:

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

これにより、アプリケーションが実際にzshにアクセスできると考えられます。それでは、次のように「osascript」のエイリアスを作成できませんか?

alias osascript="shutdown -h now"

問題は、Iphoneアプリからまだメッセージを受信して​​いることです。

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

どんなアイデアがありますか?私の考えでは、アプリケーションはSSHを使用しており、Ubuntuのエイリアスと同じユーザー名を使用しているようです。

失敗した検索の場合:「.zsh_history」にリモートアクセスコマンドを表示する必要がありますか?これにはアプリケーションのコマンドは表示されません。

答え1

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

答え2

sshエラーメッセージは、少なくとも次のssh someuser@somehost somecommandコマンドを直接実行しようとした失敗した試みと一致します。zshアプリケーションの起動方法とエイリアスを入れた構成ファイルによっては、ロードされない場合があります。また、履歴ファイルは対話型セッションによってのみ記録されます(「Good Thing™」です。すべてのzshスクリプトが実行されたときにその内容を履歴ファイルにダンプしたと想像してください)。


osascriptコマンドラインはAppleScriptソルバーです。Forquarヒント)。したがって、Ubuntuでは動作しません。ただし、アプリケーションはコマンドライン引数を介していくつかの小さなスクリプトを実行してMacを終了する可能性があります。

  • コンピュータをシャットダウンするだけの場合は、/usr/bin/osascriptUbuntuコンピュータにいくつかのスクリプトを配置してコンピュータをシャットダウンできます。たとえば、

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

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

    YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
    
  • 他のコマンド(終了、再起動など)に反応するには、アプリケーションで使用されているコマンドラインパラメータを検索してください。これを行うには、まずUbuntuコンピュータに次のスクリプトを名前で配置しますosascript/usr/binリストされているすべてのパスはPATH理論的にこれを行う必要があります。残念ながら、ssh独自の設定があることがよくあります。以下を参照してください)。PATH

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

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

    これで、アプリケーションが提供する必要があるさまざまなオプションを実行し、毎回ログファイルの出力を確認できます(役に立つ可能性tail -F /path/to/logfileがあります)。各出力の違いを見つけ、それに応じて反応するスクリプトを書くだけです。


上記のように、ターミナルセッション()で得られたものと大きく異なる可能性があるssh独自の設定を使用できます。幸い中古を簡単に回収できます。PATHecho $PATHPATHssh

    ssh localhost 'echo $PATH'

/usr/local/sbinまたはそこにいる場合は、/usr/local/binそこにスクリプトを置くことをお勧めしますが、リストされているディレクトリのいずれかが可能です。

関連情報