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 '\n'  #默认用户和空密码

 

这次我们直接用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

 

posted @ 2015-10-17 22:11  超超xc  Views(2023)  Comments(0Edit  收藏  举报
I suppose,were childrenonec.