2014-01-08 shell脚本练习题

回复 收藏
用shell脚本实现如下需求:
添加user_00 - user_09 10个用户,并且给他们设置一个随机密码,密码要求10位包含大小写字母以及数字,注意需要把每个用户的密码记录到一个日志文件里。

提示:
1. 随机密码使用命令 mkpasswd
2. 在脚本中给用户设置密码,可以使用echo 然后管道passwd命令
2014-01-08 13:13 举报
已邀请:
0

Hello_Lemon

赞同来自:

思路:
for(i in seq 0 9){
    pass = mkpasswd
    username = 'user_0' + i
    useradd useradd -p pass
    echo pass,username > log
}

语法忘记得7788 ,准备重拾。
0

驰骋天下

赞同来自:

for i in ` seq 0 9 `; do
username='user0'
useradd $username$i
password=mkpassword -d -c -l10
echo "password" >>1.log
done
0

第六感

赞同来自:

本帖最后由 第六感 于 2014-1-8 16:41 编辑

#!/bash/bin
for i in `seq 0 9`;do
  user=user_0$i
  pas=`mkpasswd -l 10 -s 0`
  useradd $user
  echo -e "$pas\n$pas" | passwd $user
  echo $user  $pas>>1.log
done
0

oszhang

赞同来自:

for n in `seq 0 9`
do
  useradd user$n
      passwd=mkpasswd
      useradd user$n -p passwd
done
  echo  user$n,passwd >xx.log
  
0

SHMILY

赞同来自:

本帖最后由 SHMILY 于 2014-1-8 15:43 编辑

#!/bin/bash
#循环创建用户及密码
userlist=$(seq -f"user_%02g" 1 10)
for NAME in $userlist
        do
echo $NAME ; useradd $NAME ; sleep 1
        PASSWD=$(mkpasswd -l 10 -s 0)
        echo "$NAME $PASSWD" >>password.txt
        echo $PASSWD | passwd --stdin $NAME
done
echo "完成"

0

tulip

赞同来自:

本帖最后由 tulip 于 2014-1-8 16:34 编辑

#!/bin/bash
#create user and set passwd automatically!
for i in `seq 0 9`;do
useradd user_0$i
j=`mkpasswd -l 10 -c 3`
echo $j | passwd --stdin user_0$i
echo user_0$i:$j >> /root/log.txt
done
0

一枝梅

赞同来自:


for i in `seq 0 9`;do   #用循环实现批量
useradd user_0$i        #创建用户
pass=$(mkpasswd -l 10)    #获取随机密码
echo ${pass} >> userpass.txt   #密码记录到日志文件
echo ${pass} |passwd --stdin user_0$i    #设置密码
done
0

chekir

赞同来自:

  1. #!/bin/bash
  2. #This is script is add users

  3. for i in `seq 0 9` ;  do
  4.         useradd user_0$i
  5.         pass=`mkpasswd -l 10 -s 0`
  6.         echo $pass |passwd --stdin user_0$i
  7.         echo user_0$i:$pass >> user.txt
  8. done
0

larson

赞同来自:


#!/bin/bash
#add 10 user
#mkpasswd -- make a passwd
pass=`mkpasswd -l 10 -s 0`
for i in `seq 0 9`;do
   useradd user_0$i
echo user_0$i :  $pass  >>user_passwd.log
done
0

___紸角__...

赞同来自:

#!/bin/bash
#
for i in `seq 0 9`
do
        useradd user_0$i
        user_password=`mkpasswd -l 10`
        echo "the user_0$i password is:$user_password" >> /var/log/user_passwd.txt
        echo $user_passwd | passwd --stdin user_$i
done

echo "complete!"
0

ocean

赞同来自:

本帖最后由 ocean 于 2014-9-17 21:19 编辑

[root@OceanV sh]# cat adduser.sh
#/bin/bash
#添加user_00 - user_09 10个用户,并且给他们设置一个随机密码,密码要求10位包含大小写字母以及数#字,注意需要把每个用户的密码记录到一个日志文件里。

for USERNAME in `seq -f"user_%02g" 0 9`;do

useradd $USERNAME
USERPWD=$(mkpasswd -l 10 -s 0)
echo $USERPWD | passwd --stdin $USERNAME
echo -e "$USERNAME $USERPWD\n" >>/var/log/accountinfo.txt
done
0

楓瀛夢鞢

赞同来自:

#! /bin/bash

for i in `seq 0 9`; do
        useradd user_0"$i"|mkpasswd -l 10 >user_0"$i".log
       
done
0

楓瀛夢鞢

赞同来自:

#! /bin/bash

for i in `seq 0 9`; do
        useradd user_0"$i"|mkpasswd -l 10 >user_0"$i".log
       
done
0

Louis

赞同来自:

