gpt4 book ai didi

linux - 使用 SSH 的调用命令失败?

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:09 26 4
gpt4 key购买 nike

根据项目要求,我需要检查在远程机器上生成的 zip 文件的内容。整个事件是使用自动化框架套件完成的。这是用 shell 脚本编写的。我正在使用 ssh 命令执行上述事件,并使用 -l 和 -q 开关执行解压缩命令。但是这个命令失败了。并显示以下错误消息。

[SOMEUSER@MACHINE IP Function]$ ./TESTS.sh
ssh SOMEUSER@MACHINE IP unzip -l -q SOME_PATH/20130409060734*.zip | grep -i XML |wc -l
unzip: cannot find or open SOME_PATH/20130409060734*.zip, SOME_PATH/20130409060734*.zip.zip or SOME_PATH/20130409060734*.zip.ZIP.

No zipfiles found.
0

我手动编写的相同命令但工作正常。我真的不知道。为什么每当我通过 shell 脚本执行时都会失败。

[SOMEUSER@MACHINE IP Function]$ ssh SOMEUSER@MACHINE IP unzip -l -q SOME_PATH/20130409060734*.zip | grep -i XML  |wc -l
2

请帮我解决这个问题。

提前致谢,普里扬克·沙阿

最佳答案

当您从本地计算机运行该命令时,星号字符会在您的本地计算机上展开,然后再传递给您的远程 ssh 命令。所以你的命令期望在你的机器上找到 SOME_PATH/20130409060734*.zip 文件并将它们插入你的 ssh 命令以传递给另一台机器,而你(我假设)的意思是 SOME_PATH/20130409060734*.zip 文件远程机器。

为此,在 * 字符前加一个反斜杠 (\),看看它是否对您有帮助。在某些 shell 中,转义字符的定义可能不同,如果您是其中之一,则需要找到转义字符并改用该字符。此外,在传递给其他服务器的命令周围使用引号。在我看来,您的命令行应如下所示:

ssh SOMEUSER@MACHINE_IP "/usr/bin/unzip -l -q SOME_PATH/20130409060734\*.zip | grep -i XML  |wc -l"

希望对你有帮助

关于linux - 使用 SSH 的调用命令失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15895001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com