ssh到远程机器通过代理服务器运行带参数的脚本

时间:2016-05-08 07:02:43

标签: linux shell ssh

我想通过代理服务器ssh到一台机器并在该服务器上运行一个脚本,输入参数传递

我在下面使用:

ssh -t tooladm@200.81.36.188 "ssh -t tooladm@apuatt01" ". ./.profile >/dev/null 2>&1; cd /astxpinfs/ast/tooladm/JHF_SYNC_Particular_HF ; ./SyncToSite.ksh $product $release "${hf_list}" ${LOG_DIR_NAME} 2>&1 > /dev/null"

清关:

假设我在机器A中,并且想要运行位于机器apuatt01中的脚本 没有直接连接黑白机器A和apuatt01 所以我通过200.81.36.188

连接apuatt01

通过使用它,我无法运行上述脚本

请帮助我,我做错了

1 个答案:

答案 0 :(得分:0)

您可以使用Bash here document使脚本更清晰:

ssh -t tooladm@200.81.36.188 -- ssh -t tooladm@apuatt01 <<EOS
source .profile >/dev/null 2>&1
cd /astxpinfs/ast/tooladm/JHF_SYNC_Particular_HF
./SyncToSite.ksh $product $release "${hf_list}" ${LOG_DIR_NAME} 2>&1 > /dev/null
EOS

注意,双短划线将命令与传递给ssh的参数分开。

此语法也适用于ksh。从KornShell手册(man ksh):

  

<<[-]word shell输入被读取到相同的行   删除任何引用后的文字或文件结尾   没有参数替换,命令替换,算术   替换或文件名生成是在word上执行的。该   结果文档,称为here-document,成为标准   输入。如果引用任何单词的字符,那么没有解释   放在文件的字符上;否则,参数   扩展,命令替换和算术替换发生,   \ new-line被忽略,\必须用于引用字符\,   $,`。如果 - 附加到&lt;&lt;,则会从中删除所有前导标签   单词和文件。如果#附加到&lt;&lt;,则引导   空格和制表符将从文档的第一行中删除   最多等同的缩进将被剥离   剩下的行和来自单词。假设标签停止发生在   每8列用于确定缩进。