通过批处理文件在 Unix 上执行来自 Windows 的命令
Executing Commands from Windows on Unix via Batchfile
我有一个问题好久找不到解决办法了。
我想在我的 windows 机器上从批处理文件中执行以下行:
ssh %1@%2 "D: && ssh %3@%4 cd /media/usbmsd/ && cp "$(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"
我有一个问题好久找不到解决办法了。 我想在我的 windows 机器上从批处理文件中执行以下行:
ssh %1@%2 "D: && ssh %3@%4 cd /media/usbmsd/ && cp "$(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"