社长最近接到一个需求,需要ftp每天动态生成一个密码
在软硬件通讯过程中,就以共享单车为例,共享单车的硬件程序有变动后,难道需要我人工一个个的去烧录程序,那肯定太low,一般都是通过服务器跟硬件简历连接后,下发命令,命令里面会包含ftp的地址、账号、密码、上次的路径。硬件端会知道我们的密码,会有一个安全隐患,每日动态生成ftp密码的需求就应运而生。
实现思路(头脑风暴):
输入vim ftp.sh
source /etc/profile
#!/bin/bash
####密码加密的前缀
FTP_NAME=ftp
####密码存放的目录
FTP_PATH=/etc/vsftpd
TXT_PATH=$FTP_PATH/vuser.list
DB_PATH=$FTP_PATH/vuser.db
num1=$(date "+%m%d")
num1=$(expr $num1 + 0)
let num=num1+num1
let num3=num/3
let num2=num%3
###根据固定的路径组装密码,每天生成一次
app_name=$FTP_NAME$num$num3$num2
#####删除最后一行密码,最后加入一行数据
sed -i '4d' $TXT_PATH
echo $app_name >> $TXT_PATH
echo $app_name
####重新生成密码
db_load -T -t hash -f $TXT_PATH $DB_PATH
在/etc/vsftpd的vuser.list文件中填写对应的内容

查看是否安装
crontab:rpm -qa | grep crontab
####增加一个ftp密码定时每天修改的脚本
1 0 * * * /root/ftp.sh
####添加或者修改定时任务
crontab -e
####查看定时任务
crontab -l
####查看定时任务的日志记录,可能通过这里查看确定定时任务是否执行
tail -f /var/log/cron
/**
* 根据username,进行密码的加密,每天的凌晨脚本去修改密码
* @param username
* @return
*/
public static String passwordFtp(String username){
Integer mmdd = Integer.parseInt(TimeUtil.dateToString(new Date(),"MMdd"));
Integer one = mmdd + mmdd;
Integer two = one / 3;
Integer three = one % 3;
return username+ one.toString() + two.toString() + three.toString() ;
}