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
解答:
#!/bin/sh [ ! -d /oldboy ] && mkdir /oldboy -p for i in {01..10} do pass=`uuidgen|cut -c 1-10` touch /oldboy/${pass}_oldboy.html done
2、企业Shell面试题2:批量改名特殊案例
将以上面试题中结果文件名中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写
解答:
方法一:
#!/bin/sh for i in `ls /oldboy/*.html` do mv $i `echo $i|sed ‘s#oldboy.html#oldgirl.HTML#g‘` done
方法二:
rename oldboy.html oldgirl.HTML *.html
方法三: #!/bin/sh cd /oldboy &&for i in `ls` do str=`echo $i|cut -c -10` mv ${str}_oldboy.html ${str}_oldgril.HTML done
3、企业Shell面试题3:批量创建特殊要求用户案例
批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机数,要求字符和数字等混合)
解答:
#!/bin/bash for n in {01..10} do pass=`uuidgen|cut -c 1-10` id oldboy$n &>/dev/null if [ $? -ne 0 ];then useradd oldboy$n echo $pass|passwd --stdin oldboy$n &>/dev/null echo -e "user: oldboy$n pass: $pass" >>/tmp/user.log else echo "oldboy$n 已存在" fi done
4、企业Shell面试题4:扫描网络内存活主机案例
写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些?
解答:
#!/bin/sh . /etc/init.d/functions for ip in {1..254} do ping -c2 -W1 10.0.0.$ip &>/dev/null if [ $? -eq 0 ] then action "10.0.0.$ip" /bin/true fi done
5、企业Shell面试题5:解决DOS攻击生产案例
写一个Shell脚本解决DOS攻击生产案例。请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100(读者根据实际情况设定),即调用防火墙命令封掉对应的IP。防火墙命令为:iptables-I INPUT -s IP地址 -j DROP
解答: