shell脚本编程-例子_自动登陆ftp备份

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

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

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

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

[[email protected] cos]$ systemctl restart vsftpd.service

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

[[email protected] cos]$ mkdir /var/ftp/upload
[[email protected] cos]$ chown ftp:root /var/ftp/upload

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

[[email protected] shell]$ touch TestUpload #在本地创建TestUpload用于脚本上传.
[[email protected] 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文件,默认情况下这个命令是不存在的,我们可以创建你一个:

[[email protected] cos]$ vim .netrc
default login anonymous password ‘\n‘  #默认用户和空密码

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

[[email protected] ~]$ 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,可以完成同样的功能.如下:

[[email protected] ~]$ 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

结果如下:

[[email protected] 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

时间: 2024-08-07 00:16:08

shell脚本编程-例子_自动登陆ftp备份的相关文章

shell脚本编程-例子_批量添加用户脚本

用户管理是Linux系统维护的工作之一,其中设计用户添加.删除等简单操作. 需求:一次添加很多用户.在一个文本文件中. 格式:以行为单位,每行是一条用户信息.用户名和密码之间使用特定的分隔符分开,可是是空格,逗号,Tab键等.这里用空格区分 eg: [[email protected] ~]$ cat addusers.txt username001 password001 username002 password002 username003 password003 username004 p

Linux FTP自动登陆下载备份,上传文件脚本

使用远程的服务器,对另外一台远程的服务器进行FTP操作,速度要比本地机器操作快很多. 之前写过一篇关于FTP如何手工的在Linux进行远程操作, 今天找到一个自动批量的脚本,感觉很好.满足了我的需要. 我的A网站在香港 我的B服务器Linux的在国内.这样就可以把A网站自动备份到B服务器了. 希望本篇博客能给需要的同学一些帮助. #####从ftp服务器上的/home/data 到 本地的/home/databackup#### #!/bin/bash ftp -n<<! open 192.1

学习Shell脚本编程(第4期)_在Shell程序中的使用变量

变量的赋值 变量的访问 变量的输入 4.1 变量的赋值     在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明.要赋值给一个变量,其格式如下: 变量名=值  注意: 等号(=)前后没有空格 例如: x=6 a="How are you " 表示把6赋值给变量x,字符串"How are you "赋值给变量a. 4.2 访问变量值 如果要访问变量值,可以在变量前面加一个美元符号"$",例如: [[email protect

学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤

编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时候,通过Linux操作系统一个接一个地解释和执行每条命令.首先,来编写第一个Shell程序,从中学习Shell程序的编写.修改权限.执行过程. 2.1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下. [[email protected] bin]#v

学习Shell脚本编程(第3期)_在Shell程序中使用的参数

位置参数 内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 3.1 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始.第0号为程序名字,从1开始就表示传递给程序的参数.如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推. 3.2 内部参数 上述过程中的$0是一个

&lt;&lt;linux命令行与shell脚本编程大全&gt;&gt;学习笔记(1)

一章初识linux shell 一.什么是linux 1.linux系统可大致划分为四部分: l Linux内核 l GNU工具组件 l 图形化桌面环境 l 应用软件 在linux系统里,这四部分中的每一部分都扮演着一个特别的角色,但如果将他们分开,每一部分都没太大的作用. 1)探究linux内核 Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,必要时分配硬件,有时需要执行软件. 内核基本负责以下四项主要功能: l 系统内存管理 l 软件程序管理 l 硬件设备管理 l 文件系

SHELL脚本编程的常识和VI常用技巧

来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc37518085 Shell脚本编程的常识... 3 七种文件类型... 3 正则表达式... 3 字符类描述... 4 shell的引号类型... 4 变量设置时的不同模式:... 4 条件测试... 5 命令执行顺序... 6 脚本调试... 6 一些常用的小trick.. 6 打印一些头信息... 6 创建

第九章、shell脚本编程基础

第九章.shell脚本编程基础 本章内容 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 程序的执行方式 计算机:运行二进制指令 编程语言: 低级:汇编 高级: 编译:高级语言-->编译器-->目标代码 java,C# 解释:高级语言-->解释器-->机器代码 shell, perl, python (系统后台

Shell脚本编程的常识

Shell脚本编程的常识 (这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                                       l             符号链接 s             套接字文件                                           b            块设备文件 c            字符设备文件