web-dev-qa-db-ja.com

リモートSSHを介して完全なコマンドを実行する

可能性のある複製:
sshを使用してリモートマシンでシェルスクリプトを実行する方法

私は、リモートサーバーの毎日のcronジョブで実行されるbashスクリプトを作成して、sshを介して別のunixボックスに自動的にログインし、いくつかのコマンドを実行してから終了しようとしています。

#!/bin/bash
ssh machinehost.com -l admin -p 2222 "/usr/bin/find /share/Public/backups/set0 -mtime +14 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set1 -mtime +4 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set2 -mtime +3 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set3 -mtime +21 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set4 -mtime +2 | xargs rm -f;
                               /usr/bin/find /share/Public/backups/set5 -mtime +2 | xargs rm -f;
                               "

私が抱えている問題は、現在の既存のコードを変更して、各コマンドの前にもう少し複雑なことをする必要があることです

if [ $(ls /share/Public/backups/set1 -1 | wc -l ) -gt 4 ] then run above command
fi

このコマンドをローカルのcronマシンではなく、リモートのsshマシンで実行するにはどうすればよいですか?

21
Nicarlo

ローカルでbashスクリプトを記述して、以下を呼び出してみてください。

ssh [email protected] 'bash -s' < local_script.sh

ここの議論で見つかります

47
mopsled

スクリプトを作成してリモートマシンにコピーし、sshからそのスクリプトだけを実行します。

3
TMS

もう1つの回避策は、pythonを使用することです。問題を解決できる pexpect というモジュールがあり、さらに複雑なシナリオがあります。

1
Kit Ho