zoukankan      html  css  js  c++  java
  • shell脚本编程-例子_自动登陆ftp备份

    ftp很常见的是用于存取文件的应用,它也用于日常备份。这种周期性的工作无疑需要通过自动化脚本来完成。本次系统为CentOS7

    本次实验需要你做如下操作:

    1.修改ftp服务器的配置文件/etc/vsftpd/vsftpd.conf,将anon_upload_enable=YES,前面的注释符去掉,即允许匿名用户上传文件;

    2.在下一行中增加anon_other_write_enable=YES,即允许匿名用户覆盖同名文件,并重启vsftpd服务配置生效.

    [cos@localhost cos]$ systemctl restart vsftpd.service

    3.创建上传目录并赋予合理的权限,命令如下:

    [cos@localhost cos]$ mkdir /var/ftp/upload
    [cos@localhost cos]$ chown ftp:root /var/ftp/upload

    4.在另一台服务器上创建ftp自动上传下载脚本:autoftp01.sh

    [cos@localhost shell]$ touch TestUpload #在本地创建TestUpload用于脚本上传.
    [cos@localhost shell]$ cat autoftp01.sh 
    #!/bin/bash
    GET_FILENAME="TestDownload"
    PUT_FILENAME="TestUpload"
    SERVER_IP="192.168.88.103"
    USER="anonymous"
    PASS=""
    FTP=/usr/bin/ftp
    $FTP -n $SERVER_IP << EOF
    quote USER $USER
    quote PASS $PASS
    Binary
    get $GET_FILENAME
    cd upload
    put $PUT_FILENAME
    EOF

    注意:将ftp的用户名和密码以明文的方式写在脚本中,这可能是个安全隐患,将用户名和密码分离出去,

    5.默认情况下,直接用ftp命令并按回车就会进入ftp的自动登陆模式,此时ftp命令会读取用户家目录下的.netrc文件,默认情况下这个命令是不存在的,我们可以创建你一个:

    [cos@localhost cos]$ vim .netrc 
    default login anonymous password '
    '  #默认用户和空密码

    这次我们直接用ftp命令可以发现能直接登陆了:

    [cos@localhost ~]$ ftp 127.0.0.1
    Connected to 127.0.0.1 (127.0.0.1).
    220 (vsFTPd 3.0.2)
    331 Please specify the password.
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 

    6.最后利用netrc自动登陆,将autoftp01.sh脚本改为autoftp02.sh,可以完成同样的功能.如下:

    [cos@localhost ~]$ vim autoftp02.sh
    #!/bin/bash
    GET_FILENAME="TestDownload"
    PUT_FILENAME="TestUpload"
    SERVER_IP="192.168.88.103"
    FTP="/usr/bin/ftp"
    $FTP $SERVER_IP << EOF
    binary
    get $GET_FILENAME
    cd upload
    put $PUT_FILENAME
    EOF

    结果如下:

    [cos@localhost shell]$ chmod 777 autoftp02.sh 
    [cos@localhost shell]$ ls
    autoftp01.sh  autoftp02.sh  TestUpload
    [cos@localhost shell]$ ./autoftp02.sh 
    [cos@localhost shell]$ ls
    autoftp01.sh  autoftp02.sh  TestDownload  TestUpload

    祝你成功。对了,<< EOF 不懂得话可以查查.

    2015年10月17日22:09:43

  • 相关阅读:
    vscode sftp 本地目录设置问题
    Zend where or怎么传
    docker如何查看最近创建的容器
    基于apline构建php7+nginx
    修改layui tree组件支持上移下移
    mysql千万级数据表如何删除
    filezilla 链接ftp不显示本地目录 “您没有权限列出该目录内容”
    php使用socket通过tcp通信及php16进制求和校验位计算
    Session must be started before any output has been sent to the browser;问题解决
    mysql数据库中的union和union的区别(示例演示)
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4888420.html
Copyright © 2011-2022 走看看