Shell 练习题 21—30,内附答案
来源:互联网 发布:淘宝关注的主播在哪里 编辑:程序博客网 时间:2024/05/17 03:36
21、计算a.txt中每行中出现的数字个数并计算一下整个文档中一共出现了几个数字。例如内容如下:
12aa*lkjskdj
alskdflkskdjflkjj
22、写一个shell脚本,先判断一下你linux的版本和bash版本,然后看看是否需要升级,若是升级,则使用yum直接升级,否则输出一条日志,告之不需要升级。参考信息:我们要保证对应版本的CentOS里的bash版本不低于以下版本。假设我们只判断centos5和centos6两种系统。
- Red Hat Enterprise Linux 7 - bash-4.2.45-5.el7_0.2
- Red Hat Enterprise Linux 6 - bash-4.1.2-15.el6_5.1
- Red Hat Enterprise Linux 5 - bash-3.2-33.el5.1
23、写一个脚本,检测你的网络流量,并记录到一个日志里。需要按照如下格式,并且一分钟统计一次:
2014-09-29 10:11
eth0 input: 1000bps
eth0 output : 200000bps
################
2014-09-29 10:12
eth0 input: 1000bps
eth0 output : 200000bps
24、统计当前通过 80 端口建立连接的进程数量
25、统计当前有多少ip 访问量,包括tcp和udp 协议
26、系统负载很高,通过top以及 ps 查看,是因为cron计划任务在运行一个 cleanmem.sh 的脚本,导致很多 sh 命令在运行,写个脚本,杀死所有的 sh 命令。
27、写脚本,判断Linux服务器是否开启了 web 服务,如果开启了,判断跑的是什么服务,httpd? 还是 nginx?或者其他的服务。
28、加入服务器上跑的是 httpd,写个脚本,每分钟检测一次 httpd 服务是否存在,如果不存在,就启动它。
29、创建一个带删除和添加选项的用户的脚本
- 只支持三个选项 ‘--del’ ‘--add’ --help输入其他选项报错。
- 使用‘--add’需要验证用户名是否存在,存在则反馈存在。且不添加。 不存在则创建该用户,切添加与该用户名相同的密码。并且反馈。
- 使用‘--del’ 需要验证用户名是否存在,存在则删除用户及其家目录。不存在则反馈该用户不存在。
- --help 选项反馈出使用方法
- 支持以,分隔 一次删除多个或者添加多个用户。
- 能用echo $? 检测脚本执行情况 成功删除或者添加为0,报错信息为其他数字。
- 能以,分割。一次性添加或者 删除多个用户。 例如 adddel.sh --add user1,user2,user3.......
- 不允许存在明显bug。
30、计算 100 以内能被 3 整除的数的总和。
21、答案
#!/bin/bash
sum=0
for fline in `cat $1`
do
i=`echo -n $fline |sed 's/[^0-9]//g'| wc -m`
echo $i
sum=$[$sum+$i]
done
echo 'sum:'$sum
echo -n do not output the trailing newline 不输出换行符,即在一行显示。
#!/bin/bash
sum=0
for i in `cat a.txt`; do
num=`echo $i|grep -o '[0-9]*'`
len=`expr length "$num"`
echo $len
sum=$[$sum+$len]
done
echo "sum:"$sum
22、答案
#!/bin/bash
#name:check_bash
#author: cityzenoldwang
#check bash version
os_version=`cat /etc/issue |grep release | awk '{print $3}'| awk -F '.' '{print $1}'`
bash_version=`rpm -qa bash | awk -F '-' '{print $2"-"$3}' | cut -c1-14`
echo $os_version
echo $bash_version
case $os_version in
5)
if [ "$bash_version" == "3.2-33.e15.1" ]
then
echo "the bash version is lastest"
else
yum update -y bash
fi
;;
6)
if [ "$bash_version" == "4.1.2-15.e16_5.1" ]
then
echo "the bash version is lastest"
else
yum update -y bash
fi
;;
*)
echo "can not ge the version"
;;
esac
23、 待整理 bc 命令
#! /bin/bash
#monitor average network traffic
#author cityzenoldwang
log=/tmp/netcount.log
while :; do
echo `date +'%F %T'` >> $log
sar -n DEV 1 3 > /tmp/nettraffic.log
receive_packets=`grep 'Average' /tmp/nettraffic.log|grep 'eth0'|awk '{print $5}'`
transmit_packets=`grep 'Average' /tmp/nettraffic.log|grep 'eth0'|awk '{print $6}'`
echo "eth0 input: "`echo "$receive_packets"*8|bc`"Kbps" >> $log
echo "eth0 output: "`echo "$transmit_packets"*8|bc`"Kbps" >> $log
echo "###########################" >> $log
done
24、netstat -an |grep :80 |grep -ic established
25、netstat -anp |egrep 'tcp|ndp' | awk '{print $5}' | wc -l
26、
#! /bin/bash
# auth: Cityzen Wang
# kill all sh command
for pids in `ps -aux |egrep 'clearmem.sh' | awk '{print $2}'`
do
kill -9 $pids
echo "killed $pid"
done
27、
#! /bin/bash
# name: Cityzen wang
# check web nad service
server=`netstat -lnp |egrep ':80' | awk -F '/' '{print $2}'`
if [ -n "$server" ]
then
echo "$server is running"
else
echo "No Web service"
fi
28、
#! /bin/bash
# Check service httpd is running or not, if not, start httpd.
# auth : Cityzen Wang
httpstat=`ps aux |grep httpd|grep -v "grep httpd"`
if [ -n "$httpstat" ]
then
echo "httpd is running"
else
/usr/local/apache2/bin/apachectl start
fi
crontab -e
* * * * * /bin/sh /path/filename.sh
29、有点难
#!/bin/bash
# Script function:
# --add :
# add user[user2,user3,user4...]
# --del :
# del user[user2,user3,user4...]
# --help:
# help info
# Writen by Wangxiaoqiang 2014.11.24.
add_user(){
grep ${key[$i]} /etc/passwd > /dev/null
if [ $? -eq 0 ]
then
echo "User '${key[$i]}' is exist."
else
useradd ${key[$i]} > /dev/null
echo $1 | passwd --stdin ${key[$i]} > /dev/null
echo "Create User '${key[$i]}' Success."
fi
}
del_user(){
grep ${key[$i]} /etc/passwd > /dev/null
if [ $? -eq 0 ]
then
userdel -r ${key[$i]}
echo "Delete user '${key[$i]}' Success."
else
echo "User '${key[$i]}' does not exist."
fi
}
help_user(){
echo "--add
Add a user or multiple users,[user1,user2,user3...]"
echo "--del
Del a user or multiple users,[user1,user2,user3...]"
echo "--help
Help information"
echo "--version 1.1
Writen by Wangxiaoqiag 2014-11-24.
Thanks"
}
if [ $# -eq 0 ]
then
echo "Usage: $0 [--add|--del|--help] [user1,user2,user3...]"
exit 1
fi
case $1 in
--add)
if [ $# -eq 1 ]
then
echo "Please input username."
exit 2
else
key=(`echo $* | sed 's/,/ /g'`)
length=${#key[@]}
for ((i=1;i<$length;i++))
{
add_user ${key[$i]}
}
fi
;;
--del)
if [ $# -eq 1 ]
then
echo "Please input username."
exit 2
else
key=(`echo $* | sed 's/,/ /g'`)
length=${#key[@]}
for ((i=1;i<$length;i++))
{
del_user ${key[$i]}
}
fi
;;
--help)
if [ $# -eq 1 ]
then
clear
help_user
else
echo "Please input $0 --help"
fi
;;
*)
echo "Usage: $0 [--add|--del|--help] [user1,user2,user3...]"
;;
esac
30、
#!/bin/bash
# Test script.
# Writen by Wangxiaoqiang 2014-11-24.
SUM=0
for i in `seq 1 100`
do
if [ `expr $i % 3` -eq 0 ]
then
SUM=$(expr $i \+ $SUM)
fi
done
echo $SUM
# End
0 0
- Shell 练习题 21—30,内附答案
- shell 练习题 11—20,内附答案。
- Shell 练习题 41-50,内附答案
- Shell 练习题 31-40题,内附答案
- 跨越SQL45个练习题(附答案)
- 史上最难oracle数据库练习题(附答案)
- JS初级实战练习题----附答案
- Java练习题第一套《附答案》
- Shell编程练习题精选及答案
- 练习题答案
- Google面试题集锦(内附答案/解析)
- 史上最全的Javascript面试题总结(内附答案)
- C语言选择结构练习题精选,附答案、难易程度以及考察点
- shell练习题
- shell练习题
- shell练习题
- C#面试题——附答案
- C#面试题——附答案
- 15-多线程互斥和同步
- 根据父子关系建立二叉树
- list容器的遍历删除
- 继承(Inheritance)与复合(Composition)关系下的构造与析构
- 2017,回来了~
- Shell 练习题 21—30,内附答案
- 关于如何单独失能STM32 TIM通道的方法
- 设计模式-3-建造者模式
- Bagging – building an ensemble of classifers from bootstrap samples
- C++之拷贝构造与拷贝赋值
- AJAX
- 常用操作
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
- c++第五作业—三角形类