Ssh
通過腳本在 sftp 連接中執行命令
這是一個非常基本的問題,我對 bash 還很陌生,無法弄清楚如何做到這一點。不幸的是,Google搜尋並沒有讓我到任何地方。
我的目標是通過 sftp 連接到伺服器,上傳文件,然後斷開連接。
我有以下腳本:
UpdateJar.sh
#!/bin/bash sftp -oPort=23 kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins #Change directory on server #cd /home/kalenpw/TestWorld/plugins #Upload file put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar exit
問題是,這個腳本將建立一個 sftp 連接,然後什麼也不做。一旦我在連接中手動鍵入 exit,它就會嘗試執行 put 命令,但由於 sftp 會話已關閉,它只會顯示 put: command not found。
我怎樣才能讓它正常工作?
謝謝
您可以更改腳本以在此處文件中傳遞命令,例如,
#!/bin/bash sftp -oPort=23 kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins <<EOF put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar exit EOF
**
<<
**後跟名稱 ( )的標記EOF
告訴腳本傳遞以下行,直到在行首(單獨)找到名稱。
您可能更喜歡使用
scp
而不是sftp
.scp
行為很像普通cp
命令,但文件可以是遠端的:scp -P 23 /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar kalenpw@184.155.136.254:/home/kalenpw/TestWorld/plugins
這會將本地電腦上的文件複製到遠端電腦上的目錄中,而無需使用老式 ftp 樣式的命令界面。
、和服務通常可用,如果它們中的任何一個可用的話
ssh
;同一個守護程序同時提供所有這些。原則上,伺服器的管理員可以選擇禁用其中任何一個,但實際上這種情況很少見。scp``sftp