脚本练习

脚本练习:

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

#!/bin/bash
#功能:编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
Zhujixinxi=`hostname`
Ipv4=`ifconfig | sed -n '2p'|sed -r 's@.*addr:(.*) .*B.*@\1@'`
Banben=`cat /etc/redhat-release`
Neihe=`uname -r`
Cpu=`lscpu | sed -n '/^Model name.*/p'|sed -r 's@.*[[:space:]]{3}+(.*$)@\1@'`
Neicun=`free -h |tr -s " "|cut -d " " -f2 | sed -n '2p'`
Yingpan=`fdisk -l |sed -n '2p'| sed -r 's@.* (.*) GB.*@\1@'`
echo 'hostname :' $Zhujixinxi
echo 'IPv4:' $Ipv4
echo 'OS version :' $Banben
echo 'Kernel version :' $Neihe
echo 'CPU :' $Cpu
echo 'memory:' $Neicun
echo "harddisk: $Yingpan"
[root@qzx bin]# vim systeminfo.sh
[root@qzx bin]# ./systeminfo.sh
hostname : qzx.centos6.8
IPv4: 10.1.253.75
OS version : CentOS release 6.8 (Final)
Kernel version : 2.6.32-642.el6.x86_64
CPU : Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz
memory: 1.8G

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

#!/bin/bash
#实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
echo '开始备份/etc。。。。。。。'
cp -a /etc /root/${date +%F}
echo '备份结束'
[root@qzx bin]# bash backup.sh
开始备份/etc。。。。。。。
备份结束
[root@qzx bin]# ls /root/
2016-08-11       Desktop    hehe                Pictures   user.txt

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

#!/bin/bash
#显示当前硬盘分区中空间利用率最大的值
max=`df |tr -s ' ' '%'|cut -d '%' -f5|sort -n |tail -1`
echo "当前硬盘分区中空间利用率最大的值为:$max"
[root@qzx bin]# ./disk.sh 
当前硬盘分区中空间利用率最大的值为:52
#!/bin/bash
#显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
links=`netstat -nt |tr -s ' ' |tail -n +3 | cut -d " " -f5 | sed -r 's@(.*):.*@\1@'|sort |uniq -c`
echo "$links"
[root@qzx bin]# bash link.sh
      2 10.1.250.28

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

#!/bin/bash
#/etc/passwd文件中的第10个用户和第20用户的ID之和
sumid=`sed -n '10p;20p' /etc/passwd|cut -d : -f 3 |tr '\n' '+' | sed -r 's@(.*)\+@\1\n@'| bc`
echo "/etc/passwd文件中的第10个用户和第20用户的ID之和:$sumid"
[root@qzx bin]# bash sumid.sh
/etc/passwd文件中的第10个用户和第20用户的ID之和:80

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

##!/bin/bash
#传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
space1=`grep '^$' $1 | wc -l`
space2=`grep '^$' $2 | wc -l`
let Sumspace=$space1+$space2
echo "两个文件中所有空白行之和: $Sumspace"
[root@qzx bin]# bash  sumspace.sh /etc/rc.d/init.d/functions ../.bash_profile 
两个文件中所有空白行之和: 109

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

#!/bin/bash
#统计/etc, /var, /usr目录中共有多少个一级子目录和文件
etcnum=`ls -A -1 /etc/ |wc -l`
varnum=`ls -A -1 /var/ |wc -l`
usernum=`ls -A -1 /usr/ |wc -l`
let sum=$etcnum+$varnum+$usernum
echo "/etc, /var, /usr目录中共有多少个一级子目录和文件:$sum"
[root@qzx bin]# bash sumfile.sh
/etc, /var, /usr目录中共有多少个一级子目录和文件:299

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

