shell编程作业

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。

[root@localhost sh.log]# cat systeminfo.sh 
#!/bin/bash
#author:DYW
#显示当前主机系统信息,主机名,ipv4,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小。
echo "Host system communication and hostname is `hostname`"
echo "Ip is `ip addr |sed -n "9p"|sed -e "s@.*net[[:space:]]\+@@"  -e "s@/.*@@"`"
echo "Operating system version is `uname -i`"
echo "Kernel version is `uname`"
echo "Model name is `lscpu | sed -n "/Model name/p" |sed "s@Model name:[[:space:]]\+@@"`"
echo "Memory size is `free -h |sed -n '2p'|sed "s@Mem:[[:space:]]\+@@"|sed "s@[[:space:]].*@@"`"
echo "Hard drive size is `fdisk -l| sed -n '2p'|sed "s@.*\:[[:space:]]\+@@"|sed "s@,.*@@"`"
[root@localhost sh.log]# bash systeminfo.sh 
Host system communication and hostname is localhost.localdomain
Ip is 192.168.1.114
Operating system version is x86_64
Kernel version is Linux
Model name is Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
Memory size is 977M
Hard drive size is 107.4 GB

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

[root@localhost sh.log]# cat backup.sh 
#!/bin/bash
#author:DYW
#实现每日将/etc/目录备份到/wang中

mubiaodizhi="/wang/etc$(date +%F)"
cp -a /etc/ $mubiaodizhi && echo "Backup $mubiaodizhi finished"
[root@localhost sh.log]# bash backup.sh 
Backup /wang/etc2016-08-11 finished

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值

[root@localhost sh.log]# cat disk.sh 
#!/bin/bash
#author:DYW
#显示当前硬盘分区中空间利用率最大的值

maxzhi=`df |grep "^tmpfs"|tr -s " "|sort -nr -t" " -k5|head -n1|cut -d" " -f5`
echo "硬盘分区使用率最大的值是$maxzhi"
[root@localhost sh.log]# bash disk.sh 
硬盘分区使用率最大的值是2%

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

[root@localhost sh.log]# cat links.sh 
#!/bin/bash
#author
#显示正连接本主机的每个远程主机的ipv4地址和连接数,并按连接数从大到小排序

echo  -e "远程主机连接:\n\t连接次数\t连接ip"
netstat -nt |grep "tcp" |tr -s  " " ":"|cut -d: -f6|uniq -c|sort -nr|tr -s ' ' '\t'
[root@localhost sh.log]# bash links.sh 
远程主机连接:
	连接次数	连接ip
	3	192.168.1.106

5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

[root@localhost sh.log]# cat sumid.sh 
#!/bin/bash
#author:DYW
#计算/etc/passwd文件中的第10个用户和第20用户的id之和

yonghu10=`sed -n 10p /etc/passwd|cut -d: -f3`
yonghu20=`sed -n 20p /etc/passwd|cut -d: -f3`
let sum=$yonghu10+$yonghu20
echo -e "user10 uid is $yonghu10\nuser20 uid is $yonghu20\nsum user10 and user20 is $sum"
[root@localhost sh.log]# bash sumid.sh 
user10 uid is 11
user20 uid is 89
sum user10 and user20 is 100

6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

[root@localhost sh.log]# cat sumspace.sh 
#!/bin/bash
#author:DYW
#传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和。

file1=`grep "^$" $1|wc -l`
file2=`grep '^$' $2|wc -l`
let sum=$file1+$file2

echo "the sum of $1 and $2 spacelines is $sum"
[root@localhost sh.log]# bash sumspace.sh /wang/file1 /wang/file2
the sum of /wang/file1 and /wang/file2 spacelines is 14

6、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

[root@localhost sh.log]# cat sumfile.sh 
#!/bin/bash
#author:DYW
#统计/etc,/var,use目录中共有多少个一级子目录和文件

dir1=`ls -a $1 | tr -s " " "\n" | wc -l`
dir2=`ls -a $2 | tr -s " " "\n" | wc -l`
dir3=`ls -a $3 | tr -s " " "\n" | wc -l`

let sum=$dir1+$dir2+$dir3

echo "the sum of $! and $2 and $3 dirfile is $sum"

[root@localhost sh.log]# bash sumfile.sh /etc /var /usr
the sum of  and /var and /usr dirfile is 214

7、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

[root@www sh.log]# cat argsnum.sh 
#!/bin/bash
#author:DYW
#接受一个文件路径作为参数,如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出,如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数。

