【ftp篇】 vsftp(ftp) 每天生成一个动态密码

这里写目录标题

  • 前言
  • 为什么需要动态每日生成一个密码?
  • 编写脚本
  • 定时任务
  • java对应的代码

前言

社长最近接到一个需求,需要ftp每天动态生成一个密码

为什么需要动态每日生成一个密码?

在软硬件通讯过程中,就以共享单车为例,共享单车的硬件程序有变动后,难道需要我人工一个个的去烧录程序,那肯定太low,一般都是通过服务器跟硬件简历连接后,下发命令,命令里面会包含ftp的地址、账号、密码、上次的路径。硬件端会知道我们的密码,会有一个安全隐患,每日动态生成ftp密码的需求就应运而生。

实现思路(头脑风暴):

  • 既然是每天生成一个密码,那肯定是跟日期有关,那就需要考虑一个根据日期动态生成密码得逻辑
  • 编写脚本,根据上面生成的密码,修改ftp密码
  • cron计划,设置某个 时间,去触发脚本

编写脚本

centos8部署vsftpd

  • 前提:默认大家都是已搭建好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.dbnum1=$(date "+%m%d")
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
  • 生成密码的规则可自己定义
  • sed -i ‘4d’ $TXT_PATH 4d的意思,就是删除第4行
  • echo $app_name >> $TXT_PATH 就是最后一行新增一条数据

在/etc/vsftpd的vuser.list文件中填写对应的内容
在这里插入图片描述

  • 单数是账号(test1111111,ftp123)、偶数是密码
  • 注意:我定的规则是,第一个账号作为不变的密码,第二个账号,就是我需要每天动态生成的密码

定时任务

查看是否安装

crontab:rpm -qa | grep crontab
  • 一般得系统都自带定时任务
    输入crontab -e
####增加一个ftp密码定时每天修改的脚本
1 0 * * * /root/ftp.sh
  • 表示每天的00:01分,会执行对应的脚步
####添加或者修改定时任务
crontab -e
####查看定时任务
crontab -l
####查看定时任务的日志记录,可能通过这里查看确定定时任务是否执行
tail -f /var/log/cron

