当前位置:首页 > 数码 > 倡导收藏!-Linux主机超级适用的Shell脚本 (收藏宣传)

倡导收藏!-Linux主机超级适用的Shell脚本 (收藏宣传)

admin4个月前 (05-12)数码22

Shell脚本是一种弱小的工具,可以在各种畛域中用于提高上班效率、简化义务和智能化经常出现上班流程。无论是系统治理、数据处置、义务智能化还是极速原型开发,Shell脚本都是一种关键的编程工具。上方分享几个超级适用的Shell脚本。

1.经常使用INOTIFY+RSYNC智能实时同步数据

代码口头:bashinotify_rsyncs.sh

inotify_rsyncs.sh脚本内容如下:

#!/bin/bash#Author:Harry#chkconfig:-8515#description:Itisusedtoserve#监测/data门路下的文件变动,扫除Temp目录INOTIFY_CMD="inotifywt-mrq-emodify,create,move,delete/data/--exclude=Temp"#同步数据RSYNC_CMD1="rsync-avz/data/--exclude-from=/etc/rc.d/init.d/exclude.txtharry@10.14.2.102:/data/--delete"RSYNC_CMD2="rsync-avz/data/--exclude-from=/etc/rc.d/init.d/exclude.txtharry@10.14.2.103:/data/--delete"$INOTIFY_CMD|whilereadDIRECTORYEVENTFILEdoif[$(pgreprsync|wc-l)-le0];then$RSYNC_CMD1&&$RSYNC_CMD2>>rsync.logfidone

2.智能备份以及删除备份脚本

代码口头:bashdb_backup.sh

db_backup.sh脚本内容如下:

#!/bin/bash#Author:Harry#Description:>#!/usr/bin/envbash#Author:Harry#Version:1.1#Description:Webcheckwithcurl#定义色彩red='e[0;31m'RED='e[1;31m'green='e[0;32m'GREEN='e[1;32m'blue='e[0;34m'BLUE='e[1;34m'cyan='e[0;36m'CYAN='e[1;36m'NC='e[0m'date=`date+%Y-%m-%d''%H:%M:%S`#定义UserAgentua="Mozilla/5.0(NT10.0;WOW64)leWebKit/537.36(K,likeGecko)Chrome/62.0.3202.9Safari/537.36"pass_count=0fail_count=0#须要检测的urlurls=("http://www.xxx.com")functionrequest(){status=$(curl-sk-o/dev/null--retry1--connect-timeout1-w'%{http_code}'--user-agent"$ua"$1)if[$status-eq'200'-o$status-eq'301'-o$status-eq'302'];thenecho-e"[${GREEN}Passed${NC}]=>$1"((pass_count++))elseecho-e"[${RED}Failed${NC}]=>$1"((fail_count++))fi}functionmain(){echo"Startchecking..."for((i=0;i<${#urls[*]};i++))dorequest${urls[i]};done#输入检测经过和失败的记载echo-e"========================Summary========================"echo-e"Total:${cyan}$((pass_count+fail_count))${NC}Passed:${green}${pass_count}${NC}Failed:${red}${fail_count}${NC}Time:$date"}main$*

4.检测并封禁意外IP地址的脚本

代码口头:bashban_ip.sh

ban_ip.sh脚本内容如下:

#!/bin/bash#失掉以后日期和期间的格局化字符串DATE=$(date+%d/%b/%Y:%H:%M)#日志文件门路和封禁记载文件门路LOG_FILE="/usr/local//logs/access.log"BANNED_IP_LOG="/usr/local/nginx/logs/banned_ip.log"#失掉意外IP地址,经常使用tail命令读取日志文件的最后10000行,并经常使用grep命令挑选出蕴含以后日期和期间的日志记载ABNORMAL_IP=$(tail-n10000"$LOG_FILE"|grep"$DATE"|awk'{a[$1]++}END{for(iina)if(a[i]>10)printi}')#封禁意外IP地址declare-aIP_LISTforIPin$ABNORMAL_IP;doif!iptables-vnL|grep-q"$IP";theniptables-IINPUT-s"$IP"-jDROPecho"$(date+'%F_%T')$IP">>"$BANNED_IP_LOG"IP_LIST+=("$IP")fidone#打印被封禁的IP地址if[${#IP_LIST[@]}-gt0];thenecho"以下IP地址已被封禁:"printf"%sn""${IP_LIST[@]}"elseecho"没有须要封禁的IP地址。"fi

5.检查网卡实时流量脚本

代码口头:bashinterface_moniter.sheth0

interface_moniter.sh脚本内容如下:

