Ssh

通過腳本在 sftp 連接中執行命令

  • June 19, 2019

這是一個非常基本的問題,我對 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

引用自:https://unix.stackexchange.com/questions/315050