linux - SSH 从本地文件运行命令并传递本地环境变量
问题描述
我需要在 Linux 上运行 SSH 并将本地文件中的命令执行到远程机器中。这工作正常,但我还需要将本地环境变量传递给远程机器,以便命令可以使用这些值。
这是我正在运行的命令:
ssh -i ${SSH_PRIV_KEY} ${SSH_USER}@${IP} < setup.sh
我设置了一堆环境变量,当远程机器运行setup.sh
文件中的命令时,它需要能够使用本地机器上的环境变量。
我尝试了很多事情,但是来自其他类似线程的解决方案无法正常工作:
myVar='4.0.23'
export $myVar
ssh -i ${SSH_PRIV_KEY} ${SSH_USER}@${IP} myVar=myVar < setup.sh
我唯一能想到的就是在执行 ssh 之前附加文件的开头并硬编码那里的值,但如果可能的话,我想找到一个更干净的解决方案,因为我希望它是可重用的,并且唯一改变我的东西运行之间是环境变量。
解决方案
我最终使用此代码获取需要存储在文件中的环境变量,然后将文件合并为一个并将其作为命令传递给 ssh:
envvars="
envvar='$envvar'
envvar2='$envvar2'
"
echo $envvars > envfile
cat envfile setup.sh > finalScript
cat $()
ssh -i ${SSH_PRIV_KEY} ${SSH_USER}@${IP} < finalScript
推荐阅读
- firebase - 如何将 Parcel.js 项目部署到 Firebase 托管
- python - Inconsistent behaviour from json_normalize with deeply nested json data
- c - 带链表 C 的冒泡排序
- android - 不同会话中 PWA 的可信 Web 活动
- docker - 可以将文件夹挂载到docker容器的根目录中吗
- python - 如何检查 Python/HTML 表单中的重复用户输入?
- ios - Fastlane iOS 自动通知截图
- java - 拆分器中的 action.accept(val) 做什么
- python - 使用 ODEINT 或其他方法求解许多耦合微分方程组
- javascript - 简单的函数在使用 onclick 时触发,在 JS 中使用 addEventListener 时不会触发