CCCPaste

userPass.sh

#!/bin/bash
#This program reads the user file then,
#sets a random password the user must change at login.
#results of username / password are pushed to a file, 
#which seems insecure, but it was requested. 

# Define the input file containing usernames, one per line
input_file="users.txt"

# Define the output file for username and password pairs
output_file="user_passwords.txt"

# Check if the input file exists
if [ ! -f "$input_file" ]; then
    echo "Input file '$input_file' not found."
    exit 1
fi

# Check if the output file exists and remove it if it does
if [ -f "$output_file" ]; then
    rm "$output_file"
fi

# Read each name from the input file and create a user
while IFS= read -r name; do
    # Generate a random password (change this to fit your requirements)
    password=$(openssl rand -base64 12)
    
    #write a thing to see if the username already exists. 
    #if it exists, list , move on, if it doesnt exist, add it with parameters
    chage -l "$name" >> "$output_file"
    
    # Create the user with a random password
    sudo useradd -m -s /bin/bash -p "$(echo "$password" | openssl passwd -1 -stdin)" "$name"
        
    # Force the user to change their password on first login and every 60 days there after
    sudo chage -d 0 -M 60 "$name"
    
    # Write the username and password to the output file
    echo "Username: $name" >> "$output_file"
    echo "Password: $password" >> "$output_file"
    echo "====================" >> "$output_file"
    
    echo "User '$name' created with a random password."
done < "$input_file"

echo "Usernames and passwords are saved in '$output_file'."