shell
文章平均质量分 78
常用实战类型shell脚本
晚风_END
擅长自动化运维,擅长编写各类shell脚本,Python脚本,高级运维工程师,Python全栈工程师。
展开
-
Linux技巧|centos7|重新认识和学习egrep和grep命令
相信提高文本检索工具,大家脑海里肯定有很多工具会自动跳出来,比如,grep,egrep,sed,cat,more,less,cut,awk,vim,vi,nano,strings等等工具(vim,nano 这样的文本编辑工具也是兼具文本检索功能的嘛,要是不能检索就没有存在的必要了~~~~~)那么,这些文本信息检索工具里如果按照使用频率来说,第一个毫无疑问是文本编辑工具vim了,其次就是文本检索工具cat和grep了,在次就是sed和awk这样的流检索工具了,而egrep可能使用频率上就比较低了,但,其实原创 2024-03-01 23:52:30 · 1034 阅读 · 0 评论 -
linux|shell编程|shell脚本内的加减乘除运算实现和π值的计算示例
shell脚本内的加减乘除是由于在编写kubernetes巡检脚本的时候,某些部分需要做一点简单的运算,突然发现我其实对这些不太熟悉。因此,查阅了一些资料,现在就加减乘除运算在shell脚本内如何应用做一个简单的总结,写的不对的地方请各位轻点喷原创 2023-07-19 18:40:33 · 3759 阅读 · 0 评论 -
linux|shell编程|shell脚本的一些高级技巧(shell脚本内的括号,中括号,花括号,逻辑判断,脚本优雅退出等等)
shell脚本说容易其实也是容易的,说难,那真的是可以难到让人挠头的地步,因为逻辑判断,自定义变量,环境变量,系统内置函数,脚本结构设计这些糅合到一起后,脚本可能会变的非常复杂了。原创 2023-07-13 18:28:53 · 449 阅读 · 0 评论 -
Linux|shell编程|拷贝大文件之显示进度条
Linux由于自身并不是一个图形化的界面,因此,命令行是它的一个基础交互模式,而我们有的时候需要进度条来让程序运行的更加美观,更加直观,例如,一些比较消耗io的操作,文件拷贝,比如某个文件十几G甚至上百G,需要拷贝到本机的其它分区,那么,一个直观的进度条就十分有用了,可以让我们大致估算出多少时间拷贝完成,从而进行下一步的工作。那么,本文将以一个10G的文件拷贝为例,输出一个按实际拷贝进度来显示的进度条。原创 2023-05-27 19:07:42 · 2673 阅读 · 0 评论 -
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
shell脚本的功能十分强大,这一点毋庸置疑的。那么,平常的工作中总是免不了和脚本打交道,也免不了要自己编写一些脚本。每个人都希望自己编写的脚本强壮,简单,易用,功能多,并且总是希望脚本运行后不是一片黑白,色彩单调,无趣,而是有着整齐的,让人赏心悦目的输出日志。OK,希望总是美好的嘛,但,如何实现也是有一定的技巧的,并不是你想实现就实现的哦。那么,如何能够快速的提高shell编程的能力呢?俗话说:师夷长技以制夷 这句话用在shell脚本编程方面同样的正确。在遇到一些shell脚本的时候,原创 2022-12-09 12:40:09 · 1253 阅读 · 0 评论 -
云原生|kubernetes|kubernetes的etcd集群备份策略
【代码】云原生|kubernetes|kubernetes的etcd集群备份策略。原创 2022-09-28 00:12:17 · 1388 阅读 · 0 评论 -
linux实用脚本---多线程ping多网段IP
目录前言一、linux shell下的多线程脚本编写思路二、实验步骤1.生成需要扫描的实验性质的IP段(这里使用的是百度的网段)2.主体脚本总结前言脚本多线程能够快速的实现某些简单的任务,例如,多批次的拷贝文件,多IP的扫描,多文件的解压等等需要for循环的任务。(如果不使用多线程,那么,循环将可能非常的慢,因为,linux默认是线程阻塞的嘛)一、linux shell下的多线程脚本编写思路利用自定义的命名管道符自定义线程...原创 2022-05-30 20:58:19 · 2134 阅读 · 0 评论 -
Linux通用版本查询当前使用IP脚本
前言:在自动化运维工作中,常常需要编写自动化安装脚本,而脚本的通用性是一个重要的指标,通用性指的是脚本在同类型的平台下都可以正常的运行,而不会对原有的操作系统造成任何伤害。那么,由于硬件的不同,在Linux平台下很多网卡的名称是不一样的,比如,有的网卡名称在Linux平台下是ens33,有的会是eth0,每个网卡如果需要提供对外服务,那么,需要给网卡绑定一个IP,有的服务器会有多个网卡,但可能只会使用一个网卡,或者双网卡,对外提供服务。比如,在局域网内,绑定的IP通常是C级ip 192.168.网段原创 2022-04-21 22:16:57 · 2875 阅读 · 0 评论 -
vim的宏录制和应用实例(文本编辑飞一般的感觉)
vim的宏的定义:宏就是一些命令组织在一起,作为一个单独命令完成一个特定任务。Microsoft Word中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列word命令,它能使日常工作变得更容易”。那么,在Linux的vim下,套用Word中对宏的定义,vim中的宏就是:“宏就是能组织到一起作为一独立的命令使用的一系列vim命令(其实也包括键盘操作),它能使日常工作变得更容易”那么,OK了,宏可以说是一个录像机和放映机的集合,也就是录制一段自定义的文本编辑动作后,在原样的把这些动作重复出原创 2022-01-03 23:51:43 · 844 阅读 · 7 评论 -
Linux的shell脚本编写技巧和crontab计划任务的结合(沙漠一样干的干货)
Shell脚本的重要性我想应该不需要我在重复了,本文的目的是向读者介绍Shell编程的一些固定套路,当然,也可以称之为技巧,而crontab计划任务又和Shell脚本密切相关(一般简单任务当然是写一条命令啦,如果比较复杂的场景还是脚本比较合事宜,并且,脚本更为灵活,拓展性更强啦)。一,脚本的结构就是第一个行,#!被称为shebang符号,用来声明所使用的解释器,一旦执行某个脚本,CPU看到第一行,就会去执行该解释器,再由解释器去找对应的命令程序(这个要圈起来,要考~~)比如,bash解释器/bin/原创 2021-08-31 01:21:34 · 646 阅读 · 1 评论 -
重新编写MySQL-5.7.19版本自动编译脚本
重新编写MySQL-5.7.19版本自动编译脚本以往写过一个自动编译安装MySQL-5.7.19的脚本,总觉得不太满意,因此想把这个脚本重新优化一下,逻辑更清晰,更容易使用。一,该脚本使用的唯二先决条件不管是虚拟机使用,还是真实物理机使用,请先将系统安装ISO文件挂载为本地仓库,示例如下:[root@master local]# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (Core)[root@master local].原创 2021-07-03 15:53:27 · 471 阅读 · 1 评论 -
关于es(elasticsearch)的启动脚本编写思路附带一个实例
关于elasticsearch的启动脚本编写思路(es的管理规范)elasticsearch是干什么的不用我多说了,一般安装是二进制安装方式,具体的安装不在本文讨论范围,主要是安装后的服务优化之一的开机启动脚本的编写思路。首先,我们需要明白,es出于安全考虑会禁止使用root账号操作,当然指的主要是启动操作,一般默认,按照惯例是使用普通账号es,该账号需要自己手工新建。而我们平常的运维操作并不是在es账号下面进行,这就使得我们启停服...原创 2021-05-27 20:09:52 · 1453 阅读 · 2 评论 -
在centos7下的mongodb4.2.13的二进制安装教程
mongodb4.2.13的二进制安装教程首先需要说明的是,为什么选择的是mongod的二进制安装方式。MongoDB的源码安装用了很多第三方的东西,比如JS引擎、正则表达式引擎(pcre)、安装构建工具scons(这东西还要用python来安装)、boostC++库等,比起别的软件,编译安装难度大大增强,其实,mongod作为一个灵活的NOSQL的非关系型数据库,源码编译安装以及安装后的维护是没...原创 2021-04-26 15:59:42 · 734 阅读 · 0 评论 -
Python 根据文件的前几位字母或者文件的后缀名称精确查找文件(windows和Linux系统通用)第二版
Python 根据文件的前几位字母或者文件的后缀精确查找文件(windows和Linux系统通用)第二版本程序设计思路为:根据某个文件的前面几位字母或者汉字查找符合该条件的文件并打印所有符合该规则的全部文件全路径,根据某类文件的后缀查找符合该类的所有文件,比如,某个路径下的所有txt文件,某个路径下的所有conf后缀的文件, 并将符合规则的这一类文件包括全路径打印出来。(支持window系统和Linux系统平...原创 2021-04-18 21:50:38 · 1757 阅读 · 2 评论 -
关于ssh免密登陆脚本实现的一些想法
关于ssh免密登陆脚本实现的一些想法通常ssh免密应用在集群机器的管理方面,免密的目的是为了运维的方便,但不是说就没有安全可言。虽然,免密的时候执行ssh-keygen 的时候,没有并且也不应该输入密码,但通过密钥分发的操作后,只有具有密钥公钥的机器才可以免密登陆,也就是说这一把钥匙还是在你自己的手中,因此,安全性还是无需担心的。那么,我们可以仔细的观察一下公钥的生成过程,来看一看到底有什么奥秘在其...原创 2021-04-16 23:49:18 · 1049 阅读 · 2 评论 -
Linux shell脚本内的set -x set +x set -e set -u set -n的应用
Linux shell脚本内的set -x set +x set -e set -u set -n的应用set命令可以定义脚本的运行方式,变量的获取方式,脚本的执行过程,脚本的测试。1,set -u (检查脚本内的变量,如果有变量未被定义将终止脚本)(脚本的自检测功能)#!/bin/bashset -uecho $A这是一个极为简单的shell脚本,功能为输出变量abc的值,但可以看到在脚本内并没有给定变...原创 2021-02-27 20:43:59 · 22505 阅读 · 9 评论 -
Linux 利用script命令审计运维安全
Linux 利用script命令从零搭建一个简易的运维安全审计系统大家对于Linux的history命令想必都十分熟悉,这个命令所生成的命令记录可以帮助我们审计运维时的操作,但,生成的记录周期是从登陆系统直到退出登陆才会生成。虽然可以通过调用系统环境变量给记录增加一些内容,比如命令执行时间,在哪个IP登陆的等等这样的信息,不过,并不是实时的。简单来说,缺点太多,1,不实时,2,无法控制整体流程。3,记录的信息并不算完整,即使通过变量...原创 2021-02-12 21:23:54 · 541 阅读 · 0 评论 -
Linux 基于history命令记录操作用户,命令执行时间,登陆IP等信息
Linux 基于history命令记录操作用户,命令执行时间,登陆IP等信息Linux默认的history命令是一个常用的系统内置命令,该命令用来记录在某一个的所有使用过的命令的历史,但默认实在是十分简略,只记录有所执行的命令并没有记录在什么时间,什么人(哪个用户),通过何种方式登录系统(是远程连接系统还是本地登陆所执行的命令??)这些比较重要的信息,这些重要的信息也是日后运维审计的一部分,那么,我们可以改动这个命令来实现 history命令增加记录重要信息:命令执行时间,命令执行用户,命令执行...原创 2020-12-31 16:21:22 · 2768 阅读 · 1 评论 -
Linux文本处理三剑客之awk的应用
Linux文本处理三剑客之awk的应用假设有一个文件,文件名为test,内容如下:30/Nov/2014:09:30:42 192.168.0.112_-54eb28a7_149fe14728b_-1e07|1417309903531 FI|T|Tf|BBB30/Nov/2014:09:30:42 192.168.0.112_-54eb28a7_149fe14728b_-1e07|141730...原创 2020-11-22 22:09:16 · 222 阅读 · 0 评论 -
weblogic10.3.6的Linux下的安装
weblogic的通用版本10.3.6的Linux下的安装废话不多说,weblogic是一个web内容发布容器,极富特色的web管理界面,也就是控制台使得weblogic可以不管是什么系统操作都象Windows一样简单,功能齐全丰富,有负载均衡,集群管理,健康状态检查等等功能,通过控制台得以快速实现。当然,weblogic是oracle公司的产品,因此,不管是在安装阶段还是安装完毕后的使用阶段都有鲜明的oracle特色,具体的特色后面介绍。安装前的环境准备:weblog...原创 2020-10-30 12:55:43 · 821 阅读 · 0 评论 -
MySQL-5.6全系列使用脚本自动安装
MySQL-5.6全系列使用脚本自动安装本脚本使用6个函数实现MySQL-5.6的全系列自动编译安装工作,脚本的功能如下:一,首先检测是否编译安装过MySQL,检测方式为如果有查找到mysqld_safe这个文件,那么就证明有安装MySQL。脚本自动退出。二,新建MySQL的用户,如果该用户存在,不建立用户。如果没有改用户,立刻建立。三,声明了两个变量,其中的version变量的值为MySQL的安装版本,比如想要安装MySQL-5.6.11,那么version...原创 2020-10-25 20:43:23 · 292 阅读 · 3 评论 -
shell编程之函数以及函数的调用,变量的比较
shell编程之函数以及函数的调用,变量的比较shell作为一门脚本语言,就不得不和Python以及PHP相比较一下了,相比而言,shell的适用范围要窄很多,编写的过程类似Python十分灵活,同所有的高级编程语言一样,都可以通过函数封装一些变量和对变量处理流程所构成的一些逻辑,从而实现一些更高级的功能。大部分shell脚本是通过调用操作系统的内置命令以及变量来满足工作需求的,但也有需要自定义变量,然后使用函数封装变量,改变shell脚本的执行流程,这期间会有许多的逻辑在...原创 2020-10-24 16:18:03 · 392 阅读 · 0 评论 -
java环境部署+tomcat部署通过脚本实现自动化安装
java环境部署+tomcat部署通过脚本实现自动化安装不知道别人是怎么想,我反正比较讨厌安装部署java,这个东西难倒是不难,可要操心啊,命令一条条的打,麻烦。基于此,写一个脚本,从下载java到安装java,下载tomcat,到安装tomcat,并把tomcat作为一个服务启动部署好,这些工作希望全部由脚本来实现。首先,需要确定脚本的功能,脚本功能如下:1,自动下载java和tomcat,版本不固定,按照个性化的来。如果提前下载的有,那么不走网络下载,直接...原创 2020-10-23 21:29:01 · 447 阅读 · 0 评论 -
Linux 快速清除配置文件的注释行和空白行的几种方法(sed,grep,egrep,awk)
Linux 快速清除配置文件的注释行和空白行的几种方法运维工作有一个很基础的工作,那就是和各种配置文件打交道,修改,配置参数等等操作,有些时候,服务自带的配置文件有很多注释,并且很多注释是不需要的,或者带有很多空行,这时候查找并修改各种参数对于运维来说是一种干扰,有没有快速去除不需要的注释行和空白行的方法呢?当然有,而且方法还很多。那么,就以Samba服务的主配置文件smb.conf为例子来讲解这几种方法吧。(配置文件的获取可以安装一下Samba,然后复制Samba配置文件到roo...原创 2020-08-19 22:28:16 · 2065 阅读 · 0 评论 -
Linux 使用脚本速配Jdk8.20
Linux 使用脚本速配Jdk8.20#!/bin/bashwget http://dl.mycat.org.cn/jdk-8u20-linux-x64.tar.gztar -zxf `find / -name jdk-8u20-linux-x64.tar.gz`mv jdk1.8.0_20 /usr/local/jdkecho "JAVA_HOME=/usr/local/jdkPATH=.\$PATH:$JAVA_HOME/binCLASSP...原创 2020-07-25 17:11:01 · 158 阅读 · 0 评论 -
Linux 脚本一键安装openstack(queens版本)
Linux 脚本一键安装openstack(queens版本)分为三个文件,一个配置文件local_settings,两个脚本文件,一个为主节点脚本,一个为计算节点脚本。在脚本内使用的是我的IP192.168.0.16,这个是主节点IP,另一个为192.168.0.17,这个是计算节点。使用方法为:打开主节点脚本,搜索192字段,将所有ip地址改为自己的主节点IP地址,搜索ens33,将所有ens33修改为主节点的网卡名称。打开计算节点脚本,同样的操作...原创 2020-07-25 13:09:01 · 2237 阅读 · 2 评论 -
Linux 脚本编译安装NGINX1.8.1(附启动脚本)
Linux 脚本编译安装NGINX(附启动脚本)话不多说,直接上货:#!/bin/bash#开始NGINX编译前的环境准备工作,请等候yum install openssl openssl-devel pcre pcre-devel zlib zlib-devel -q -yyum install -y -q autoconf automake apr apr-devel apr-util apr-util-devel \ ...原创 2020-07-17 17:22:15 · 722 阅读 · 0 评论 -
Linux 使用脚本快速安装二进制MySQL8.0.17版本
Linux 使用脚本快速安装二进制MySQL8.0.17版本下载地址:MySQL官方网站,https://downloads.mysql.com/archives/community/脚本应该支持二进制的MySQL8.0全系列。如果是别的版本,请将脚本内的版本号改为自己机器上的版本号即可。脚本和安装包放在一个目录下即可,执行完脚本后,按提示进入MySQL,执行更换密码命令,初始密码在脚本执行所产生的输出中。脚本的源码如下:#!/bin/bashuseradd -M...原创 2020-07-08 21:55:34 · 432 阅读 · 0 评论 -
Linux Windows的文本在Linux下显示乱码以及由系统空格换行引起的读写问题
Linux Windows的文本在Linux下显示乱码以及由系统空格换行引起 的读写问题DOS 和 windows 使用 回车+ 换行(CR+LF)两个符号作为结束符,显示为 ^M$。Linux 则仅使用LF ( $ ) 作为结束符 ,显示为$。如何验证?在Windows下写一个脚本,名字为test.txt。内容为:#!/bin/bashecho "nihai hao ma" >/root/test.txt。将该文件放入Linu...原创 2020-07-04 21:47:04 · 1310 阅读 · 0 评论 -
Linux 脚本自启动--程序开机自启动的秘密--自定义服务的注册
Linux 脚本自启动--程序开机自启动的秘密-----自定义服务的注册最近有一个需求,vpn服务安装完毕后,有一个启动脚本,这个脚本名称为 vpnserver,但该脚本需要手动启动才可以正常使用vpn,不够智能,每次一重启机器就需要手动启动一次,很是麻烦,怎么解决呢?有以下几种方案。第一,脚本链接到 /etc/profile.d/目录下,在该目录下的脚本开机后都会自动运行,但 目前的vpn脚本是带参数start或者stop才可以启动,重新写了个执行脚本放入该目录下后,...原创 2020-07-02 17:32:42 · 1750 阅读 · 0 评论 -
Linux 安装docker-ce版本后使用脚本速配国内阿里镜像加速
Linux 安装docker-ce版本后使用脚本速配国内阿里镜像加速众所周知,docker三要素是仓库,镜像,容器。仓库的重要性不用多说,docker的基础镜像包都是通过 docker pull 命令来安装,安装完docker后,默认pull镜像是国外的镜像站,由于服务器距离国内遥远以及墙的原因,pull成功的几率比较低并且也很慢,耗费时间。国内几大云计算厂商都有docker镜像加速服务,阿里云的速度以及可靠性毋庸置疑。因此编写了一个简单的脚本,实现快速docker pull指向...原创 2020-06-29 13:51:49 · 1148 阅读 · 0 评论 -
Linux 使用脚本将pip源更换为国内源(判断配置文件存放目录是否存在,如不存在立刻创建)
Linux 使用脚本将pip源更换为国内源(判断配置文件存放目录是否存 在如不存在立刻创建)废话不多说,在Linux下的pip源问题相信困扰了不少同学,国外源的缓慢让人发指,而更换为国内源,一般是在用户家目录下新建一个pip文件夹(隐藏属性,所以目录前加一个点),在该文件夹下在建立一个配置文件,该配置文件告诉pip使用这个配置文件内写的镜像网址。并且,在该配置文件内的优先级是比pip自带的源高的。原理说完,那么就开始写脚本,需要注意的是,如果没有.pip文件夹,那...原创 2020-06-24 21:09:10 · 297 阅读 · 0 评论 -
Linux DD命令的几种用途
Linux DD命令的几种用途dd命令可以说是一个比较特殊的命令,特殊之处在于本身这个命令是比较简单的,但该命令通过管道符以及特殊的Linux内文件可以实现很多实用的功能,那么,就来好好看看都有些什么用途吧!第一:dd命令可以测试磁盘的读写大致速度,精确度虽然不高,但测出的速度有一定的指导意义实现方法:[root@08 ~]# dd if=/dev/zero of=/root/aa bs=10M count=100100+0 records ...原创 2020-06-11 20:08:43 · 1380 阅读 · 0 评论 -
Linux 快速清空文本的三种方法以及它们的异同
Linux 快速清空文本的三种方法以及它们的异同第一种方法:> filename[root@08 ~]# cat fstab ## /etc/fstab# Created by anaconda on Wed Jun 3 17:30:44 2020## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fst...原创 2020-06-11 17:31:31 · 624 阅读 · 0 评论 -
Linux 快速使用脚本判断某个安装包是否安装
Linux 快速使用脚本判断某个安装包是否安装通常的,如果想要查看哪个安装包是否安装过,使用rpm命令 :rpm -qa |grep 安装包名,如果你会脚本,那么,你可以使用脚本来帮你做这件事,快速,安全,直观。下面就来实现这个功能吧,代码演示:#!/bin/bashread -p "please input you want search name:" namerpm -qa |grep $name &>/dev/nullif [ $? -eq 0...原创 2020-06-11 11:36:14 · 2077 阅读 · 0 评论 -
linux 脚本编写实战:通过账号列表文本快速添加和删除用户
linux通过账号列表文本快速添加和删除用户的脚步该脚本需要一个写有需要添加的账号列表的文本文档,可放在任意位置,一行是一个账号名称,文件内的所有账号通过编写的脚步快速添加到Linux中,该脚本是带参脚本,如没有使用参数提示缺少参数,如参数不是提供账号的文本文件则提示文件未找到。以上为该脚本的需求,下面开始编写该简单的脚步。#!/bin/bashif [ $# -eq 0 ];thenecho "please use xargs"#提示请使用参数,该脚...原创 2020-06-11 10:43:08 · 342 阅读 · 0 评论 -
Linux 实用小脚本7(各种方法添加用户)
https://blog.csdn.net/alwaysbefine原创 2020-10-12 23:26:58 · 370 阅读 · 0 评论 -
Linux 实用小脚本6(检测nginx服务,如果服务未运行,自动启动服务)
Linux 实用小脚本6(检测nginx服务,如果服务未运行,自动启动服务)#!/biu/bash#!author zsk_johncount=`ps -ef|grep nginx|grep -v grep|grep -v $0|wc -l`echo $countif [ $count -eq 0 ];thenecho -e "\033[40;31m start nginx process.....\033[0m"service nginx restartelseecho -e "..原创 2020-10-09 21:46:15 · 1319 阅读 · 0 评论 -
Linux 实用小脚本系列(5)--脚本自动从官网下载指定MySQL版本
Linux 实用小脚本系列(5)--脚本自动从官网下载自定义MySQL版本一般情况下,我们安装MySQL都是首先打开浏览器,进入MySQL官网,找到下载页面,根据自己机器的系统选择源码包或者二进制包或者msi可执行包等等版本,十分的繁琐。我的这个脚本专门针对的是源码安装包,也就是需要编译的版本,你只需要知道确切的版本号,脚本执行的时候将版本号作为一个参数,执行脚本即可。例如脚本名称为 auot_wget_mysql.sh, 需要下载MySQL5.7.19版本的源码安装包,执行脚本命令为:...原创 2020-10-04 17:34:06 · 208 阅读 · 0 评论 -
Linux 实用小脚本系列(4)--脚本自动切割NGINX日志
Linux 实用小脚本系列(4)--使用脚本自动切割NGINX日志 这里的切割的意思是将NGINX的access和error这两个主要日志按照天数压缩并存放在一个专门的目录内,并将超过10天的日志自动删除。大家都知道,每天都是以0点0分0秒为界限,分隔天数,因此,脚本的执行时间也就为每天的0点0分(crontab默认不支持秒级任务的哦),下面上代码。#!/bin/bashdate=$(date +%F -d -1day)log_path=/usr/local/ng...原创 2020-09-19 21:45:25 · 239 阅读 · 0 评论