shell脚本基础日常练习
1、编写一个脚本,名为/root/bin/createscripts.sh ,当执行该脚本时,输入 createscripts.sh /path/newsh.sh 则会在指定路径生成脚本文件,并涵盖注释信息如下:
#!/bin/bash
# ------------------------------------------
# Filename: hello.sh
# Revision: 1.0
# Date: 2020/01/01
# Author: ty
# Email: ty@gmail.com
# Website: www.ty.com
# Description:
# ------------------------------------------
# Copyright: 2020ty
# License: GPL
并自动打开该 文件,开始编辑,在编辑结束后,自动给该脚本加上执行权限。
方法一:
#!/bin/bash
#
A=`basename $1 |grep -o "\.sh$"`
#echo $A
if [ -n "$A" ];thenecho -e "#!/bin/bash \n#" >> $1echo "#---------------------------------------" >> $1echo "# Filename: `basename $1`" >> $1echo "# Revision: 1.0" >> $1echo "# Date: `date +"%F %T"`">> $1echo "# Author: `id -nu`" >> $1echo "# Email: sezina_f@163.com" >> $1echo "# Description:" >> $1echo "#---------------------------------------" >> $1echo "# Copyright: 2020 tzx" >> $1echo "# License: GPL" >> $1echo >> $1vim +13 $1chmod +x $1elseecho "Usage: Please end file with .sh."
方法二:
#!/bin/bash
touch /app/root/bin$1
chmod +x /app/root/bin$1
echo "#!/bin/bash
# ---------------------------------------
# Filename: $1
# Revision: 1.0
# Date: $(date +%F)
# Author: $(whoami)
# Email: ty@163.com
# Website: www.100.com
# Description:
# ---------------------------------------
# Copyright:
#License:
" >$1
vim $1
chmod +x $1
2、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
当前主机系统信息如下:
主机名: hostname
IPV4地址: ifconfig
操作系统版本: cat /etc/redhat-release
内核版本: uname -r
CPU型号:lscpu
内存型号: free -m 格式为:xxxx MB
硬盘大小: fdisk -l /dev/sda 格式为:xxx GB
#!/bin/bash# -------------------------------------------------echo "当前主机系统如下:"echo "主机名: $(hostname)"echo "IPV4地址: " "$(ifconfig|grep "inet "|grep -o "\([0-9]\{1,3\}\.\)\{3\}[1-9]\{1,3\}")"echo "操作系统版本:" "$(cat /etc/redhat-release)"echo "内核版本:" "$(uname -r)"echo "CPU型号:" "$(lscpu|grep -i "model name")"echo "内存大小" $(free -hm|head -2|tr -s " " |tail -1|cut -d" " -f2)echo "磁盘容量" $(fdisk -l /dev/sda|head -2|tail -1|cut -d " " -f3,4)
3、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
cp -a /etc/ /root/etc`date +%Y-%m-%d`
4、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
echo "当前硬盘分区中空间利用率最大的值:$( df |grep -o "[0-9]\{1,3\}%" |sort -rn |head -1)"
5、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
cat /var/log/httpd/access_log |cut -d" " -f1|sort -r
6、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和.
id1=$(cat /etc/passwd |cut -d: -f3 |head -$1 | tail -1)
id2=$(cat /etc/passwd |cut -d: -f3 |head -$2 | tail -1)
echo "$[$id1+$id2]"
7、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
space1=`cat $1 |grep "^[[:space:]]*$"|wc -l`
space2=`cat $2 |grep "^[[:space:]]*$"|wc -l`
echo $space1+$space2 |bc
8、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件
etc=$[$(ls -l /etc/ |wc -l)-1]
var=$[$(ls -l /var/ |wc -l)-1]
usr=$[$(ls -l /usr/ |wc -l)-1]
echo $[$etc+$var+$usr]
9、编写脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
#!/bin/bash
[ $# -eq 0 ] && echo "请输入一个合法的IPV4地址" && exit 1
ping -c1 -W1 $1 &> /dev/null && echo "该IP地址可访问" || echo "该IP地址不可访问"
10、对以上对该脚本进行升级,可以判断ip地址的合法型,如果不合法,直接提示用户"IP地址不合法"并退出
a1=`echo $1|cut -d. -f1`
a2=`echo $1|cut -d. -f2`
a3=`echo $1|cut -d. -f3`
a4=`echo $1|cut -d. -f4`
[ $a1 -le 255 ] && [ $a2 -le 255 ] && [ $a3 -le 255 ] && [ $a4 -le 255 ] || echo "IP地址不合法" && exi
t 1
ping -c1 -W1 $1 &> /dev/null && echo "该IP可访问" || echo "该IP不可访问"
11、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
usagea=$(df |grep "^/.*sd" |egrep -o "[0-9]{1,3}%" |tr -d % |sort -n |tail -1)
usageb=$(df -i |grep "^/.*sd" |egrep -o "[0-9]{1,3}%" |tr -d % |sort -n |tail -1)
[ $usagea -ge 80 -o $usageb -ge 80 ] && wall warning || echo health
12、编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写
#!/bin/bash
#判断用户对指定的文件是否不可读写
[ ! -r $1 -a ! -w $1 ] && echo "该文件不可读写"
13、编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
#!/bin/bash
#判断用户对指定的文件是否不可读写[ ! -e $1 ] && echo 文件不存在 && exit 0
[ -f $1 -a $1{.sh$} ] && chmod o+x $1 ||echo "非脚本文件"
14、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
uid=`cat /etc/passwd|cut -d: -f3`user=`egrep "^[[:alnum:]]+:x:[0-9]{4,5}.*bash$" /etc/passwd|cut -d: -f1`version=`cat /etc/redhat-release |cut -d" " -f4|cut -d"." -f1`[ $version -eq 6 ] && [ $uid -ge 500 ] &&
[ $version -eq 7 ] && [ $uid -ge 1000 ] &&
15、让所有用户的PATH环境变量的值多出一个路径,例如:/usr/local/apache/bin
export PATH=$PATH:/usr/local/apache/bin
注意全局配置路径:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
或
vim /etc/profile.d/env.sh
export PATH=/usr/local/apache/bin:$PATH
source /etc/profile.d/env.sh
16、任意用户登录系统时,显示红色字体的警示提醒信息“Hi,dangerous!”
vim /etc/profile.d/env.sh
echo -e '\033[31m hi,dangerous! \033[0m'
17、编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等
vim /root/bin/reset.sh#!/bin/bash# reset.shcat > /etc/profile.d/env.sh << EOFalias cdnet="cd /etc/sysconfig/network-scripts"alias editnet="vim /etc/sysconfig/network-scripts/ifcfg-ens33"export PATH=/app/bin:$PATHEOFcat > ~/.vimrc << EOFset nuEOF
先到这....
shell脚本基础日常练习相关推荐
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- SHELL脚本 基础一
SHELL脚本基础 基本都是干货,都是通过书和视频总结的一小部分,里面应该有一些错误: SHELL变量 1.变量:临时储存数据的,该数据是可以进行变化的数据 2.变量的使用:1.多次重复使用的数据,并 ...
- Shell 脚本基础学习 (四)
现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本基础学习详细介绍(完整版)2
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- linux脚本变量运算符,linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)...
Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽 ...
- shell脚本基础 (一)
shell脚本基础 (一) 如何编写shell脚本: shell脚本存放的路径举例:vi /root/first.sh 1.理清任务: 2.申明shell环境: 3.注释: 4.写粗糙的脚本: 5.完 ...
- 详细介绍Linux shell脚本基础学习(一)
2019独角兽企业重金招聘Python工程师标准>>> Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础 ...
最新文章
- 模态框获取id一直不变,都是同一个id值
- 用html编写ASCII表,[html_css]ASCII编码表
- CString类的用法总结
- Spring泛型依赖注入
- NumPy 生成全0矩阵,全1矩阵,随机矩阵,求平均数,求方差的方法
- hotspot 垃圾收集器_HotSpot增量Java垃圾收集器
- 吃了一辈子大米,你还在相信水稻种水里是因为喜欢水?
- caffe,deeplab,对Interp(差值)层的理解
- Missing artifact com.sun tools.jar 1.5.0 system 解决方法
- 6. 添加权限管理模块
- word 文档 一次性设置多张图片大小
- python读取第一行设为字典_将csv读入字典,第一行成为名称
- CF1190E Tokitsukaze and Explosion 二分、贪心、倍增、ST表
- 生成验证码 大写、小写字母,数字 java
- 【DeepSORT系列之】Cosine Metric Learning训练与demo可视化
- 米哈游108薪年终奖,假的
- 扫雷• 规则: (1)随机产生 8*8 的雷分布图;• (2)用户“y”表示游戏,“q”退出游戏;• (3)让用户输入行列号,用键盘“m”标雷,“k”打开;• (4)打开区域为雷或者全部区
- Postgresql源码(60)事务系统总结
- 微信小程序: 计时功能
- 【ChatGPT案例】10大ChatGPT谷歌插件神器