[ $# -lt 1 ] && (echo "至少应该给一个参数";exit) || echo "`grep "^$" $1 |wc -l`"
[root@www sh.log]# bash  argsnum.sh /wang/file2
7
[root@www sh.log]# bash  argsnum.sh 
至少应该给一个参数

8、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

[root@localhost sh.log]# cat hostping.sh 
#!/bin/bash
#author:DYW
#接受一个主机ipv4地址作为参数,则是是否可连通,如果能ping通,则提示用户“该ip地址可访问”,如果不可ping通,则提示用户“该ip地址不可访问”

`ping -c1 -W1 $1 &> /dev/null` && echo "该ip地址可以访问" ||echo "该ip地址不可访问"
[root@localhost sh.log]# bash hostping.sh 192.168.1.1
该ip地址可以访问
[root@localhost sh.log]# bash hostping.sh 192.168.1.256
该ip地址不可访问

9、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件是否不可读且不可写

[root@localhost sh.log]# bash per.sh 
yes
[root@localhost sh.log]# cat per.sh 
#!/bin/bash
#autor:DYW
#chmod -rw /wang/file1 判断当前用户对/wang/file1文件是否不可读且不可写
chmod -rw /wang/file1
[ -r /wang/file1 -a -w /wang/file1 ] && echo "yes"||echo "no"
[root@localhost sh.log]# bash per.sh 
yes

10、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统。

[root@localhost sh.log]# cat nologin.sh 
#!/bin/bash
#author:DYW
#禁止普通用户登录系统

[ -f /etc/nologin ] && echo "普通用户已经不能登录" ||(touch /etc/nologin; echo "已经禁止普通用户登录")
[root@localhost sh.log]# bash nologin.sh 
普通用户已经不能登录
[root@localhost sh.log]# rm -f /etc/nologin 
[root@localhost sh.log]# bash nologin.sh 
已经禁止普通用户登录
[root@localhost sh.log]# ls -a /etc |grep "nologin"
nologin
[root@localhost sh.log]# cat login.sh 
#!/bin/bash
#author:DYW
#允许普通用户登录系统

[ -f /etc/nologin ] && (rm -f /etc/nologin;echo "已经允许普通用户登录") || echo "普通用户已经可以登录"
[root@localhost sh.log]# bash login.sh 
普通用户已经可以登录
[root@localhost sh.log]# touch /etc/nologin
[root@localhost sh.log]# bash login.sh 
已经允许普通用户登录

11、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,先判断是否合格IP,否,提示IP格式不合法并退出,是,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

[root@www sh.log]# cat hostping2.sh 
#!/bin/bash
#author:DYW
#接受一个主机ipv4地址作为参数,先判断是否合格ip,否,提示“ip格式不合法并退出”,是,测试是否可ping通,如果能ping通,则提示用户“该ip地址可访问”,如果ping不通,则提示用户“该ip地址ping不通”

result=`ping -c1 -W1 $1 &> /dev/null && echo "该ip地址可以访问" ||echo "该ip地址不可访问"`
echo "$1" |grep  -E  "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9|25{0-5])\>" &> /dev/null && echo "${result}"  || (echo "ip格式不合法" ; exit)
[root@www sh.log]# bash hostping2.sh 192.168.1.1
该ip地址可以访问
[root@www sh.log]# bash hostping2.sh 192.168.1.256
ip格式不合法
[root@www sh.log]# bash hostping2.sh 192.168.1.106
该ip地址可以访问
[root@www sh.log]# bash hostping2.sh 192.168.1.113
该ip地址不可访问

12、计算1+2+3+…+100的值

[root@localhost sh.log]# cat qiuhe.sh 
#!/bin/bash
#author:DYW
#计算1+2+...100的值

echo {1..100} |tr " " "+"|bc
[root@localhost sh.log]# bash qiuhe.sh 
5050

13、计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之

[root@www sh.log]# cat canshuqiuhe.sh 
#!/bin/bash
#计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之
jisuan=`seq -s "+" $1 $2 | bc`
[ $2 -gt $1 ] && echo "$jisuan" || (echo "输入错误" ; exit)
[root@www sh.log]# bash  canshuqiuhe.sh 1 10
55
[root@www sh.log]# bash  canshuqiuhe.sh 11 10
输入错误

原创文章,作者:DYW,如若转载,请注明出处:http://www.178linux.com/34184

(0)
DYWDYW
上一篇 2016-08-15 12:10
下一篇 2016-08-15 12:10

相关推荐

  • 马哥教育网络班20期+第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,则只显示一次即可。 [root@llww3317 ~]# who    #显示当前用户登录信息 root     tty1    &nbsp…

    Linux干货 2016-06-26
  • 五种开源协议的比较(BSD,GPL,LGPL,Apache,BSD)

    BSD开源协议(original BSD license、FreeBSD license、Original BSD license) BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码…

    Linux干货 2016-01-16
  • ansible学习笔记

    简介:  在日常服务器维护中,从系统安装到程序部署再到发布应用,在大规模的生产环境中,如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作。这就促使了在每个运维层次中出现了不同的自动化运维工具。 常见的自动化运维工具分类有以下几类:  系统安装运维工具(OS Provisioning):    …

    Linux干货 2015-08-17
  • CentoS 6.8 安装(小白请进)

    先说点题外话,我现在还是一个小白,刚接触‘高大上’的linux不久,随着深入的学习了解,兴趣越来越浓,这个东西很有意思的,不像学windows那样枯燥无味,真的,不信?欢迎加入马哥大家庭。 废话不多说,注意了:前方高能!!! 首先呢,先下载一个VMware Workstation这个虚拟机软件,它的作用很强大,可以使你在一台机器上同时运行一个甚至多个linu…

    2017-02-17
  • 8.网络基础知识

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发展已经比较成熟,二层交换机属数据…

    Linux干货 2017-08-21
  • 文件查找:find命令、locate命令;Linux文件系统上的权限

    文件查找:find、locate locate:依赖事先构建的索引,是在系统空闲周期性自动进行;手动更新(updatedb);极其消耗资源;   find [option]… [查找路径] [查找条件] [处理动作] 查找条件: 根据文件名查找: -name “文件名称”:支持使用通配符glob(*,?,[],[…

    Linux干货 2017-12-14

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-16 16:54

    总结没写,标题不要用日期,