环保网站建设多少钱,微网站建设方案财政,音乐影视网站建设方案,金融公司网站 html这里写目录标题 前言为什么需要动态每日生成一个密码#xff1f;编写脚本定时任务java对应的代码 前言 社长最近接到一个需求#xff0c;需要ftp每天动态生成一个密码 为什么需要动态每日生成一个密码#xff1f; 在软硬件通讯过程中#xff0c;就以共享单车为例#xff0… 这里写目录标题 前言为什么需要动态每日生成一个密码编写脚本定时任务java对应的代码 前言 社长最近接到一个需求需要ftp每天动态生成一个密码 为什么需要动态每日生成一个密码 在软硬件通讯过程中就以共享单车为例共享单车的硬件程序有变动后难道需要我人工一个个的去烧录程序那肯定太low一般都是通过服务器跟硬件简历连接后下发命令命令里面会包含ftp的地址、账号、密码、上次的路径。硬件端会知道我们的密码会有一个安全隐患每日动态生成ftp密码的需求就应运而生。 实现思路(头脑风暴)
既然是每天生成一个密码那肯定是跟日期有关那就需要考虑一个根据日期动态生成密码得逻辑编写脚本根据上面生成的密码修改ftp密码cron计划设置某个 时间去触发脚本
编写脚本
centos8部署vsftpd
前提默认大家都是已搭建好ftp的环境建议使用虚拟账号的方式搭建这样才好动态修改ftp的密码。
输入vim ftp.sh
source /etc/profile
#!/bin/bash
####密码加密的前缀
FTP_NAMEftp
####密码存放的目录
FTP_PATH/etc/vsftpd
TXT_PATH$FTP_PATH/vuser.list
DB_PATH$FTP_PATH/vuser.dbnum1$(date %m%d)
let numnum1num1
let num3num/3
let num2num%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
生成密码的规则可自己定义sed -i ‘4d’ $TXT_PATH 4d的意思就是删除第4行echo $app_name $TXT_PATH 就是最后一行新增一条数据
在/etc/vsftpd的vuser.list文件中填写对应的内容
单数是账号(test1111111,ftp123)、偶数是密码注意我定的规则是第一个账号作为不变的密码第二个账号就是我需要每天动态生成的密码
定时任务
查看是否安装
crontabrpm -qa | grep crontab一般得系统都自带定时任务 输入crontab -e
####增加一个ftp密码定时每天修改的脚本
1 0 * * * /root/ftp.sh表示每天的00:01分会执行对应的脚步
####添加或者修改定时任务
crontab -e
####查看定时任务
crontab -l
####查看定时任务的日志记录可能通过这里查看确定定时任务是否执行
tail -f /var/log/cronjava对应的代码 /*** 根据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() ;}username就是密码前缀默认为ftp