#!/bin/bash#假设没有传递参数,自动经常使用lo作为网络接口NIC=${1:-lo}echo-e"In------Out"whiletrue;do#经常使用awk命令从/proc/dev文件中提取指定网络接口的接纳字节数和发送字节数,并保留到变量OLD_IN和OLD_OUT中OLD_IN=$(awk'$0~"'$NIC'"{print$2}'/proc/net/dev)OLD_OUT=$(awk'$0~"'$NIC'"{print$10}'/proc/net/dev)#期待1秒钟sleep1#再次经常使用awk命令提取最新的接纳字节数和发送字节数,并保留到变量NEW_IN和NEW_OUT中。NEW_IN=$(awk'$0~"'$NIC'"{print$2}'/proc/net/dev)NEW_OUT=$(awk'$0~"'$NIC'"{print$10}'/proc/net/dev)#计算接纳速率和发送速率,单位为KB/s,并保留到变量IN和OUT中IN=$(printf"%.1f%s""$((($NEW_IN-$OLD_IN)/1024))""KB/s")OUT=$(printf"%.1f%s""$((($NEW_OUT-$OLD_OUT)/1024))""KB/s")#经常使用echo命令输入接纳速率和发送速率echo"$IN$OUT"sleep1done

6.访问日志剖析脚本代码口头:bash

log_analyze.shaccess.log

log_analyze.sh脚本内容如下:

Linux主机超级适用的Shell脚本
#!/bin/bash#日志格局:$remote_addr-$remote_user[$time_local]"$request"$status$body_bytes_sent"$http_referer""$http_user_agent""$http_x_forwarded_for"LOG_FILE=$1echo"统计访问最多的10个IP"awk'{a[$1]++}END{print"UV:",length(a);for(vina)printv,a[v]}'$LOG_FILE|sort-k2-nr|head-10echo"----------------------"echo"统计期间段访问最多的IP"awk'$4>="[01/Dec/2018:13:20:25"&&$4<="[27/Nov/2018:16:20:49"{a[$1]++}END{for(vina)printv,a[v]}'$LOG_FILE|sort-k2-nr|head-10echo"----------------------"echo"统计访问最多的10个页面"awk'{a[$7]++}END{print"PV:",length(a);for(vina){if(a[v]>10)printv,a[v]}}'$LOG_FILE|sort-k2-nrecho"----------------------"echo"统计访问页面形态码数量"awk'{a[$7""$9]++}END{for(vina){if(a[v]>5)printv,a[v]}}'$LOG_FILE

linux命令脚本linux命令脚本

linux的shell脚本中的set是什么意思?怎么理解?

set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号+和-的作用分别是打开和关闭指定的模式。

set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。使用:set(选项)(参数)例如:declaremylove=VisualC++#定义新环境变量再使用set命令将新定义的变量输出为环境变量,输入如下命令:

set-amylove标示已修改的变量,以供输出至环境变量。

-b:使被中止的后台程序立刻回报执行状态-C:转向所产生的文件无法覆盖已存在的文件-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。

-e:若指令传回值不等于0,则立即退出shell。

-f:取消使用通配符。

-h:自动记录函数的所在位置。-HShell:可利用!加的方式来执行history中记录的指令。

-k:指令所给的参数都会被视为此指令的环境变量。-l:记录for循环的变量名称。

-m:使用监视模式。-n:只读取指令,而不实际执行。

-p:启动优先顺序模式。

-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。

-t:执行完随后的指令,即退出shell。

-u:当执行时使用到未定义过的变量,则显示错误信息。

-v:显示shell所读取的输入值。

-x:执行指令后,会先显示该指令及所下的参数。

在Linuxshell脚本中,如何实现输入yes执行一段指令,输入no则执行另外一段指令?

您好!可以利用Shell函数实现

#!/bin/bashaction1(){#指令}action2(){#另外一个指令}read-p请输入您的选择:chooseifthenaction1fiifthenaction2fi

sleep命令用法?

linux命令中sleep可以用来将目前动作或指令延迟一段时间,时间的单位有:秒s,分钟m,小时h,天d。

用途说明

sleep命令常用于在Linuxshell脚本中延迟时间。

常用方式

格式:sleep1s

延迟1秒。

格式:sleep1m

延迟1分钟。

格式:sleep1h

延迟1小时。

格式:sleep1d

延迟1天。

Linux Shell脚本系列教程:Shell入门