#!/bin/bash
## This script is for useradd a kind of users and make passwords for them.
## Writed by Louis on 2014/08/31 09:30

log=userch.log
echo "`date +'%F %T'` try to add users." >> $log
for i in `seq 0 9`; do
    if awk -F ':' '{print $1}' /etc/passwd|grep -oq user_0$i; then
        echo "User user_0$i has been exist." >>$log      #if user exist,do no add user.
    elif awk -F ':' '{print $1}' /etc/group|grep -oq user_0$i; then
        echo "Group user_0$i has been exist." >> $log    #if group exist,do not add user.
    else
        useradd user_0$i > /dev/null 2>> $log
        p=`mkpasswd -l 10 -s 0`
        echo "Add user_0$i succeed"  >> $log
        echo $p >> $log
        echo $p|passwd --stdin user_0$i > /dev/null 2>> $log
    fi
done
   
0

So Long

赞同来自:


#!/bin/bash
for i in `seq  0 9`;do
    pass=`mkpasswd -l 10 -s  0`
    useradd user_0$i
    echo "user_0$i   $pass" >>/tmp/pass.txt
    echo -e  "$pass\n$pass\n" |passwd user_0$i
done
注:\n是第一次输入密码需要回车才能继续输入第二次重复密码。
-e 使得\n称为回车符
0

cmzsteven

赞同来自:

本帖最后由 cmzsteven 于 2015-2-8 15:59 编辑

#!/bin/bash

>passwd.txt

for i in `seq 0 9`; do
    user="user0$i"
    password=`mkpasswd -l 10`
    useradd $user
    echo $password| passwd $user --stdin
    echo "$user:$password">>passwd.txt
done

chmod 600 passwd.txt
0

qq20847697

赞同来自:

#!/bin/bash
#
for i in `seq 0 9` ;
do
useradd user_0$i && mkpasswd -l 10 | passwd --stdin user_0$i
done
0

dantes

赞同来自:

#! /bin/bash groupadd  users for  i  in    `seq  0  9`; do  useradd  -g users  -M  user_0$i /usr/bin/ircd-mkpasswd  -l  10  -p plaintext    user_0$i  >>  /root/password   done
0

sss

赞同来自:

Louis 发表于 2014-8-31 11:59
#!/bin/bash
## This script is for useradd a kind of users and make passwords for them.
## Writed b ...

为何基本上我看的你的脚本 所有的要求不管是难的还是简单的 ,你的都是尽量的往多的写??? 代码少的脚本就能实现的功能,你为啥不简化???
0

sss

赞同来自:

本帖最后由 sss 于 2015-6-11 14:52 编辑
  1. #!/bin/bash
  2. #Add user script
  3. #2015/05/18
  4. for i in `seq 0 9`
  5. do
  6.         useradd user_0$i
  7.         pass=`mkpasswd -l 10 -s 0`
  8.         echo $pass | passwd --stdin user_0$i
  9.         echo user_0$i:$pass >> user.txt
  10. done


0

Louis

赞同来自:

sss 发表于 2015-6-11 14:45
为何基本上我看的你的脚本 所有的要求不管是难的还是简单的 ,你的都是尽量的往多的写??? 代码少的脚 ...

哈,sorry啊,个人比较啰嗦,而且写脚本能力差,所以都会写得比较多。
在这个脚本中,我多加了一个考虑:已经存在的用户,不能直接改掉人家的密码,这样会影响在用这个用户的管理员。
0

鑫柏

赞同来自:

不知道怎么样
#!/bin/bash
for i in `seq -w 01 10`
do
b=`useradd user_"$i"`
a=`mkpasswd`
echo "$a"|passwd --stdin $b
echo "b:$a">>1.txt
done
0

Armani

赞同来自:


for  i   in   `seq  -w 00 09`
do
    useradd  -M  user_"$i"

    bb=`mkpasswd -l 10`
    echo $bb  >>  /scripts/shell/user.log
    echo $bb  |  passwd --stdin   user_"$i"


done
0

307141950

赞同来自:

本帖最后由 307141950 于 2015-8-30 10:31 编辑

for i in `seq -w 01 09`
do
        useradd user_$i
        echo `/bin/htpasswd -l 10 -c -C -d ` |passwd user_$i
done

0

shajoe

赞同来自:

for i in `seq 0 9`;
do
a=`mkpasswd -l 10`
useradd user_0$i
echo $a|passwd --stdin user_0$i
echo user_0$i   $a >>3.txt
done
0

chenqi

赞同来自:

  1. a=0
  2. until [ $a -gt 9  ]
  3. do
  4.         user=user_0${a}
  5.         useradd  ${user}
  6.         password=`mkpasswd -l 10 -C 2 -c 2 -d 2`
  7.         echo ${password}|passwd --stdin ${user} 1>2&
  8.         echo ${user}\'s password is : ${password} >> password.txt
  9.         let a++
  10. done
