温馨提示×

如何用Linux SFTP进行自动化脚本编写

小樊
38
2025-03-04 21:26:13
栏目: 智能运维
Linux服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

使用Linux SFTP进行自动化脚本编写可以通过多种方式实现,其中最常见的是使用sshpass工具结合expect脚本,或者使用Python的paramiko库。以下是两种方法的详细步骤:

方法一:使用sshpassexpect

  1. 安装sshpass

    sudo apt-get install sshpass
    
  2. 编写expect脚本expect是一个用于自动化交互式应用程序的工具,比如SSH。

    创建一个名为sftp_auto.sh的文件,并添加以下内容:

    #!/usr/bin/expect
    
    set timeout 20
    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"
    expect eof
    
  3. 赋予脚本执行权限

    chmod +x sftp_auto.sh
    
  4. 运行脚本

    ./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
    import os
    
    def sftp_upload(host, port, username, password, remote_dir, local_dir):
        transport = paramiko.Transport((host, port))
        transport.connect(username=username, password=password)
        sftp = paramiko.SFTPClient.from_transport(transport)
    
        sftp.chdir(remote_dir)
        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()
        transport.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 sftp_auto.py
    

注意事项

  • 安全性:使用sshpass和明文密码存在安全风险,建议使用SSH密钥认证。
  • 错误处理:在实际应用中,应添加错误处理逻辑,以应对网络问题或权限问题。
  • 日志记录:建议添加日志记录功能,以便于调试和监控。

通过以上两种方法,你可以实现Linux SFTP的自动化脚本编写,选择适合你需求的方法进行实现。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:如何用SFTP进行远程备份

0