向远程主机发出bash命令 - 写入本地输出文件时出错

我试图在几台远程主机上并行运行多组命令。 我已经创建了构建这些命令,然后在本地文件沿线的写入输出,事情的脚本:向远程主机发出bash命令 - 写入本地输出文件时出错

ssh <me>@<ip1> "command" 2> ./path/to/file/newFile1.txt & ssh <me>@<ip2> 

"command" 2> ./path/to/file/newFile2.txt & ssh <me>@<ip2> "command" 2>

./path/to/file/newFile3.txt; ...(same repeats itself, with new commands and new

file names)...

我的问题是,我的脚本运行这些命令时,我得到出现以下错误:

bash: ./path/to/file/newFile1.txt: No such file or directory 

bash: ./path/to/file/newFile2.txt: No such file or directory

bash: ./path/to/file/newFile3.txt: No such file or directory

...

这些文件不存在但将被写入。话虽如此,目录路径是有效的。

奇怪的是,如果我复制并粘贴整个大命令,那么它的工作原理没有任何问题。我宁愿让它自动化;)。

任何想法?

编辑 - 详细信息:

我的文件系统是以下几点:

- home 

- User

- Desktop

- Servers

- Outputs

- ...

我从家里/用户/桌面运行bash脚本/服务器。 该脚本创建需要在远程服务器上运行的命令。首先,脚本创建文件将被存储的目录。

outputFolder="./Outputs" 

...

mkdir -p ${outputFolder}/f{fileNumb}

...

脚本然后继续创建将遥控器上的主机被称为命令,并且它们各自的输出将被放置在所创建的目录中。 目录在那里。运行这些命令会给我带来错误,但是打印然后将这些命令复制到同一位置会出于某种原因。我也试图给出目录的完整路径,仍然是同样的问题。

希望我已经更清楚了一点。

回答:

如果这是你得到确切的错误消息:

bash: ./path/to/file/newFile1.txt: No such file or directory 

然后你会注意到,有冒号和点之间的额外的空间,所以它实际上是试图打开一个名为" ./path/to/file/newFile1.txt"文件(不引号)。

但是,要实现这个目标,你需要在重定向使用引号将文件名,如

something ... 2> " ./path/to/file/newFile1.txt" 

还是第一个字符必须比常规的空间别的东西。一个非破坏性的空间也许可能是某些编辑可能创建的,如果你碰到了alt-space或其他类似的东西。

回答:

我不相信你已经证明足以正确回答这个问题。

这看起来不像ssh的问题,而是你调用(ssh)命令的方式。

你说你正在将这些命令写入一个文件中......假设你正在将该文件作为脚本运行。你可以展示你用来做这件事的代码吗?我相信那是你的问题。

我怀疑你对运行脚本时工作目录的改变方式做出了错误的假设。它没有。你正在列出相对路径,所以了解它们相对于什么是重要的。这是复制和粘贴时最有可能工作的原因......您正在从不同的工作目录执行。

回答:

我是新来的bash脚本,并基于我见过的另一个建立我的脚本。我简单地调用存储已命令变量“运行”命令:

$cmd 

解决使用:

eval $cmd 

代替。我的不好,应该从一开始就给出完整的脚本。

以上是 向远程主机发出bash命令 - 写入本地输出文件时出错 的全部内容, 来源链接: utcz.com/qa/257186.html

回到顶部