【发布时间】:2014-10-19 12:13:13
【问题描述】:
我正在尝试使用 ssh 连接执行远程本地脚本。我已经阅读了有关它的语法的文档。但我的问题是,在运行脚本之前,我需要执行 bash 和 source 环境变量。
这看起来适合我,但它没有源命令:
ssh [user]@[server] 'bash -s' < [local_script]
我已经用 EOF 尝试过这样的事情,但它对我也不起作用:
#!/bin/bash
/usr/bin/ssh "$user@$$host" <<EOF
bash -s
source /dir/to/profile/.profile
source /dir/to/env/set/env.sh
/path/to/script/script.sh stop
EOF
您对这种远程命令的实现有想法吗?我必须在环境设置之前获取配置文件,否则会出现异常。但主要问题是关于来源。
也许这是一个简单的问题,但我没有任何想法。提前感谢您的所有回答。
【问题讨论】:
-
也许
-t选项将有助于在登录 shell 中初始化环境。ssh user@server 'bash -t -c local_script' -
第一个示例和第二个示例之间的区别在于,第一个示例将
bash -s作为远程命令运行并将脚本作为输入发送给它,而第二个示例将四行文本作为标准发送输入到远程主机上的默认命令/shell。如果您将bash -s移动到第二个示例中的命令位置,它会起作用吗? -
这两种解决方案都行不通,我尝试了很多方法,但都行不通!! :(
-
/dir/to/profile/.profile之类的文件是否存在于本地计算机或远程计算机上? - 因为它们现在的使用方式假定它们存在于 remote。 -
它们存在于远程