我必须远程连接到网关(在 Linux 平台上工作),其中有几个可执行文件(signingModule.sh
和taxModule.sh
)。现在我想在我的桌面上编写一个脚本,该脚本将连接到该网关并signingModule.sh
在taxModule.sh
两个不同的终端上运行。
我写了下面的代码:
ssh [email protected] #to connect to gateway
sleep 5
cd /opt/swfiscal/signingModule #path of both modules
./signingModule #executable
但是通过此代码我可以连接我的网关,但连接到网关后什么也没有发生。
第二段代码:
source configPath # file where i have given path of both the modules(configPath is placed in local machine)
cd $FCM_SCRIPTS # variable in which i have stored the path of modules
ssh [email protected] 'sh -' < signingModule #to connect and run one module (signingModule is placed in remote machine)
我得到的输出是:source: configPath: file not found
请帮我解决这个问题。提前致谢。
笔记:
- 如果需要的话,我可以将我的文件复制粘贴到该网关。
- Gnome 终端或者任何其他替代方案均无法在我的网关上运行。
- 我必须在不同的终端中运行所有模块(签名和税收),因为我的其他应用程序只有当这两个模块启动时才会工作。所以为了使它们同时运行,我们必须在不同的选项卡或终端中运行它们。
- 我必须在本地机器上编写一个脚本,该脚本将运行位于远程网关的两个模块(签名和税务)。因此,我想在本地机器上运行该脚本,该脚本将访问网关的模块。
答案1
您收到的错误意味着该文件configPath
不存在于您执行命令的文件夹中source configPath
。
假如说:
- 文件
configPath
包含以下语句:#!/bin/bash export FCM_SCRIPTS=/path/on/remote/machine
- 文件夹中
/path/on/remote/machine
有一个可执行文件signingModule
- 文件
configPath
位于/path/on/local/machine
文件夹中
如果这些假设是正确的,您应该在本地机器上创建一个简单的脚本/path/on/local/machine/remoteExecution.sh
:
#!/bin/bash
cd $FCM_SCRIPTS
./signingModule
然后尝试:
cd /path/on/local/machine
ssh [email protected] 'bash -s' < <(cat configPath remoteExecution.sh)
其中-s
选项表示从标准输入读取命令。