Chinaunix首页 | 论坛 | 博客
  • 博客访问: 603350
  • 博文数量: 244
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-27 09:53
个人简介

记录学习,记录成长

文章分类

全部博文(244)

我的朋友

分类: LINUX

2016-07-27 17:44:06

for循环批量操作:
1.使用for循环再test目录下批量创建10个文件,名称依次为lv-1...lv-10
  1. #!/bin/bash
  2. path=/root/test
  3. if [ -d $path ];then
  4. cd $path
  5. else
  6. mkdir $path && cd $path
  7. fi
  8. echo `pwd`
  9. for i in {1..10}
    do
      touch lv-$i
    done
    echo `ls`

执行结果:
[root@bogon ~]# ls /root/ | grep test
[root@bogon scripts]# bash for_2.sh
/root/test
lv-1 lv-10 lv-2 lv-3 lv-4 lv-5 lv-6 lv-7 lv-8 lv-9
[root@bogon ~]# ls /root/test/
lv-1  lv-10  lv-2  lv-3  lv-4  lv-5  lv-6  lv-7  lv-8  lv-9


2.将以上文件名中的lv改为linux
  1. #!/bin/bash
  2. cd /root/test
    [ $? -eq 0 ] && echo `pwd` || exit 1
    for i in `ls`
    do
      mv $i `echo ${i/lv/linux}`
      [ $? -eq 0 ] && echo "$i rename success" || echo "fail"
    done
    ls
执行结果:
[root@bogon scripts]# bash for_3.sh
/root/test
lv-1 rename success
lv-10 rename success
lv-2 rename success
lv-3 rename success
lv-4 rename success
lv-5 rename success
lv-6 rename success
lv-7 rename success
lv-8 rename success
lv-9 rename success
linux-1  linux-10  linux-2  linux-3  linux-4  linux-5  linux-6  linux-7  linux-8  linux-9
[root@bogon ~]# ls /root/test/
linux-1  linux-10  linux-2  linux-3  linux-4  linux-5  linux-6  linux-7  linux-8  linux-9

3.批量创建3个系统帐号liv1到liv3并设置密码(密码不能相同)
  1. #!/bin/bash
  2. #创建三个用户;如果用户存在就跳过,否则就创建,如果无法创建就退出
  3. for i in {1..3}
    do
      cat /etc/shadow | grep liv$i >/dev/null 2>&1
      if [ $? -eq 0 ];then
        echo "user liv$i has been existed,need not create" && continue
      else
        useradd liv$i > /dev/null 2>&1
      fi
      if [ `echo $?` -eq 0 ];then
        echo "user liv$i add success" 
      else
        echo "user liv$i add fail" && exit
      fi
    done
    #创建密码文件;不存在该文件时才创建,否则提示文件已存在,然后向该文件中输入3个密码;
    [ ! -f /root/pass.txt ] && touch /root/pass.txt || echo "passwd file existed"
    for ((j=1;j<=3;j++))
    do
      read -p "pls input the  $j password:" pass 
      echo $pass >> /root/pass.txt
      unset pass
    done
    #将密码文件中的行取出并依次赋予用户其密码
    for k in {1..3}
    do
      echo `sed -n "$k"p /root/pass.txt` | passwd --stdin liv$k
    done
  4. #为了安全,最后删除该密码文件,或者为了防止密码忘记而保留(注释该行)
    rm -rf /root/pass.txt && echo "passwd file deleted" || echo "passwd file deleted fail"

执行结果:
(1)三个用户都不存在时
[root@bogon scripts]# bash for_4.sh
user liv1 add success
user liv2 add success
user liv3 add success
pls input the  1 password:123
pls input the  2 password:456
pls input the  3 password:789
更改用户 liv1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 liv2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 liv3 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
passwd file deleted

(2)仅删除liv3用户时
[root@bogon scripts]# bash for_4.sh
user liv1 has been existed,need not create
user liv2 has been existed,need not create
user liv3 add success
pls input the  1 password:123
pls input the  2 password:234
pls input the  3 password:345
更改用户 liv1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 liv2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 liv3 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
passwd file deleted
尚存在的问题:
    存在用户的密码需不需要更改?这里没有进行用户选择操作(默认要更改);
   密码没有做重复判断,只能靠自己自觉;
 当保留密码文件时,里面的前三行密码会存在,导致虽然再次添加了三个密码,但使用的还是前面三个(下面会解决);
  密码文件未设置权限;

4.批量创建3个系统账号liv1-liv3,并为其设置密码(密码为随机8为字符串)
  1. #!/bin/bash
  2. #create user
  3. for i in {1..3}
    do
      cat /etc/shadow | grep liv$i >/dev/null 2>&1
      if [ $? -eq 0 ];then
        echo "user liv$i has been existed,need not create" && continue
      else
        useradd liv$i > /dev/null 2>&1
      fi
      if [ `echo $?` -eq 0 ];then
        echo "user liv$i add success" 
      else
        echo "user liv$i add fail" && exit
      fi
    done
    #create passwd file
    if [ ! -f /root/pass.txt ];then
      touch /root/pass.txt 
    else
      echo "passwd file existed"
      >/root/pass.txt && echo "passwd file has cleared" || echo "passwd file cleared fail"
    fi
    #判断openssl是否安装,未安装的话退出
    if [ -f /usr/bin/openssl ];then
      echo "openssl has installed,you can use openssl command"
    else
      echo "openssl not installed,please install openssl..."
      exit 1
    fi
    for ((j=1;j<=3;j++))
    do
      echo `openssl rand -base64 8 | cut -b 1-8` >> /root/pass.txt
    done
    #passwd user a password
    for k in {1..3}
    do
      echo `sed -n "$k"p /root/pass.txt` | passwd --stdin liv$k
    done
  4. #因为密码是随机的,所以最好保留密码文件
    #rm -rf /root/pass.txt && echo "passwd file deleted" || echo "passwd file deleted fail"
执行结果:
[root@bogon scripts]# bash for_5.sh
user liv1 has been existed,need not create
user liv2 has been existed,need not create
user liv3 has been existed,need not create
passwd file existed
passwd file has cleared
openssl has installed,you can use openssl command
更改用户 liv1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 liv2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
更改用户 liv3 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

密码文件内容:
[root@bogon ~]# cat pass.txt 
Lju4SKja
KyZAwMIN
Cc9GBErl

尚存在的问题:
未安装openssl时可以自动安装,但是有问题,第一,要确定是否安装,这个很好解决,加个-y选项即可;第二,当出现如下信息时要输入y
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from
Importing GPG key 0xC105B9DE:
 Userid: "CentOS-6 Key (CentOS 6 Official Signing Key) "
 From  :
确定吗?[y/N]:y
但是这一步无法控制,如果在安装时选择不显示安装信息,那么很可能会导致安装不成功所以解决办法就是
   (1)未安装时直接退出,自己手动安装;
   (2)脚本中加上yum  install  openssl -y行,并且显示其安装过程,当出现输入时用户可以输入来保证安装成功;

补充资料:产生随机数的方法




阅读(892) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~