Skip to content

Files

Latest commit

 

History

History
88 lines (63 loc) · 3.11 KB

chatgpt_day2.md

File metadata and controls

88 lines (63 loc) · 3.11 KB

Prompt1:

需求:写一个shell脚本,创建10个用户,并给他们设置随机密码,密码记录到一个文件里,文件名userinfo.txt,要求 用户从user_00 到 user_09, 密码要求:包含大小写字母以及数字,密码长度15位

ChatGPT:

要编写一个满足这些要求的shell脚本,我们需要遵循几个步骤:

循环创建用户,从user_00到user_09。
为每个用户生成一个随机的15位密码,其中包含大小写字母和数字。
将用户名和对应的密码记录到文件userinfo.txt中。

以下是满足这些要求的shell脚本示例:

#!/bin/bash

# 用户信息文件
userInfoFile="userinfo.txt"

# 清空或创建用户信息文件
> $userInfoFile

# 函数:生成随机密码
generate_password() {
    # 生成一个包含大小写字母及数字的15位随机密码
    < /dev/urandom tr -dc 'A-Za-z0-9' | head -c15
}

# 创建10个用户
for i in $(seq -w 0 9); do
    username="user_$i"
    password=$(generate_password)

    # 创建用户并设置密码
    useradd $username
    echo $password | passwd --stdin $username

    # 将用户名和密码记录到文件
    echo "Username: $username, Password: $password" >> $userInfoFile
done

# 给予userinfo.txt合适的权限
chmod 600 $userInfoFile

这个脚本首先创建一个名为userinfo.txt的文件,然后使用循环创建从user_00到user_09的用户,每次循环调用generate_password函数来生成随机密码,并使用useradd和passwd命令设置用户和密码。最后,将用户名和密码记录到userinfo.txt文件中,并设置该文件的权限以保护内容。

请注意,在运行此脚本之前,您需要具有足够的权限来创建用户和更改密码。此外,passwd --stdin的使用可能因系统而异,某些系统可能不支持此选项。在这种情况下,您可能需要使用其他方法来设置密码。

Prompt2:

你的脚本中有问题,我要求是user_00 到 user_09, 而你给出的脚本是user_0到user_9,请修正。

ChatGPT:

确实,我的脚本中的用户命名不符合您的要求。我将对脚本进行适当的修改,以确保用户名称从user_00到user_09。以下是修正后的脚本:

#!/bin/bash

# 用户信息文件
userInfoFile="userinfo.txt"

# 清空或创建用户信息文件
> $userInfoFile

# 函数:生成随机密码
generate_password() {
    # 生成一个包含大小写字母及数字的15位随机密码
    < /dev/urandom tr -dc 'A-Za-z0-9' | head -c15
}

# 创建10个用户
for i in $(seq -w 00 09); do
    username="user_$i"
    password=$(generate_password)

    # 创建用户并设置密码
    useradd $username
    echo $password | passwd --stdin $username

    # 将用户名和密码记录到文件
    echo "Username: $username, Password: $password" >> $userInfoFile
done

# 给予userinfo.txt合适的权限
chmod 600 $userInfoFile

这个修正后的脚本使用seq -w 00 09命令来生成从00到09的序列,以确保用户名称符合user_00到user_09的格式。其他部分保持不变,仍然按照原来的方式生成密码并将用户信息写入userinfo.txt文件。