我有一個很長一段時間找不到解決方案的問題。我想從我的 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' 不是內部或外部命令、可運行程式或批處理檔案。
我不得不說我對這種應用程式不是很有經驗,并且很高興得到任何幫助
問候丹尼斯
uj5u.com熱心網友回復:
您可以通過代理跳轉連接,然后不需要第二個 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"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/473715.html
下一篇:CMD到bash腳本轉換半欄
