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

标签 linux bash scripting centos7

我正在编写一个脚本,我想在数字 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/

相关文章:

linux - 计数文件,隐藏文件除外

ruby-on-rails - 使用脚本/控制台访问模型中的数据 (Ruby on Rails)

xml - 如何获取属性的xml值?

linux - show 的 nm 输出共享库的版本不正确

linux - 使用 printf 通过 grep 显示提取的字符串并用作脚本中的用户输入

bash - 如何使用 Bash 的 exit(0) 超时

linux - Linux Kernel 3.0+中的调度机制

linux - 从 AWS CLI 管道输出到特定行上的现有文件

mysql - 节约资源

linux - 用脚本参数填充 bash 数组