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