在Ubuntu系統中,使用SFTP(SSH File Transfer Protocol)進行腳本編寫可以幫助你自動化文件傳輸任務。以下是一個基本的步驟指南,幫助你編寫一個簡單的SFTP腳本。
安裝OpenSSH客戶端:大多數Ubuntu系統默認已經安裝了OpenSSH客戶端。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt update
sudo apt install openssh-client
SSH密鑰認證:為了安全起見,建議使用SSH密鑰進行認證,而不是密碼。如果你還沒有設置SSH密鑰,可以參考以下步驟:
ssh-keygen -t rsa -b 4096
ssh-copy-id user@remote_host
你可以使用expect
工具來自動化交互式的SFTP會話。以下是一個示例腳本:
安裝expect
:
sudo apt install expect
創建SFTP腳本:
創建一個名為sftp_script.exp
的文件,并添加以下內容:
#!/usr/bin/expect -f
# 設置超時時間
set timeout 20
# 啟動SFTP會話
spawn sftp user@remote_host
# 匹配登錄提示并發送密碼
expect "password:"
send "your_password\r"
# 執行SFTP命令
send "put local_file.txt remote_file.txt\r"
send "get remote_file.txt local_file.txt\r"
send "ls -l\r"
send "bye\r"
# 結束expect腳本
expect eof
賦予腳本執行權限:
chmod +x sftp_script.exp
運行腳本:
./sftp_script.exp
如果你使用SSH密鑰進行認證,可以修改腳本以跳過密碼輸入部分:
#!/usr/bin/expect -f
# 設置超時時間
set timeout 20
# 啟動SFTP會話
spawn sftp user@remote_host
# 匹配登錄提示并發送密鑰
expect "sftp>"
send "put local_file.txt remote_file.txt\r"
send "get remote_file.txt local_file.txt\r"
send "ls -l\r"
send "bye\r"
# 結束expect腳本
expect eof
expect
匹配模式來處理不同的錯誤情況。-d
選項運行expect
腳本來啟用調試模式:expect -d sftp_script.exp
通過以上步驟,你可以編寫一個基本的SFTP腳本來自動化文件傳輸任務。根據具體需求,你可以進一步擴展和優化腳本。