gpt4 book ai didi

linux - 使用脚本生成一堆新用户以生成 newusers 命令所需的输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:52 24 4
gpt4 key购买 nike

我正在编写一个脚本,我想在数字 1 到 15 之间迭代,但希望它显示为 01 02 03 ... 13 14 15。基本上我想做的是使用 newusers 添加 15 个用户命令并将此脚本用作命令的 <。 newusers 需要采用这种格式:

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

基本上,当我使用参数 = 运行脚本时,它应该看起来像这样

cstuser01:EzVlK9Je8JvfQump:1001:1001:CST8177 user:/home/cstuser01:/bin/bash
cstuser02:EsKOfvhgnWpiBT6c:1002:1002:CST8177 user:/home/cstuser02:/bin/bash
cstuser03:qzQuR5vRgxdzY6dq:1003:1003:CST8177 user:/home/cstuser03:/bin/bash

我的大部分工作正常,但出现以下错误:

./15users.sh: 57: ./15users.sh: Illegal number: 08

到目前为止,这是我的脚本(我取出了几个带有错误检查的部分)=

#!/usr/bin/env bash
PATH=/bin:/usr/bin ; export PATH
umask=022

#num=1 (this variable is needed depending on which loop I use below)
user=$prefix"user"
uid=1001
gid=$uid
home=/home/$user
shell=/bin/bash
pad=printf "%02d\n"

#echo "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell"
#PASSWD=$(openssl rand -base64 12)

我最初有这个但遇到了一些问题:

while [ $NUM -le 15 ] ; do
if [ $NUM -lt 10 ] ; then
NUM=0$NUM
fi
echo "$USER$NUM:$(openssl rand -base64 12):$UID:$GID:$GECO:$HOME$NUM:$SHELL"
UID=$(( UID + 1 ))
GID=$(( GID + 1 ))
NUM=$(( NUM + 1 ))
done

我的一个 friend 建议这样做,效果非常好。但我正试图在未来证明这件事。如果我要添加 100 或 1,000 个用户怎么办。

for NUM in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ; do
echo "$USER$NUM:$(openssl rand -base64 12):$UID:$GID:$GECO:$HOME$NUM:$SHELL"
done

这没有用:

for num in {01..15} ; do
i=09
echo "$(( 10#$num + 1 ))"
10
done

然后我尝试了这个但不是填充 0 或增加 uid 或 gid =

for (( num=1; num<=15; num++ )) ; do
echo "$user$pad$num:$(openssl rand -base64 12):$uid:$gid:$geco:$home$num:$shell"
done

我也试过了,但是 seq 是垂直打印而不是水平打印:

#iterate=$(seq -w 1 15)
for $iterate ; do
echo "$user$num:$(openssl rand -base64 12):$uid:$gid:$geco:$home$num:$shell"
done

最佳答案

bash 大括号扩展应该可以完成这项工作!

$ for i in {01..15}; do echo "user$i"; done

user01
user02
user03
user04
user05
user06
user07
user08
user09
user10
user11
user12
user13
user14
user15

关于linux - 使用脚本生成一堆新用户以生成 newusers 命令所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com