Запуск полных команд через удаленный ssh ​​

Возможный дубликат:
как использовать ssh для запуска сценария оболочки на удаленном компьютере?

Я пытаюсь создать сценарий bash, который запускается на ежедневных заданиях cron моего удаленного сервера, чтобы автоматически входить в систему через 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?


person Nicarlo    schedule 13.08.2011    source источник
comment
@Wooble Другой вопрос заключался в том, чтобы узнать, как запустить сценарий оболочки на удаленном компьютере, где это решение проблемы для этого плаката. Думаю, вопрос в другом.   -  person mopsled    schedule 13.08.2011


Ответы (3)


Попробуйте написать свой сценарий bash локально и позвонить:

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

(Обнаружено в обсуждении здесь )

person mopsled    schedule 13.08.2011

Напишите сценарий, скопируйте его на удаленную машину и запустите из ssh только этот сценарий.

person Tomas    schedule 13.08.2011
comment
Это подход, который я использую на своих серверах. - person djhaskin987; 13.08.2011

Другой обходной путь - использовать python. Существует модуль под названием pexpect, который может решить вашу проблему и даже более сложный сценарий.

person Kit Ho    schedule 13.08.2011