ノートブックでサーバースクリプトを起動する

ノートブックでサーバースクリプトを起動する

私のラップトップからSSH経由でアクセスできるサーバーがあります。

私は、特定のスクリプトを起動するためにサーバーにシグナルを送信するスクリプトをラップトップで実行できるようにしたいと思います。

どうすればいいですか?

ベストアンサー1

ssh remotehost 'command1 ; command ; command3'

または、コマンド1が成功した場合はコマンド2を実行し、コマンド2が成功した場合はコマンド3を実行したい場合:

ssh remotehost 'command1 && command && command3'

シェル引用の問題に特別な注意を払う必要があります。リモートシェルからコマンドを実行するためにローカルシェルにコマンドを入力すると、非常に複雑になる可能性があります(ローカルシェルを使用しても問題が発生する可能性があります)。たとえば、次の2つのコマンドの違いを考えてみましょう。

ssh remotehost 'ps hu -Csshd | awk "{print \$2}"'
ssh remotehost 'ps hu -Csshd | awk "{print $2}"'

最初は、sshdプロセスのPIDを印刷します。 2番目はsshdプロセスの完全なps huリストを印刷します。エスケープされていない$ 2は空の文字列なので、awkコマンドは次のようになります。{print }

3番目のオプションは、リモートホストでpsを実行し、ローカルでawkを実行することです。

ssh remotehost ps hu -Csshd | awk '{print $2}'

上記の2つのコマンドで引用された文字列全体は、sshコマンドで指定された引数であるため、リモートホストで実行されます。この例では |.リモートで実行されます(つまり、「ps」、「hu」、および「-Csshd」はsshコマンドの引数であり、残りの行はローカルで実行されるためです)。

1行で実行したいよりも複雑な操作の場合(またはシェル参照がめちゃくちゃになった場合)、シェルスクリプトを作成してリモートホストにコピーし、sshを使用して実行できます。

vi myscript.sh
chmod +x myscript.sh
scp myscript.sh remotehost:/usr/local/bin/
ssh remotehost myscript.sh

任意の場所にスクリプトをコピーできますが、a)ディレクトリへの書き込み権限が必要です。b)実行しない限り、noexecでマウントされたファイルシステムには存在できません(通常はありませんが、/tmpはnoexecとしてマウントされます)。次のコマンドを使用します。 "/path/to/interpreter /path/to/script" - 例:/bin/bash /tmp/myscript.sh

おすすめ記事