繁体   English   中英

通过代理服务器SSH到远程计算机以运行带有参数的脚本

[英]ssh to remote machine via proxy server to run a script with parameters

我想通过代理服务器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

使用此命令,我将无法运行上述脚本

如果我做错了,请您帮忙

您可以使用Bash here文档来使脚本更整洁:

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文档,成为标准输入。 如果引用了单词的任何字符,则文档的字符不作任何解释; 否则,将发生参数扩展,命令替换和算术替换,\\ new-行将被忽略,并且必须使用\\来引用字符\\,$,`。 如果将-附加到<<之后,则会从单词和文档中删除所有前导制表符。 如果将#附加到<<之后,则会从文档的第一行中去除前导空格和制表符,并从剩余的行和单词中去除等效的缩进。 为了确定缩进,假定每8列出现一个制表位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM