写一个shell脚本,每60分钟复制当前目录下的一份随机文件到指定目录
时间: 2024-05-25 20:17:14 浏览: 118
#!/bin/bash
# 设置复制的源目录和目标目录
src_dir=$(pwd)
dest_dir="/path/to/destination/directory/"
# 定义函数,用于随机选择一个文件并复制到目标目录
copy_random_file() {
# 获取当前目录下所有文件列表
files=$(ls $src_dir)
# 随机选择一个文件
random_file=$(echo "$files" | shuf -n 1)
# 复制文件到目标目录
cp "$src_dir/$random_file" "$dest_dir"
}
# 循环执行函数,每60分钟执行一次
while true
do
copy_random_file
sleep 3600
done
# 注意:为了使脚本能够在后台运行,可以使用nohup命令,例如:
# nohup ./script.sh &
相关问题
shell脚本实现用户密码到期之前自动重置密码并邮件通知
这里提供一份shell脚本来实现用户密码到期之前自动重置密码并邮件通知的功能,需要注意的是,该脚本需要root权限才能执行。
```shell
#!/bin/bash
# 设置密码过期时间为30天
MAX_DAYS=30
# 获取当前日期
TODAY=$(date +%s)
# 遍历所有用户
for USER in $(cut -d: -f1 /etc/passwd); do
# 获取用户密码到期时间
EXPIRE=$(chage -l $USER | grep "Password expires" | awk -F: '{print $2}' | sed 's/ //g')
# 如果密码过期时间为空则跳过该用户
if [[ -z "$EXPIRE" ]]; then
continue
fi
# 将密码过期时间转换为时间戳
EXPIRE_TS=$(date -d "$EXPIRE" +%s)
# 如果密码还有$MAX_DAYS天到期,则重置密码
if [[ $(($EXPIRE_TS - $TODAY)) -le $(($MAX_DAYS * 24 * 3600)) ]]; then
# 生成一个随机密码
NEW_PASS=$(openssl rand -base64 12)
# 重置用户密码
echo "$USER:$NEW_PASS" | chpasswd
# 发送邮件通知用户
echo "Your password has been automatically reset to $NEW_PASS" | mail -s "Password reset" $USER
fi
done
```
该脚本的实现思路如下:
1. 设置密码过期时间为30天(可以根据实际情况进行修改);
2. 获取当前日期;
3. 遍历所有用户,获取其密码到期时间;
4. 如果密码到期时间为空,则跳过该用户;
5. 将密码到期时间转换为时间戳;
6. 如果密码还有$MAX_DAYS天到期,则重置密码;
7. 生成一个随机密码;
8. 重置用户密码;
9. 发送邮件通知用户。
需要注意的是,该脚本中的邮件通知功能需要系统配置好了邮件服务才能正常使用。如果没有配置邮件服务,可以将邮件通知功能注释掉或者使用其他方式进行通知,比如短信、微信等。
阅读全文