在Unix上通过Batchfile从Windows执行命令



我有一个问题,找不到一个解决方案很长一段时间。我想在我的windows机器上执行批处理文件中的以下行:

ssh %1@%2 "D: &&SSH %3@%4 CD/media/usbmsd/&&$(ls -t/media/usbmsd | head -1)"/buffer"

此批处理文件稍后将从cmd行执行,其中包含以下参数。我试图通过ssh访问一个系统(windows),然后通过ssh再次跳转到另一个系统(unix),在那里我需要在/media/usbmsd目录中找到最新的文件并将其复制到文件夹缓冲区。

当我从cmd行执行它时,我得到以下错误:

'head'不能被识别为内部或外部命令,可操作程序或批处理文件。

我不得不说我对这类应用程序不是很有经验,我很高兴得到任何帮助

问候丹尼斯

您可以通过代理跳转进行连接,这样就不需要第二个ssh命令了。
那么对引号进行一些模糊的转义是必要的。
(我在没有中间windows客户端的情况下进行了测试)第一个插入符号^是必需的,以从cp命令中引用,反斜杠是必需的,以说服第一个展开保留引号不变。

ssh %3@%4 -o ProxyJump %1@%2 ^"cd /media/usbmsd/ && cp "$(ls -t /media/usbmsd | head -1)" /buffer'

但是在目标主机上放置脚本应该要容易得多mycopyscript.sh

cd /media/usbmsd/ && cp "$(ls -t /media/usbmsd | head -1)" /buffer

然后使用:

ssh %3@%4 -o ProxyJump %1@%2 "./mycopyscript.sh"

相关内容

  • 没有找到相关文章

最新更新