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

最近在看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

~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zack_snair

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值