0

翟厚翔

赞同来自:

#!/bin/bash  n=1 for  a in `seq -f"%02g" 00 09`; do          useradd use_$a    echo " username: use_$a "  >>7.log    echo "password:   `use_$a|passwd`" >>7.log done
0

elvis

赞同来自:

#!/bin/bash
for sum in `seq -w 1 10`
do
  useradd user$sum
  pass=$(mkpasswd -l 10 -c 2)
  echo $pass | passwd --stdin user$sum
  echo user$sum:$pass >> /tmp/user.txt
done
0

zhangzihao

赞同来自:

不错不错
0

hhx012

赞同来自:

  1. #!/bin/bash
  2. echo start
  3. for i in `seq 0 9`
  4. do
  5. username=user_0$i
  6. password=`mkpasswd -l 10 -s 0`
  7. echo username: $username , passwd: $password >> 2.txt
  8. useradd $username
  9. echo $password | passwd --stdin $username
  10. done
  11. echo "complete!"
0

Rohero

赞同来自:

啦啦啦啦
0

Rohero

赞同来自:

啦啦啦啦
0

gxp2008

赞同来自:

  1. for i in `seq -w 0 9`
  2. do
  3.      useradd user_0$i
  4.      b=`mkpasswd -l 10`
  5.      echo user_0$i:$b|chpasswd
  6.      echo "user_0$i:$b" >> passwd.log
  7. done
0

kevinjin

赞同来自:

#! /bin/bash
for i in `seq 0 9`
do
    s=`mkpasswd -l 10 -C 3 -c 3 -d 1`
    useradd user_0$i
    echo $s |passwd --stdin user_0$i
    echo "user_0$i:$s" >> 2.log
done
0

hmh

赞同来自:

学习
0

a_leon

赞同来自:

  1. #!/bin/bash
  2. for i in `seq 0 9`;do
  3.         useradd user_0$i -M
  4.         echo `mkpasswd` >>passwd.log
  5.         cat passwd.log|tail -1 | passwd  --stdin user_0$i
  6. done
0

riverxyz

赞同来自:

#!/bin/bash
for i in `seq -w 00 9`
    do pass=`mkpasswd -l 10`
     useradd -M user_$i
     echo "$pass" |passwd --stdin user_$i
     echo "user_$i password is $pass" >> /tmp/pass.txt
   done
0

linuxcp

赞同来自:

一套4有
0

linuxcp

赞同来自:

亚冠
0

kw是id

赞同来自:

#!/bin/bash
exec >>/tmp/password.txt
for n in `seq -w 0 09`
do
   /usr/sbin/useradd user_$n
   echo $n
   /usr/bin/mkpasswd -s 0 -l 10
   m=`grep -A1 $n /tmp/password.txt |grep -v $n`
   echo $m |passwd --stdin user_$n
done

0

qwlp19910807

赞同来自:

学习下

0

Youcan

赞同来自:

查看答案

0

sun330

赞同来自:

查看答案

0

大雁

赞同来自:

 for i in `seq 0 9`

  5 do

  6   pd=`mkpasswd -l 10 -s 0`

  7   useradd user0$i

  8   echo $pd| passwd --stdin user0$i

  9   echo user0$i  $pd >>1.txt

 10 done

0

王斌

赞同来自:

芝麻开门

0

王斌

赞同来自:

#! /bin/bash
for i in `seq -w 00 09`
do
    useradd user_$i
    passwd=`mkpasswd -l 10 -s 0`
    echo $passwd | passwd --stdin user_$i
    echo "user_$i $passwd" >> /tmp/1.txt
done


0

季山

赞同来自:

1、yum install -y expect 必须安装 ,这是mkpasswd

2、批量新增用户脚本

vi 1.sh  

#!/bin/bash

for i in `seq -w 00 09`

do

  useradd user_$i

  pwd=`mkpasswd`

  echo $pwd|passwd --stdin user_$i

  #echo -e "user_$i\t $pwd" >> user.txt

  echo "用户:user_$i  密码:$pwd" >>user.txt

done

3、批量删除用户脚本

vi 2.sh

#!/bin/bash

for i in `seq -w 00 09`

do

  userdel -r user_$i && rm -rf user.txt

  #useradd user_$i

  #pwd=`mkpasswd`

  #echo $pwd|passwd --stdin user_$i

  #echo -e "user_$i\t $pwd" >> user.txt

  #echo "用户:user_$i  密码:$pwd" >>user.txt

done

0

肖永安

赞同来自:

学习

0

fy88fy

赞同来自:

学习

0

jiapingbian@sina.com

赞同来自:

#!/bin/bashfor i in `seq 0 9`dop=`mkpasswd`useradd -p $p user_0$iecho user_0$i--$p>>1.txtdone

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: