如何从远程服务器执行保存在本地系统中的脚本?

如何从远程服务器执行保存在本地系统中的脚本?

我想从远程 Unix 服务器执行保存在本地系统上的脚本,以帮助我自动化部署过程。该脚本包含一些命令,用于重命名远程 Unix 服务器上的现有文件,然后将新文件从本地系统传输到 Unix 服务器。

有没有办法做到这一点?

答案1

您选择的工具是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 和标准输入

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

-T选项禁用伪终端分配。这可能有助于修复一些奇怪的问题。

这里缺少以下功能:

  • 该脚本必须是与远程帐户的默认 shell 兼容的 shell 脚本。
  • 命令行参数不起作用。

作为一种可维护的解决方法,您可以将包含解释器和参数的自定义生成的脚本视为输入。

相关内容