我有两个本地文件,一个包含variables定义的config.sh ,另一个包含bash脚本的script.sh 。
本地,我可以这样做:
source config.sh; bash script.sh
我正在通过SSH寻找相同的东西,到目前为止,我得到了这个工作:
ssh user@host 'bash -s' < script.sh
但我不知道是否应该使用cat或一些inputpipe道<(...)来同时执行config.sh和script.sh。
什么是最好的,干净的方式来执行多个命令,需要一些内容与sshpipe道?
假设这两个脚本都在本地主机上,而不是远程主机上:
cat config.sh script.sh | ssh -T remote_host bash
如果您想在远程端强制使用伪TTY分配,您可能需要使用'-t'标志。 本地SSH进程不会有一个,因为你的标准input来自pipe道。 如果不是远程端的默认shell,只需要在命令行末尾添加string“ bash ”即可。 此外,请注意,除非您的“variables定义”导出有问题的环境variables,否则您的原始代码将无法工作。
使用EXPECT从远程计算机运行脚本,这样脚本就像在本地计算机上一样执行。 这里是关于如何使用EXPECT的简短演示。