脚本基础课后练习

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

#!/bin/bash

echo “MY hostname is `hostname`”
echo “My IPv4 address is `ifconfig | egrep -w “inet” | head -n1 | tr -s ” ” “:” | cut -d: -f4` ”
echo “My Kernel is `cat /etc/redhat-release` ”
echo “My CPU is `lscpu | egrep “Model name” | tr -s ‘ ‘ | cut -d: -f2`”
echo “My Mem is `free | egrep “Mem” | tr -s ” ” “:” | cut -d: -f2`”
echo “My Disk is `lsblk | egrep “^sda” | tr -s ” ” | cut -d” ” -f4`”

(2)编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
答:
#!/bin/bash
#
echo “copy start…”
sleep 5
cp -a /etc/ /data/etc`date +%F`
echo “copy finished”

(3)编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
答:
#!/bin/bash
#
df | egrep “^/dev/sd” | tr -s ” ” “%” | cut -d% -f5 | sort -nr | head -n1

(4)编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
答:
#!/bin/bash
#
sort access_log | cut -d” ” -f1 | uniq -c | sort -nr
或者:
sort access_log | egrep -o “^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\>” | uniq -c | sort -nr

(5)编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第 20用户的ID之和
答:
#!/bin/bash
#
uid10=”`cat /etc/passwd | head | tail -n1 | cut -d: -f3`”
uid20=”`cat /etc/passwd | head -n20 | tail -n1 | cut -d: -f3`”
usum=”$[ uid10 + uid20 ]”
echo $usum

(6)编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
答:
#!/bin/bash
#
space1=”`cat $1 | egrep “^[[:space:]]*$” | wc -l`”
space2=”`cat $2 | egrep “^[[:space:]]*$” | wc -l`”
spacesum=”$[ space1 + space2 ]”
echo $spacesum

(7)编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级 子目录和文件
答:
#!/bin/bash
#
file1=”`ls $1 | wc -l`”
file2=”`ls $2 | wc -l`”
file3=”`ls $3 | wc -l`”
sumfile=”$[ file1 + file2 + file3 ]”
echo $sumfile

(8)编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数 不小于1,则显示第一个参数所指向的文件中的空白行数
答:
#!/bin/bash
#
[ “$#” -lt 1 ] \
&& { echo “please input a path”; exit; } \
|| { space=”`cat $1 | grep -c “^[[:space:]]*$”`”; echo “The file space lines are $space”; }

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

ping -c1 $1 &>/dev/null && echo “host up” || echo “time out”

(10)编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
答:
#!/bin/bash
#
disk=”`df | egrep “^/dev/sda” | tr -s ” ” % | cut -d% -f5 | sort -nr | head -n1`”
inode=”`df -i | egrep “^/dev/sda” | tr -s ” ” % | cut -d% -f5 | sort -nr | head -n1`”
[ “$disk” -ge 80 ] && echo “warning!!!The disk will be full”
[ “$inode” -ge 4 ] && echo “warning!!!The inode will be full”

(11)编写脚本/bin/per.sh,判断当前用户对指定参数文件,是否不可读并且不可写
答:
#!/bin/bash
#
[ “$#” -lt 1 ] && { echo “please input a argument”;exit; }
[[ -r $1 ]] && [[ -w $1 ]] && echo “yes” || echo “no”

(12)编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
答:
#!/bin/bash
#
[[ -f $1 ]] && [[ “$1” == *.sh ]] && chmod a+x “$1” || echo “no .sh file”

(13)编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
答:
①For nologin:
#!/bin/bash
#
[[ -e /etc/nologin ]] && echo “no login” || { touch /etc/nologin ; echo “no login”; }
②For login:
#!/bin/bash
#
[[ -e /etc/nologin ]] && { rm -f /etc/nologin ; echo “access login”; } || echo “access login”

(14)让所有用户的PATH环境变量的值多出一个路径,例如: /usr/local/apache/bin
答:①vim /etc/profile ②找到export PATH USER在下面一行输入export PATH=$PATH:/usr/local/apache/bin ③. /etc/profile 使其生效。

(15)用户root登录时,将命令指示符变成红色,并自动启用如下别名: rm=‘rm –i’ cdnet=‘cd /etc/sysconfig/network-scripts/’ editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’ editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或 ifcfg-ens33 ’ (如果系 统是CentOS7)
答:①vim ~/.bashrc ②alias cdnet=’cd /etc/sysconfig/network-scripts/’
alias editnet=’vim /etc/sysconfig/network-scripts/ifcfg-eth0′
alias editnet=’vim /etc/sysconfig/network-scripts/ifcfg-eno16777736′
alias rm=’rm -i’

(16)任意用户登录系统时,显示红色字体的警示提醒信息“Hi,dangerous!”
答:在[root@Centos6 profile.d]#下建立脚本vim dangerous.sh
#!/bin/bash
#
echo -e “\033[31m ###################################################\033[0m”
echo -e ” \033[31m hi,dangerous!!!\033[0m”
echo -e “\033[31m ###################################################\033[0m”

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95850

(0)
烟花儿烟花儿
上一篇 2018-04-13 17:32
下一篇 2018-04-13

相关推荐

  • 第五周总结

    软RAID   mdadm:为软RAID提供管理界面   为空余磁盘添加冗余   结合内核中的md(multi devices)   RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等 如果硬盘只分出了一个分区,可以用 dd if=/dev/sdb of=/dev/sdc bs=1 count=66 skip=446…

    Linux笔记 2018-05-01
  • 09葵花宝典Openssl和DNS

    openssl cd bind named

    Linux笔记 2018-05-16
  • centOS6.9 防火墙的关闭以及开启

    有的时候,我们需要对系统的防火墙进行操作,今天小编就给大家讲解一下如何开启以及关闭CentOS6.9系统下的防火墙。 输入:cat /etc/issue 查看版本 (一)通过service命令 service命令开启以及关闭防火墙为即时生效,下次重启机器的时候会自动复原。 查看防火墙状态:service iptables status ,记得在CentOS6…

    Linux笔记 2018-04-20
  • MYSQL软件安装

    二进制包安装,yum源多实例安装

    Linux笔记 2018-06-10
  • Linux 用户及权限管理(未完)

    1、查看(登录)用户名称及所启动的进程 A、使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事。该命令所使用的信息来源于/var/run/utmp文件。w命令输出的信息包括: 用户名称 用户的机器名称或tty号 远程主机地址 用户登录系统的时间 空闲时间(作用不大) 附加到tty(终端)的进程所用的时间(JC…

    Linux笔记 2018-05-28