通过 SSH 传递变量并使用该变量运行命令

通过 SSH 传递变量并使用该变量运行命令

我尝试执行以下两个文件,但在 echo "$application" 时出现问题。我没有看到任何输出。我如何通过 ssh 传递变量并使用该变量执行一些命令。它能够成功获取主机名并 ssh 到服务器,但应用程序没有传递给 ssh 内的命令。

ssh测试脚本

#!/bin/bash
execommand(){
 ssh ${hostname} "application=$app1" <<'EOL'
  echo "$application"
  cd /opts/logs/${application}
EOL
}

source input.txt
execommand

输入.txt

#!/bin/bash

hostname="host1.server.com"
app1="home_loan"
export hostname
export app1

答案1

添加bash到初始命令的末尾;ssh_test.sh 应该如下所示:

#!/bin/bash
execommand(){
 ssh ${hostname} "application=$app1 bash" <<'EOL'
  echo "$application"
  cd /opts/logs/${application}
EOL
}

source input.txt
execommand

这样你的命令才会被 shell 真正处理。之前 shell 甚至不会接收这些命令。

如果您希望禁用Pseudo-terminal will not be allocated because stdin is not a terminal.将看到的警告,您可以将标志添加-T到 ssh 命令,并按如下方式修改它:

 ssh -T ${hostname} "application=$app1 bash" <<'EOL'

相关内容