设为首页 加入收藏

TOP

企业Shell面试题及企业运维实战案例(三)(一)
2019-09-03 02:40:12 】 浏览:31
Tags:企业 Shell 试题 实战 案例

文章转载自:http://www.pythonheidong.com/blog/article/2870/

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

解答:

#!/bin/sh
while true
do
awk '{print $1}' access.log |sort |uniq -c >/tmp/ip.log#分析web访问日志
#netstat -an|grep EST|awk -F "[ :]+" '{print $6}'|sort|uniq -c#通过网络连接线   while read line
  do
    ip=`echo $line|awk '{print $2}'`
    count=`echo $line|awk '{print $1}'`
    if [ $count -gt 100 ] && [ `iptables -L -n|grep $ip|wc -l` -lt 1 ]
      then
    iptables -I INPUT -s $ip -j DROP
    echo "$line is dropped" >>/tmp/drop_ip.log
    fi
  done </tmp/ip.log
  sleep 5
done

iptables查看结果

[root@m01 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  140.205.225.206      0.0.0.0/0           
DROP       all  --  140.205.225.205      0.0.0.0/0           
DROP       all  --  140.205.225.200      0.0.0.0/0           
DROP       all  --  140.205.225.188      0.0.0.0/0           
DROP       all  --  140.205.201.43       0.0.0.0/0           
DROP       all  --  140.205.201.40       0.0.0.0/0           
DROP       all  --  140.205.201.37       0.0.0.0/0           
DROP       all  --  140.205.201.30       0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     

6、企业Shell面试题6:脚本实现MySQL数据库分库备份

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Installation failed: Timeout wa.. 下一篇Activity生命周期方法调用finish..