#!/bin/bash
#接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小>于1,则显示第一个参数所指向的文件中的空白行数
[[ $# -lt 1 ]] && echo "至少应该输入一个参数" || (grep '^$' $1 | wc -l)
[root@qzx bin]# bash argsnum.sh /etc/rc.d/init.d/functions 
105
[root@qzx bin]# bash argsnum.sh 
至少应该输入一个参数

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

#!/bin/bash
#接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,
则提示用户“该IP地址不可访问”
ping -w1 -c1 "$1" &>/dev/null
Pingchenggong=`echo $?`
[[ $Pingchenggong -eq  0 ]] && (echo "该IP地址可访问") || (echo "该IP地址不可访问")
 [root@qzx bin]# bash hostping.sh 10.1.253.1
 该IP地址可访问
 [root@qzx bin]# bash hostping.sh 10.1.253.155
 该IP地址不可访问

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

#!/bin/bash
#判断当前用户对/tmp/fiile1文件是否不可读且不可写
(([ ! -r /tmp/flie1 ])  && ([ ! -w /tmp/file1 ])) && (echo "此用户对/tmp/file1文件不可读写" )
 [qzx@qzx bin]$ /tmp/per.sh 
 此用户对/tmp/file1文件不可读写
 [qzx@qzx bin]$ ll /tmp/file1 
 -rw-rw----. 1 root root 5 Aug 12 10:57 /tmp/file1

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

#!/bin/bash
#实现禁止和允许普通用户登录系统。
[ -f /etc/nologin ] && (echo "普通用户已不能登录")|| (touch /etc/nologin)

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

#!/bin/bash
#接受一个主机的IPv4地址做为参数,先判断是否合格IP,否,提示IP格式不合法并退出,是,测试是否可连通。如果能ping通,则提示>用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
echo $1 | egrep -o '([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\>'&>/dev/null
[ $? -ne  0 ] && echo "这是个不合格的IP" && exit 213
ping -w1 -c1 "$1" &>/dev/null &&  (echo "该IP地址可访问") || (echo "该IP无法访问")
 [root@qzx bin]# bash  pinghost.sh 10.1.0.755
 这是个不合格的IP
 [root@qzx bin]# bash  pinghost.sh 10.1.0.255
 该IP无法访问
 [root@qzx bin]# bash  pinghost.sh 10.1.0.2
 该IP无法访问
 [root@qzx bin]# bash  pinghost.sh 10.1.0.1
 该IP地址可访问

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

[root@qzx ~]# seq 1 100 |tr '\n' '+' | egrep -o '.*[^+]' |bc
5050

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

#!/bin/bash
#计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之
[ $2 -gt $1 ] && (seq $1 $2 |tr '\n' '+' | egrep -o '.*[^+]' |bc) || (echo "输入的数字不正确")
 [root@qzx bin]# bash  numA_B.sh  100 1
 输入的数字不正确
 [root@qzx bin]# bash  numA_B.sh 1  100
 5050

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

(1)
qzxqzx
上一篇 2016-08-12
下一篇 2016-08-12

相关推荐

  • linux文件的时间

    1,linux文件有哪些时间属性     access time:atime 访问时间:即查看访问文件的时间     modify time:mtime 修改时间:修改文件内容的时间     change time:ctime 改变时间:修…

    Linux干货 2016-06-09
  • DNS简单配置

    正向解析,反向解析,主从, 主:主配置文件:options {        listen-on port 53 { 127.0.0.1; 172.16.252.194; };  //监听的端口,即哪些主机可以进行访问        directory   &…

    Linux干货 2017-05-24
  • rpm 程序包管理器的基本使用

    目录 安装程序包 卸载 升级 查询 校验 来源合法性和完整性验证 数据库重建 1     安装程序包 rpm -ivh /path/to/package_file -v     显示执行过程的参数。 -h   &nbsp…

    Linux干货 2016-06-22
  • 文件压缩与归档工具

          1、compress/uncompress  .Z 格式                  compress [-d…

    Linux干货 2016-08-22
  • 22期第十三周课堂练习

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)   1)共享名为shared,工作组为magedu;   2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;   3)添加s…

    Linux干货 2017-01-09
  • Linux 第二天: (07月22日) Linux入门

    Linux 第二天: (07月22日) Linux入门       root管理员帐户,超级用户,除非必要,不要用root登录 /dev/console 物理终端/dev/tty 虚拟终端, CentOS 6默认6个虚拟终端/dev/pts 模拟终端tty 查看当前终端设备     GUI 图形用户界面 GN…

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-15 16:52

    作业完成的很好,但是总结没写,这是需要改进的地方