java对应的代码

 /*** 根据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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vsCode 忽略 文件上传

1 无 .gitignore 文件时,在项目文件右键,Git Bash 进入命令行 输入 touch .gitignore 生成gitignore文件 2 、在文件.gitignore里输入 node_modules/ dist/ 来自于:vscode git提交代码忽略node_modules_老妖zZ的博客-CSDN博客

深度学习_1_基本语法

数据结构 代码: import torchx torch.arange(12)##产生长度为12的一维张量print(x)##X x.resize(3, 4)##被弃用##print(X)y torch.reshape(x, (3, 4))##修改向量为矩阵,一维变二维print(y)print(y.size())xx torch.zeros((2, 3, 4))##三维矩阵&…

GEE:基于GLDAS数据集分析土壤湿度的时间序列变化

作者:CSDN @ _养乐多_ 本篇博客将介绍如何使用Google Earth Engine(GEE)进行土壤湿度数据的分析。我们将使用NASA GLDAS(Global Land Data Assimilation System)数据集,其中包括了关于土壤湿度的信息。通过该数据集,我们将了解土壤湿度在特定区域和时间段内的变化,并生…

Vue、js底层深入理解笔记(二)

1.跨域 跨域原因 > 浏览器的同源策略 属于一种保护机制 如果没有同源策略的保护 一般用来处理登录cookie、服务端验证通过后会在响应头加入Set-Cookie字段、下次再发请求的时候,浏览器会自动将cookie附加在HTTP请求的头字段Cookie中、也就是说跳转到其他网站你也…

Apache atlas 元数据管理治理平台使用和架构

1、前言 Apache Atlas 是托管于 Apache 旗下的一款元数据管理和治理的产品,目前在大数据领域应用颇为广泛,可以很好的帮助企业管理数据资产,并对这些资产进行分类和治理,为数据分析,数据治理提供高质量的元数据信息。…

企业电子招投标采购系统——功能模块功能描述+数字化采购管理 采购招投标

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

OJ第三篇

文章目录 随机链表的复制 随机链表的复制 链接:随机链表的复制 这个题简单而言就是它给一个链表,每个结点包含两个指针,分别指向下一个和一个随机的结点(也有可能指向空),你要做的就是复制这个链表,使你创…

深入了解基数排序:原理、性能分析与 Java 实现

基数排序(Radix Sort)是一种非比较性排序算法,它根据元素的每个位上的值来进行排序。基数排序适用于整数或字符串等数据类型的排序。本文将详细介绍基数排序的原理、性能分析及java实现。 基数排序原理 基数排序的基本原理是按照低位先排序&…

基于PLC的机械手控制系统设计

目录 摘 要......................................................................................................................... 1 第一章 绪论.............................................................................................................…

【Acwing187】导弹防御系统(LIS+剪枝+贪心+dfs+迭代加深)

题目描述 看本文需要准备的知识 1.最长上升子序列(lis)的算法思想和算法模板 2.acwing1010拦截导弹(lis贪心)题解 本题题解,需要知道这种贪心算法 3.简单了解dfs暴力搜索、剪枝、搜索树等概念 思路讲解 dfs求最…

TCP/IP(七)TCP的连接管理(四)全连接

一 全连接队列 nginx listen 参数backlog的意义 nginx配置文件中listen后面的backlog配置 ① TCP全连接队列概念 全连接队列: 也称 accept 队列 ② 查看应用程序的 TCP 全连接队列大小 实验1: ss 命令查看 LISTEN状态下 Recv-Q/Send-Q 含义附加:…

clone()方法使用时遇到的问题解决方法(JAVA)

我们平时在自定义类型中使用这个方法时会连续遇到 4 个问题。 基础代码如下: class A {int[] a {1,2,3}; }public class Test {public static void main(String[] args) {} } 第一个: 当我们直接调用时报错原因是Object类中的clone方法是被protecte…

Umi + React + Ant Design Pro + TS 项目搭建

新建项目目录 mkdir 【项目名称】在对应目录 D:\react\demo 中,安装 Umi 脚手架: yarn create umi接下来,安装将要用到的相关依赖 umijs/plugins: npm i umijs/plugins -Dumijs/plugins 是 Umi 的官方插件集,包含了…

排序算法——冒泡排序

一、介绍: 冒泡排序原理就是从第一个元素开始,比较其后边的一个元素的大小,按照排序方式进行交换位置,直到将所有元素的顺序排列好为止。演示如下: 视频演示: 冒泡排序演示_网络游戏热门视频 (bilibili.co…

【Spring Boot】RabbitMQ消息队列 — RabbitMQ入门

💠一名热衷于分享知识的程序员 💠乐于在CSDN上与广大开发者交流学习。 💠希望通过每一次学习,让更多读者了解我 💠也希望能结识更多志同道合的朋友。 💠将继续努力,不断提升自己的专业技能,创造更多价值。🌿欢迎来到@"衍生星球"的CSDN博文🌿 🍁本…

GEO生信数据挖掘(七)差异基因分析

上节,我们使用结核病基因数据,做了一个数据预处理的实操案例。例子中结核类型,包括结核,潜隐进展,对照和潜隐,四个类别。本节延续上个数据,进行了差异分析。 差异分析 计算差异指标step12 加载…

蓝桥杯 题库 简单 每日十题 day13

01 乘积尾零 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将 所填结果输出即可。如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 …

Flink之DataStream API开发Flink程序过程与Flink常见数据类型

开发Flink程序过程与Flink常见数据类型 DataStream APIFlink三层APIDataStream API概述 开发Flink程序过程添加依赖创建执行环境执行模式创建Data Source应用转换算子创建Data Sink触发程序执行示例 Flink常见数据类型基本数据类型字符串类型时间和日期类型数组类型元组类型列表…

1.1 向量与线性组合

一、向量的基础知识 两个独立的数字 v 1 v_1 v1​ 和 v 2 v_2 v2​,将它们配对可以产生一个二维向量 v \boldsymbol{v} v: 列向量 v v [ v 1 v 2 ] v 1 v 的第一个分量 v 2 v 的第二个分量 \textbf{列向量}\,\boldsymbol v\kern 10pt\boldsymbol …