通过远程SSH运行完整的命令

21

可能是重复问题:
如何使用ssh在远程机器上运行shell脚本?

我正在尝试创建一个bash脚本,在我的远程服务器的每日cron作业中自动登录到另一个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上运行?


@Wooble 另一个问题是要求在远程计算机上运行shell脚本的方法,而这是对此帖子的问题的解决方案。我认为这个问题足够不同。 - mopsled
3个回答

47

3

编写一个脚本,将其复制到远程机器上,并通过ssh仅运行该脚本。


这是我在我的服务器上使用的方法。 - djhaskin987

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接