可能性のある複製:
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マシンで実行するにはどうすればよいですか?
ローカルでbashスクリプトを記述して、以下を呼び出してみてください。
ssh [email protected] 'bash -s' < local_script.sh
( ここの議論で見つかります )
スクリプトを作成してリモートマシンにコピーし、sshからそのスクリプトだけを実行します。
もう1つの回避策は、pythonを使用することです。問題を解決できる pexpect というモジュールがあり、さらに複雑なシナリオがあります。