Execute shell script in remote machine using ssh command with config file
我想在远程机器中执行一个shell脚本,我使用下面的命令实现了这一点,
1 | ssh user@remote_machine"bash -s" < /usr/test.sh |
shell脚本在远程计算机中正确执行。现在,我在脚本中做了一些更改,以从配置文件中获取一些值。脚本包含以下行,
1 2 3 | #!bin/bash source /usr/property.config echo"testName" |
属性.config:
1 2 | testName=xxx testPwd=yyy |
现在,如果我在远程计算机中运行shell脚本,我不会得到这样的文件错误,因为/usr/property.config在远程计算机中不可用。
如何将配置文件与要在远程计算机中执行的shell脚本一起传递?
唯一可以引用您创建并仍然运行脚本的
如果
如果每次运行该脚本时都需要发送配置文件,那么在发送和调用该脚本之前,可能只需发送该文件即可。
1 2 | scp property.config user@remote_machine:/usr/property.config ssh user@remote_machine"bash -s" < /usr/test.sh |
编辑
根据请求,如果您想在一行中强制执行,可以这样做:
属性.CONFIG
1
2testName=xxx
testPwd=yyy试验室
1
2
3#!bin/bash
#do not use this line source /usr/property.config
echo"$testName"
现在,您可以按照John的建议运行命令:
1 | ssh user@remote_machine"bash -s" < <(cat /usr/property.config /usr/test.sh) |
试试这个:
1 | ssh user@remote_machine"bash -s" < <(cat /usr/property.config /usr/test.sh) |
那么脚本不应该在内部源代码配置。
第二个选项,如果您只需要传递环境变量:
这里介绍了一些技术:https://superuser.com/questions/48783/how-can-i-pass-an-environment-variable-through-an-ssh-command
我最喜欢的可能是最简单的:
1 | ssh user@remote_machine VAR1=val1 VAR2=val2 bash -s < /usr/test.sh |
当然,这意味着您需要从本地配置文件构建环境变量分配,但希望这很简单。