Я хочу выполнить скрипт, сохраненный в локальной системе с удаленного сервера Unix, чтобы помочь мне автоматизировать процесс развертывания. Сценарий содержит несколько команд для переименования существующего файла на удаленном Unix-сервере и последующей передачи нового файла из локальной системы на Unix-сервер.

Есть ли способ сделать это?

1 ответ1

0

Инструмент по вашему выбору ssh .
Просто вызовите ssh user@remoteHost remoteScript для запуска вызова в локальной системе с удаленного сервера Unix. Смотрите man ssh для более подробной информации.

Если сценария еще нет на конечном компьютере, у вас есть два способа его выполнить.

через scp

function remoteCallSCP() { # <remoteAccount> <script> <interpreter> [arguments}       
   local remoteAccount=${1}
   local script=${2}
   shift scriptRunner=${3} 
   shift 3 # script arguments are following
   local tmpFile=$(mktemp) # not perfect, but 99% good
   scp ${script} ${remoteAccount}:${tmpFile} # executable bit is lost
   ssh ${remoteAccount} ${scriptRunner} ${tmpFile} 

}

через ssh и stdin

 function remoteCallStdIn() { # <remoteAccount> <script>
     local remoteAccount=${1}
     local script=${2}
     ssh -T ${remoteAccount}  <${script}
}

Опция -T отключает псевдо-tty распределение. Что может помочь исправить некоторые странные проблемы.

Здесь отсутствуют следующие функции:

  • Сценарий должен быть сценарием оболочки, совместимым с оболочкой по умолчанию для удаленной учетной записи.
  • Аргументы командной строки не работают.

В качестве поддерживаемого обходного пути вы можете рассматривать пользовательские сгенерированные сценарии как входные данные, которые содержат интерпретатор и аргументы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .