首页 > 代码库 > Shell必会30道题

Shell必会30道题

1、批量生成随机字符文件名

使用for 循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下:

[root@shiyanji ~]# ls /oldboy/
aebecfecbd_oldboy.html  baaaafbcda_oldboy.html  ccdeadaebe_oldboy.html  ceefcaaffc_oldboy.html  deacbedcdb_oldboy.html
afcbdeeafc_oldboy.html  bbbceadeef_oldboy.html  cdedcfadec_oldboy.html  dcdbedaace_oldboy.html  ecfebeaaaf_oldboy.html

 

解答:

[root@web01 oldboy]# vim /server/scripts/ti1.sh
#
!/bin/bash Path=/oldboy [ -d "$Path" ] ||mkdir -p $Path for i in `seq 10` do random=$(echo $RANDOM|sha512sum|sed s#[^a-z]##g|cut -c 1-10) touch $Path/${random}_oldboy.html done

 

2、批量改名

将上题中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写。

 

解答:

[root@web01 oldboy]# vim /server/scripts/ti2.sh

#!/bin/bash
Filename=oldgirl.HTML
Dirname="/oldboy"
cd $Dirname
for i in `ls`
do
    name=$(echo ${i}|awk -F _ {print $1})                                            
    mv $i ${name}_${Filename}
done

 

 3、批量创建特殊要求用户

批量创建10个系统账号oldboy01-oldboy10并设置密码(密码为随机数,要求是字符和数字等的混合)。

 

不使用for循环做法

seq -w 10|sed s#.*#useradd oldboy&;a=`echo $RANDOM|sha512sum|cut -c 1-10`;echo $a|passwd --stdin oldboy&;echo oldboy& $a >>/tmp/mima#ge

说明:

e     等于bash

-w   平衡宽度用前导零填充

 

使用for循环脚本

[root@web01 scripts]# vim ti3.sh 

#!/bin/bash
Mima=`echo $RANDOM|sha512sum|cut -c 1-10`                                                                                                                                     
for i in oldboy{1..10}
do
    useradd $i;echo ${Mima}|passwd --stdin $i
    touch /tmp/new
    echo $i ${Mima} >>/tmp/new
done

 

 4、扫描网络内存活主机

写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些?

 

解答:

#!/bin/bash
for i in 10.0.0.{1..254}
do
    {
        ping -w 2 -c 2 $i &> /dev/null
    if [ $? -eq 0 ];then
        echo "$i is ok"
    fi
    }&
done

说明:

ping

-c              count次数

-w              延期时间

. /etc/init.d/functions 调用这个库

action $i /bin/true    固定格式(把$i以这个库的true格式显示)

action $i /bin/false   固定格式(把$i以这个库的false格式显示)

&       Shell的并发检测功能,批量ping,快速返回结果     

 

 

 

 

 

 

 

  

 

 

 

 

 

 

 

 

  

Shell必会30道题