通过远程ssh运行完整命令

时间:2011-08-13 02:29:55

标签: bash ssh sh

  

可能重复:
  how to use ssh to run shell script on a remote machine?

我正在尝试创建一个在我的远程服务器的每日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

我如何在远程ssh机器上运行此命令而不是在本地cron机器上运行此命令?

3 个答案:

答案 0 :(得分:47)

尝试在本地编写bash脚本并调用:

ssh user@example.com 'bash -s' < local_script.sh

Found in the discussion here

答案 1 :(得分:3)

编写脚本,将其复制到远程计算机,然后从ssh运行该脚本。

答案 2 :(得分:1)

另一种解决方法是使用python。有一个名为pexpect的模块可以解决您的问题,甚至更复杂的情况。