ssh远程执行多个文件

ssh远程执行多个文件

我有两个当地的文件,一个config.sh包含变量定义,另一个script.sh包含 bash 脚本。

在本地,我可以这样做:

source config.sh; bash script.sh

我正在通过 ssh 寻找同样的东西,到目前为止我已经完成了这项工作:

ssh user@host 'bash -s' < script.sh

但我不确定是否应该使用cat或一些输入管道<(...)来执行 config.sh 和 script.sh。

执行需要使用 ssh 传输一些内容的多个命令的最佳、干净的方法是什么?

答案1

假设两个脚本都在本地主机上,而不是远程主机上:

cat config.sh script.sh | ssh -T remote_host bash

如果您希望在远程端强制分配伪 TTY,则可能需要使用“-t”标志。由于您的 stdin 来自管道,因此本地 SSH 进程不会有伪 TTY。如果远程bash端的默认 shell 不是伪 TTY,则只需在命令行末尾添加字符串“”。另外,请注意,除非您的“变量定义”导出相关的环境变量,否则您的原始代码将无法工作。

答案2

使用 EXPECT 从远程计算机运行脚本,这样您的脚本就会像在本地计算机上一样执行。以下是如何使用 EXPECT 的简短演示。

http://kahimyang.info/kauswagan/howto_blogs/704-using_expect_script_to_automate_ssh_logins_and_do_routine_tasks_accross_multiple_hosts

相关内容