python运维笔试题_python就业班shell运维习题训练

注:初学shell,以下为本人自己写的答案,如果有更好的,请指教!

1. 求2个数之和:

20180824210453801981.png

2. 计算1-100的和

20180824210454184769.png

3. 将一目录下所有的文件的扩展名改为bak

20180824210454455260.png

4.编译并执行当前目录下的所有.c文件

20180824210454659348.png

5.打印本机的交换分区大小,处理结果: Swap:1024M

20180824210454929839.png

6. 文本分析,取出/etc/password中shell出现的次数

第一种方法结果:

4  /bin/bash

1  /sbin/halt

2  /sbin/nologin

20180824210455219859.png

7. 文件整理,employee文件中记录了工号和姓名

100 Jason Smith

200 John Doe

300 Sanjay Gupta

400 Ashok Sharma

bonus文件中记录工号和工资:

100 $5,000

200 $500

300 $3,000

400 $1,250

要求把两个文件合并并输出如下,处理结果:

400 ashok sharma $1,250

100 jason smith  $5,000

200 john doe  $500

300 sanjay gupta  $3,000

sort employee.txt

sort salary.txt

join employee.txt salary.txt | sort -k2

20180824210455518668.png

8. 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录。

1 #!/bin/bash

2 echo "the present date is : `date` "

3 echo "the present user is : `whoami`"

4 echo "the present dir is : `pwd`"

20180824210455785253.png

9. 编写shell脚本获取本机的网络地址。

1 #!/bin/bash

2 echo "IP=$(ifconfig eth3| sed -n ‘/inet addr:/p‘|awk ‘{print $2}‘|awk -F: ‘{print $2}‘)"

20180824210456254949.png

20180824210457069350.png

10. 编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下

1 #!/bin/bash

2 for file in $(ls -l | awk ‘$5 >100 {print $9}‘)

3 do

4 mv $file /home/chenjj/shell/temp

5 done

11. 编写一个名为myfirstshell.sh的脚本,它包括以下内容。

a) 包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的。

b) 问候用户。

c) 显示日期和时间。

d) 显示这个月的日历。

e) 显示您的机器名。

f) 显示当前这个操作系统的名称和版本。

g) 显示父目录中的所有文件的列表。

h) 显示root正在运行的所有进程。

i) 显示变量TERM、PATH和HOME的值。

j) 显示磁盘使用情况。

k) 用id命令打印出您的组ID。

m) 跟用户说“Good bye”

1 #!/bin/bash

2 echo "hello!"

3 echo "Today is : $(date)"

4 #echo $(date)

5 echo "this month is :"

6 cal

7 echo "the hostname is : $(hostname)"

8 echo "the name of OS is $(uname -r) and the verion is $(uname -r) "

9 echo "the files are :$(ls -l ../)"

10 echo "the running process of root is $(ps -u root)"

11 echo "TERM=$TERM"

12 echo "PATH=$PATH"

13 echo "HOME=$HOME"

14 echo "the use of disk is :$(df -lh)"

15 echo "the id of the group is $(id -g)"

16 echo "Goodbye Sir!"

12. 文件移动拷贝,有m1.txt m2.txt m3.txt m4.txt,分别创建出对应的目录,m1 m2 m3 m4 并把文件移动到对应的目录下

1 #!/bin/bash

2 touch m1.txt m2.txt m3.txt m4.txt

3 for((i=1;i<=4;i++))

4 do

5 mkdir m$i

6 mv m$i.txt m$i

7 done

13. 终端输入一个文件名,判断是否是设备文件

1 #!/bin/bash

2 #coding=utf-8

3 echo "please input a filename:"

4 read fileName

5 if [ -c $fileName -o -b $fileName ]

6 then

7 echo "$fileName 是设备文件!"

8 else

9 echo "$fileName 不是设备文件!"

10 fi

14. 统计IP访问:要求分析apache访问日志,找出访问页面数量在前100位的IP数。日志大小在78M左右。以下是apache的访问日志节选:

202.101.129.218 - - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065 HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

关于apache日志的了解请见https://blog.csdn.net/xingxiupaioxue/article/details/70153166

日志记录的第六项信息是状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。此处不准备给出状态代码的完整清单以及解释它们的含义,请参考相关资料了解这方面的信息。但一般地说,以2开头的状态代码表示成功,以3开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置,以4开头的状态代码表示客户端存在某种错误,以5开头的状态代码表示服务器遇到了某个错误。

1 #!/bin/bash

2 awk ‘{print $1}‘ $1 |sort |uniq -c |sort -k1nr | head -n 100

执行脚本:source apache.sh apache(文件)

15. 设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

1 #!/bin/bash

2 cd /Userdata

3 for ((i=1;i<=50;i++))

4 do

5 mkdir user$i

6 chmod 754 user$i

7 done

20180824210457318358.png

16. 设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30,并设置密码为对应的stdxx。

1 #!/bin/bash

2 #coding=utf-8

3 #设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30,并设置密码为对应的stdxx。

4 groupadd class1

5 i=1

6 while [ $i -le 30 ]

7 do

8 if [ $i -lt 10 ]

9 then

10 useradd -g class1 std0$i

11 passwd std0$i std0$i

12 else

13 useradd -g class1 std$i

14 passwd std$i std$i

15 fi

16 let "i++"

17 done

17.编写shell程序,实现自动删除30个账号的功能。账号名为std01至std30。

1 #!/bin/bash

2 i=1

3 while [ $i -le 30 ]

4 do

5 if [ $i -lt 10 ]

6 then

7 userdel std0$i

8 else

9 userdel std$i

10 fi

11 let "i++"

12 done

18. 用户清理,清除本机除了当前登陆用户以外的所有用户

kill $(who -u | grep -v `whoami`| awk ‘{print $6}‘|sort -u )

19.写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。

1 #!/bin/bash

2 #coding=utf-8

3 #在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。

4 files=`find . -type f -name "d*" | head -n 100`

5 for file in $files

6 do

7 sed -n ‘1p‘ $file >> new

8 done

20. 把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。

21. 查看TCP连接状态

netstat -ant | awk ‘{print $6}‘|sort |uniq -c|sort -k1nr

22. 查找请求数为20个IP(常用于查找攻来源)

netstat -atn | grep 80 |awk ‘{print $5}‘|awk -F: ‘{print $1}‘|sort|uniq -c |sort

23. 查找较多time_wait连接

netstat -n | grep ‘TIME_WAIT‘ | awk ‘{print $5}‘|sort | uniq -c |sort -k1nr

24. 获得访问前10位的ip地址,access.log日志记录

61.155.149.20 - - [13/Jan/2017:15:42:47 +0800] "GET /category/db/ HTTP/1.1" 200 23225

cat access.log | awk ‘{print $1}‘ | sort |uniq -c |sort -nr | head -n10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值