溫馨提示×

如何利用Linux SFTP進行自動化腳本編寫

小樊
78
2025-04-14 01:59:58
欄目: 智能運維

利用Linux SFTP進行自動化腳本編寫可以通過多種方式實現,其中最常見的是使用sshpass工具結合expect腳本,或者直接使用支持SFTP的編程語言(如Python)編寫腳本。以下是兩種常見的方法:

方法一:使用sshpassexpect

  1. 安裝sshpass

    sudo apt-get install sshpass  # Debian/Ubuntu
    sudo yum install sshpass      # CentOS/RHEL
    
  2. 編寫expect腳本expect是一個用于自動化交互式應用程序的工具,比如SSH。

    創建一個名為sftp_auto.sh的文件,內容如下:

    #!/usr/bin/expect -f
    
    set timeout -1
    set host [lindex $argv 0]
    set user [lindex $argv 1]
    set password [lindex $argv 2]
    set remote_dir [lindex $argv 3]
    set local_dir [lindex $argv 4]
    
    spawn sftp $user@$host
    expect "password:"
    send "$password\r"
    expect "sftp>"
    send "cd $remote_dir\r"
    expect "sftp>"
    send "lcd $local_dir\r"
    expect "sftp>"
    send "mput *\r"
    expect "sftp>"
    send "bye\r"
    interact
    
  3. 賦予執行權限并運行腳本

    chmod +x sftp_auto.sh
    ./sftp_auto.sh your_host your_user your_password /remote/directory /local/directory
    

方法二:使用Python和paramiko

  1. 安裝paramiko

    pip install paramiko
    
  2. 編寫Python腳本: 創建一個名為sftp_auto.py的文件,內容如下:

    import paramiko
    from paramiko import SSHClient
    from scp import SCPClient
    
    def sftp_upload(host, port, username, password, remote_dir, local_dir):
        ssh = SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(host, port, username, password)
        sftp = ssh.open_sftp()
    
        for filename in os.listdir(local_dir):
            local_path = os.path.join(local_dir, filename)
            remote_path = os.path.join(remote_dir, filename)
            sftp.put(local_path, remote_path)
    
        sftp.close()
        ssh.close()
    
    if __name__ == "__main__":
        host = 'your_host'
        port = 22
        username = 'your_user'
        password = 'your_password'
        remote_dir = '/remote/directory'
        local_dir = '/local/directory'
    
        sftp_upload(host, port, username, password, remote_dir, local_dir)
    
  3. 運行Python腳本

    python sftp_auto.py
    

這兩種方法都可以實現SFTP的自動化操作,選擇哪種方法取決于你的具體需求和環境。expect腳本適用于簡單的交互式任務,而Python腳本則更加靈活和強大,適合復雜的自動化任務。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女