我有一个问题,找不到一个解决方案很长一段时间。我想在我的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"