Shell面试题及企业运维实战练习1

来源:互联网 发布:淘宝装修设计师模块 编辑:程序博客网 时间:2024/05/19 16:04

最近在看Shell 学习了有些时间,正巧在网上找到了一批实战题,自己动手练习一下 原文没有答案,我会和大家一起一边更新题目和把自己的答案贴出来,也和大家分享一下 http://oldboy.blog.51cto.com/2561410/1867160

1 企业Shell面试题1:批量生成随机字符文件名案例

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

[root@oldgirl C19]# ls /oldboy

apquvdpqbk_oldboy.html mpyogpsmwj_oldboy.html txynzwofgg_oldboy.html

bmqiwhfpgv_oldboy.html mtrzobsprf_oldboy.html vjxmlflawa_oldboy.html

jhjdcjnjxc_oldboy.html qeztkkmewn_oldboy.html

jpvirsnjld_oldboy.html ruscyxwxai_oldboy.html

解答:

题2:批量改名特殊案例

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

解答:

题3:批量创建特殊要求用户案例

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

不用for循环的实现思路:http://user.qzone.qq.com/49000448/blog/1422183723

解答:

题目1 答案:

  1 #!/bin/bash  2   3 path="/root/oldboy/"  4 random(){  5         num_random=$(date +%S%N|md5sum|head -c 10)           #s=$(echo ${RANDOM}|md5sum|head -c 10)系统自带的                    变量也可产生一个0--32767 之间的随机数  6 }         7 if [ -d $path ]; then  8         rm -rf $path  9         echo "$path  removed" 10 fi       11 mkdir $path 12          13 for i in {1..10} 14 do 15          16         random 17         str="${path}${num_random}_oldboy.html" 18  19         touch $str 20 done     21 echo "#################     Done  #################" 22 cd $path 23 ls ~        

题目2 答案:
在排序上折腾了好久。我答案的这个方法不太好,但也可以实现。同学们有好方法现实欢迎留言,

1 #!/bin/bash  2 path="/root/oldboy/"  3 cd $path  4 echo "$(pwd)"   5 for i in {1..10}  6         do  7                 s=$(ls|sort -r +7 -13|sed -n ${i}p)  8                 d=$(ls|sort -r +7 -13 |sed -e 's/oldboy/oldgirl/'|sed -n ${i}p|sed -e 's/html/HTML/g' -e 's/HTML/html/')  9                 mv $s $d 10 #               mv $(ls |sed -n "${i}p") $(ls |sed 's/oldboy/oldgirl/${i}p'|sed 's/html/HTML/g'|sed 's/HTML/html/'|head -1) 11         done 12 echo "################### Done ######################" 13 ls $path 14  15 ~                                    

题目3:答案
题给出了不用循环的办法,类似:
echo stu{11..12}|xargs -n1 useradd ;echo stu{11..12}:cat /dev/urandom|tr -dc 0-9|fold -w8|head -1|xargs -n1|tee -a pass.txt|chpasswd
有兴趣的了可以了解下

1 #/bin/bash  2 path="/root/oldboy/"  3 name_start=1  4 name_end=10 # 要创建的数量  5 name="oldboy"  6 i=$name_start  7 echo "" > /root/password.txt  8  while (($i <= $name_end))  9         do  10           password=$(echo $RANDOM|md5sum|head -c 10) 11           echo $password   12         useradd -s /bin/sh -d /usr/$name$i -m $name$i 13         if [ $? -eq 0 ] 14          15         then 16                 echo "账号 $name$i 已增加" 17                 echo $password|passwd --stdin $name$i 2 >/dev/null 18                 echo "用户: $name$i 密码: $password "  >> /root/password.txt 19                 echo "用户: $name$i 密码 修改完成!" 20         else     21                 echo "账号$name$I增加出错了正在清理遗留文件" 22                 userdel $name$i;rm -fr /usr/oldboy*;rm -fr /var/spool/mail/oldboy* 23         fi       24                  25         ((i+=1)) 26         done 27 cat /root/password.txt

~

0 0
原创粉丝点击