这篇文章主要介绍了Linux Shell脚本系列教程(一):Shell入门,本文讲解了Shell简介、Shell基本操作、如何打开Shell终端、Shell脚本的概念、如何运行Shell脚本、Shell脚本的注释等基础知识,需要的朋友可以参考下一、Shell简介诸多类Unix操作系统的设计令人惊叹。 即便是在数十年后的今天,Unix式的操作系统架构仍是有史以来最佳的设计之一。 这种架构最重要的一个特性就是命令行界面或者shell。 shell环境使得用户能与操作系统的核心功能进行交互。 术语脚本更多涉及的便是这种环境。 编写脚本通常使用某种基于解释器的编程语言。 shell脚本本质上就是一些文本文件,我们可以将一系列需要执行的命令写入其中,然后通过shell来执行。 在这里我们介绍的是Bash shell(Bourne Again Shell),它是目前大多数GUN/Linux系统默认的shell环境。 书中所有的实验都是在Ubuntu14.04 LTS环境下完成的。 二、基本操作1.打开终端在ubuntu14.04 LTS系统中,已经默认安装了一个Terminal,我们可以通过多种方法打开终端。 这里介绍两种:方法一:通过系统自带的检索系统,我们可以轻松找到终端(Terminal),单击即可打开。 检索系统可以通过快速启动栏右上角的按钮启动。 方法二:为了之后可以方便的打开终端,建议将终端固定在快速启动栏。 操作方法为:通过方法一打开终端后,快速启动栏会出现一个终端的图表,在图表上单击鼠标右键,选择“固定在启动栏”即可将终端固定在快速启动栏。 2.终端初始化界面默认情况下,终端提示符为:username@hostname或者root@hostname#。 代表普通用户,#代表root用户。 例如:我在打开终端后,提示符为:wxb@ubuntu:~$。 root是linux系统中权限最高的用户,能力大风险也大,因此不介意使用root用户作为登陆系统的默认用户。 3.切换用户通常情况下,对于个人版linux操作系统,系统上会存在两个用户,即用户自己以及root用户。 对于使用者来说,时有需要切换用户,以执行一些普通用户不能执行的操作,此处提供两种方法切换用户。 方法一:临时切换。 顾名思义,这种切换方法仅仅是临时的,当指令执行完成后,就会切换到原来的用户。 切换指令为:sudo command, sudo 是super user do 的简写。 方法二:长久切换。 顾名思义,使用这种方法切换后,指令执行完成后不会返回普通用户。 切换指令为:su,su是switch user的简写,之后会提示输入密码等完成用户切换。 脚本下面这段脚本用于想终端打印 Hello world! 字符串。 代码如下:#!/bin/bashecho Hello World!shell脚本的起始行通常是 #!/bin/bash,其中/bin/bash是解释器的路径,用于解释执行后续命令。 各命令之间以 换行符 或者 分号 间隔。 5.运行脚本在Ubuntu中,有多中方式可以运行脚本。 方法一: bash ,在这种情况下,脚本文件的首行可以不必是”#!/bin/bash”,因为在这种方法下已经指定了解释器。 方法二: 首先修改脚本文件的权限 chmod a+x ,这条指令主要是赋予脚本文件可执行权限。 然后执行文件 ./即可;或者也可以通过完整路径来执行脚本。 6.脚本注释在shell脚本中也不例外,我们需要在某些位置提供注释行,似的代码易于理解。 #后面的内容为注释内容,不会被解释执行。 注意:#是单行注释符。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Linux

“倡导收藏!-Linux主机超级适用的Shell脚本 (收藏宣传)” 的相关文章

Linux-中创建文件的八种方法 (linux系统)

Linux-中创建文件的八种方法 (linux系统)

在 Linux 系统中,一切皆文件,高效创建文件的技能至关重要,可以节省大量工作时间。 方法 1:重定向符号 (>) 重定向符号用于创建一个 0KB 的空文件,或重定向命令的输出...

系统中内存管理和优化指南-有效处理内存问题-Linux (系统内存管理)

系统中内存管理和优化指南-有效处理内存问题-Linux (系统内存管理)

本文将详细介绍内存管理和优化的几个高级技巧,帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。 1. 页面置换策略 Linux 使用页面置换算法...

在Linux系统中每隔1小时智能运转指定命令 (在linux系统中,以什么访问设备)

在Linux系统中每隔1小时智能运转指定命令 (在linux系统中,以什么访问设备)

在系统中,通常状况下经常使用crontab命令来设置定时义务,本文以每隔1个小时运转一条指令为例子,和大家一同探讨crontab的用法。 详细的操作步骤: 0*/1***/path/com...

Linux日常使用最常见的指令 (linux日志命令)

Linux日常使用最常见的指令 (linux日志命令)

历史 Linux 系统创建于 1991 年,由芬兰大学生 Linus Torvalds 开发。它是一个开源操作系统,这意味着它的源代码可以免费使用和修改。由于其高度的可定制性和免费性,Lin...

嵌入式Linux系统开发 (嵌入式linux)

嵌入式Linux系统开发 (嵌入式linux)

什么是嵌入式系统 嵌入式系统是一种以微处理器为核心的、专门针对某一特定应用设计的计算机系统。它具有体积小、功耗低、成本低、稳定性高、抗干扰能力强等特点。 嵌入式系统操作 嵌入式系...

如何管理数据存储-深入剖析Linux中的磁盘和文件系统 (如何管理数据库团队)

如何管理数据存储-深入剖析Linux中的磁盘和文件系统 (如何管理数据库团队)

简介 在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展性。本文将深...

Linux子系统概览

Linux子系统概览

Linux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。 内核子系统...

新特性和改进-Linux-6.9 (新特性和改进的区别)

新特性和改进-Linux-6.9 (新特性和改进的区别)

Linus Torvalds has announced the release of Linux 6.9-rc1, the first Release Candidate (RC) for th...