关于bash:通过远程ssh运行完整命令

Running full commands through remote ssh

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
how to use ssh to run shell script on a remote machine?

我正在尝试制作一个bash脚本,它运行在远程服务器的每日cron作业上,通过ssh自动登录到另一个unix机器,运行一些命令,然后离开。

1
2
3
4
5
6
7
8
#!/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;
                              "

我现在遇到的问题是,我需要修改我当前的现有代码,以便在执行每一个命令(如

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

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


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

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

(在这里的讨论中找到)


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


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