shell 脚本基础作业

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

#!/bin/bash

:<<EOF

显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

EOF

Host_name=`hostname`

Ip_address=`ifconfig | grep -o '\([[:digit:]]\+\.\)\{3\}[[:digit:]]\+'|sed -n '1p'`

Systeminfo=`cat /etc/redhat-release`

Coreinfo=`uname -r`

Cpuinfo=`lscpu|sed -n '13p' | tr -s ' ' | cut -d: -f2`

Meminfo=`lscpu|sed -n '13p' | tr -s ' ' | cut -d: -f2`

Hdisk=`fdisk -l /dev/sda |sed -n '2p'|tr -d ' '|cut -d , -f1`

echo "主机名:$Host_name"

echo -e "\n操作系统信息: $Systeminfo"

echo -e "\ncpu信息: $Cpuinfo"

echo -e "\n内核信息: $Coreinfo"

echo -e "\n内存信息: $Meminfo"

echo -e "\n本机IP地址: $Ip_address"

echo -e "\n硬盘信息: $Hdisk"

1.jpg

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

cp -a  /etc/.  /root/etc`date/ +%F` && ( echo"backup finished" ; ls -l | grep 'etc[[:digit:]]\+' )

||  echo "backup error"

2.jpg

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

#!/bin/bash

:<<EOF

显示当前硬盘分区中空间利用率最大的值

EOF

echo "please input the device you want to check:"

read Chk_device

echo -e "\n`df | grep "$Chk_device" | tr -s ' ' | cut -d' ' -f1,5`\n"

3.jpg

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

#!/bin/bash

:<<EOF

显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

EOF

netstat -nt | tr -s ' ' | cut -d' ' -f5 | tr -cs '0-9.' '\n' |  grep '\([0-9]\+\.\)\{3\}[0-9]\+' | sort | uniq -c | sort -nr | tr -s ' ' '\t'

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

#!/bin/bash

#计算第N行的用户的ID的总和

declare -i id=0

for line in {10,20};do

id2=`sed -n "${line}p" /etc/passwd | cut -d: -f3`

id=$[$id+$id2]

done

echo "the sum is $id"

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

#!/bin/bash

#统计目录中共有多少个一级子目录和文件

sum1=`ls -a $1 |wc -l`

echo "the sum1 of $1 is $sum1"

sum2=`ls -a $2 |wc -l`

echo "the sum2 of $2 is $sum2"

sum3=`ls -a $3 |wc -l`

echo "the sum3 of $3 is $sum3"

6.jpg

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

#!/bin/bash

:<<\EOF

写一个脚本/root/bin/argsnum.sh,接受一个文件路径作

为参数;如果参数个数小于1,则提示用户“至少应该给一个

参数”,并立即退出;如果参数个数不小于1,则显示第一个

参数所指向的文件中的空白行数

EOF

[ $# -eq 0 ]&& (echo "至少应该给一个参数"; exit 2)

linenum1=`grep '^$' $1 | wc -l`

echo "the linenum of the first parameter is $linenum1"

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

#!/bin/bash

:<<\EOF

写一个脚本/root/bin/hostping.sh,接受一个主机的

IPv4地址做为参数,测试是否可连通。如果能ping通,则提

示用户“该IP地址可访问”;如果不可ping通,则提示用户“

该IP地址不可访问

EOF

ping -c1 -w1 $1 &> /dev/null && (echo"该IP地址可以访问";exit 0) || echo " 该IP地址不可以访问"

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

#!/bin/bash

:<<\EOF

chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判

断当前用户对/tmp/fiile1文件 是否不可读且不可写

EOF

[ ! -r /tmp/test/file1 -a !-w /tmp/test/file1 ] &&  echo" no -r no -w" || echo "has -r or -w"

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

#!/bin/bash

#禁止和充许普通用户登录系统。

echo "please input "nologin" or "login" to limit the users to login "

read Login_model

[ "$Login_model" == "nologin" ] && (touch /etc/nologin &>/dev/null ;echo "limit users

to login")

[ "$Login_model" == "login" ] && ( rm -rf /etc/nologin &>/dev/null ;echo "allow users to

login")

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

#!/bin/bash

:<<\EOF

写一个脚本/root/bin/hostping.sh,接受一个主机的

IPv4地址做为参数,测试是否可连通。如果能ping通,则提

示用户“该IP地址可访问”;如果不可ping通,则提示用户“

该IP地址不可访问

EOF

echo "please input IP address you want to ping:"

read Ping_address

[[ "$ipaddress" =~ "[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+" ]]

ping -c1 -w1 $1 &> /dev/null && (echo"该IP地址可以访问";exit 0) || echo " 该IP地址不可以访问"

  

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

declare -i sum=0

for i in {1,100};do

sum=$[$i+$sum]

echo "sum=$sum"

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

#!/bin/bash

#

declare -i sum=0

[ $1 -lt $2 ] && (sum=$[$1+$2];echo "sum=$sum") || echo "error";exit

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

(1)
ldt195175108ldt195175108
上一篇 2016-08-15 12:10
下一篇 2016-08-15 12:10

相关推荐

  • 简单救援模式应用

                                  …

    2017-08-12
  • heartbeat2+crm+hb_gui接口,配置高可用httpd,mysql,lvs-director

    heartbeat2使用crm借助gui界面配置httpd服务     1. 服务大体资源构架:          1) 两台httpd服务,外加一台nfs共享存储服务。     &nbsp…

    Linux干货 2016-01-13
  • Linux发展史

    一、从 Unix 到 Linux 这一段历史         早在 Linux 出现之前的二十年 ( 大约在 1970 年代 , 就有一个相当稳定而成熟的操作系统存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的,Linux 的核心是由 …

    Linux干货 2016-10-14
  • Http协议中的各种长度限制总结

    HTTP1.0的格式 request(HTTP请求消息)结构:一个请求行.部分消息头,以及实体内容,其中的一些消息内容都是可选择的.消息头和实体内容之间要用空行分开. GET /index.html HTTP/1.1 //请求头,下面都是消息头.Accept: */*Accept-Languang:en-usConnection:keep-aliveHost…

    Linux干货 2015-04-04
  • N21天天第十周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) CentOS主机按以下顺序启动 1、POST加电自检 2、BIOS读取CMOS中的BIOS设置的参数来识别基础硬件,寻找到启动设备 3、MBR 1)读取启动设备MBR中前446字节的bootloader 2)读取MBR后的扇区用来识别grub以及内核kernel所在的区域 3)启动g…

    Linux干货 2016-09-26
  • shell脚本基础

    编程基础 v程序:指令+数据 v程序编程风格: 过程式:以指令为中心,数据服务于指令(适合小型程序) 对象式:以数据为中心,指令服务于数据(适合大型程序) vshell程序:提供了编程能力,解释执行 程序的执行方式 v计算机:运行二进制指令; v编程语言: 低级:汇编 高级: 编译:高级语言–>编译器–>目标代码 java…

    Linux干货 2016-08-15