shell脚本

Makefile 文件概述

好久不见. 提交于 2019-12-28 01:34:42
在介绍Makefile文件之前,咱们先来聊聊Shell语言,这可以说是“磨刀不误砍柴工”!对咱们了解Makefile有很大的帮助! 目录 Shell语言: 交叉编译器: make: 清除工作目录过程文件: Makefile总述: Makefile的内容: Shell语言: Shell语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称。 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux 的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。 它虽不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性及其使用方法,是用好Unix/Linux系统的关键。 Shell是各个UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,shell脚本只要“用心写”一次,即可应用到很多系统上。同时,它运行于高于系统内核的环境,能够简单地执行一些文件系统级的高级操作。因此

shell脚本

别等时光非礼了梦想. 提交于 2019-12-28 00:45:06
#shell 脚本随机数 #!/bin/bash echo -e “\033[34m 游戏开始!!! \033[0m” while : do random_number=$(shuf -i 10-99 |head -1) # echo $random_number for i in $(seq 3) do read -p "请输入你猜的数字大小:" guess_number if [ $random_number -gt $guess_number ] then echo "猜小了!" elif [ $random_number -lt $guess_number ] then echo "猜大了!" else read -p "恭喜你,猜对了,是否继续玩游戏(y/n):" judge if [ $judge == "Y" -o $judge == "y" ] then break else echo -e "\033[34m 欢迎大佬下次在玩!\033[0m" exit fi fi echo "你还有$(expr 3 - $i)次机会!" if [ $(expr 3 - $i) == 0 ] then read -p "恭喜你,猜对了,是否继续玩游戏(y/n):" judge if [ $judge == "Y" -o $judge == "y" ] then break

lamp源码编译

匆匆过客 提交于 2019-12-27 13:52:23
在编译这些源码包之前,我们需要确认系统中有gcc,gcc-c++,make编译器,一般系统都自带了gcc和make编译器。 一般安装一个源码包的过程是: 1.解压源码包的tar.gz文件,如 tar -xvf mysql.tar.gz -C /opt/lamp ,其中tar命令中的-C是指定解压路径.其实我们完全可以写一个shell脚本进行解压. 2.配置源码,使用命令 ./configure 3.编译源码,使用命令 make 4.安装,使用 make install 现在我们开始安装lamp环境,在此之前,我们需要安装一系列的必须库. 安装 libxml2 1.进入libxml2源码包目录,进行配置设置安装的路径 Shell> ./configure --prefix=/usr/local/libxml2 2.使用make编译 3.使用make install 安装 注:在编译libxml2时,由于nanohttp.c中的open函数有问题,所以我们需要修改nanohttp.c的源代码,在1588行给open加上第三个参数0777就行了. 安装 libmcrypt 1.进入libmcrypt源码包目录,进行配置设置安装 Shell> ./configure --prefix=/usr/local/libmcrypt 2.使用make编译 3.使用make install安装 4

shell 操作钉钉机器人实现告警提醒

£可爱£侵袭症+ 提交于 2019-12-27 04:58:49
我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看。随着手机APP的发展,很多告警开始发送到IM软件上去。目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉上。群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。借助钉钉机器人,通过官方提供的API,可以很方便的post数据到相应的接收人 。群机器人支持Webhook协议的自定义接入,支持更多可能性,例如:你可将运维报警通过自定义机器人聚合到钉钉群实现提醒功能。 Shell 脚本语言是实现Linux系统管理及自动化所必须的重要工具。熟练地编写Shell语言可以提升运维人员的工作效率,适应复杂的工作环境。 在本文,我们聚焦通过shell脚本语言实现借助钉钉机器人发送告警信息。 1: 了解更多群机器人的信息,大家可登入官网学习 https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq 2.给自己的机器人起个好听的名字 操作如下: 3.使用命令行工具curl curl是一个命令行工具,通过指定的URL来上传或下载数据,并将数据展示出来。curl中的 c 表示client,而URL,就是URL。 3.1 与curl一起使用的协议,最多的还是HTTP 在每一个HTTP请求中,都有一个对应的方法,常用的方法有

Shell脚本之退出

元气小坏坏 提交于 2019-12-27 03:54:42
1. 当命令执行失败时使脚本退出 set -o errexit 或者 set -e 2. 当 Bash 使用未声明的变量时使脚本退出 set -o nounset 或者 set -u 来源: CSDN 作者: beeworkshop 链接: https://blog.csdn.net/beeworkshop/article/details/103720707

ansible学习

假如想象 提交于 2019-12-27 01:49:58
ansible 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装、ansible不需要) 配置(salt配置麻烦,ansible基本不用配置) 学习路线(salt比较陡峭,ansible比较平缓) 第三方工具(salt比较少) 开源社区的对接(salt比较少) 现有用户(salt还是ansible少一些) 二次开发扩展的能力(ansible比较差,尤其是2.0以后) 大规模并发(200以内一样,200以上salt会好一些,当然我们也可以对ansible做一些配置使其在200以上追上salt) Windows的支持(salt会好很多) 安装 yum install -y ansible 查看ansible生成的命令,用到的命令 ansible ansible-doc ansible-galaxy(下载第三方插件) ansible-playbook 查看ansible 安装生成的 rpm -ql ansible |more /etc/ansible /etc/ansible/ansible.cfg #配置文件 /etc/ansible/hosts #主要文件 hosts文件详解 cat /etc/ansible/hosts # This is the default ansible 'hosts' file

shell变量

心不动则不痛 提交于 2019-12-26 19:11:41
bash变量类型: 环境变量 本地变量(局部变量) 位置变量 特殊变量 本地变量: set VARNAME=VALUE: 作用域为整个bash进程; 局部变量: local VARNAME=VALUE:作用域为当前代码段; 环境变量: 作用域为当前shell进程及其子进程; export VARNAME=VALUE VARNAME=VALUE export VARNAME “导出” 位置变量: $1, $2, ... 特殊变量: $?: 上一个命令的执行状态返回值; 程序执行,可能有 两类返回值: 程序执行结果 程序状态返回代码(0-255) 0: 正确执行 1-255:错误执行,1,2,127系统预留; 输出重定向: > >> 2> 2>> &> 撤消变量: unset VARNAME 查看当shell中变量: set 查看当前shell中的环境变量: printenv env export shell中如何进行 算术运算: A=3 B=6 1、let 算术运算表达式 let C=$A+$B 2、$[算术运算表达式] C=$[$A+$B] 3、$((算术运算表达式)) C=$(($A+$B)) 4、expr 算术运算表达式, 表达式中各操作数及运算符之间要有空格,而且要使用命令引用 C=`expr $A + $B` 条件判断,控制结构: 单分支if语句 if 判断条件; then

shell中条件判断单双中括号&数值比较&字符串比较

牧云@^-^@ 提交于 2019-12-26 16:00:24
文章目录 条件判断中的单双中括号 单中括号[ ] 双中括号[[ ]] 背景:在修改centreon监控脚本的时候发现shell脚本中if判断条件使用的几点疑问,遂记录。 条件判断中的单双中括号 样例1如下:判断当前小时(24小时制)是否大于2点? time = ` date +%H ` if [ $time -gt "02" ] then echo "yes" else echo "no" fi Q: -gt用于数值大小比较,为什么在这里没有报错? 单中括号[ ] 条件判断中的[ ]是shell中内置命令test的另一种形式,两者等同于: if test 1 -gt 2 ---------------- if [ 1 -gt 2 ] 要点如下: 数值 比较支持诸如-lt,-gt等符号, 字符串 比较仅支持=,!=两种比较方式,若需要使用>,<则需要进行转义为\>,\<,样例2如下: if [ "a" \ > "a" ] then echo "yes" else echo "no" fi # 打印 no 双中括号[[ ]] 双中括号为shell内置关键字,语义范围较但括号更为广泛,例如支持||,&&等逻辑运算符,且支持正则通配,样例3(通配)如下: a = "zoo" [ [ $a == z* ] ] # 这里采用的是模式匹配即z开头 echo $? # 状态码为0即为true [

简单聊一聊Ansible自动化运维

故事扮演 提交于 2019-12-26 14:44:24
一、Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个。更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事。 1、Ansible特点 Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次开发相对比较容易; Ansible丰富的内置模块,几乎可以满足一切要求; 管理模式非常简单,一条命令可以影响上千台主机; 无客户端模式,底层通过SSH通信; Ansible发布后,也陆续被AWS、Google Cloud Platform、Microsoft Azure、Cisco、HP、VMware、Twitter等大公司接纳并投入使用; 二、Ansible的角色 使用者:如何使用Ansible实现自动化运维? Ansible工具集:Ansible可以实现的功能? 作用对象:Ansible可以影响哪些主机? 1、使用者 如下图所示:Ansible使用者可以采用多种方式和Ansible交互,图中展示了四种方式: CMDB:CMDB存储和管理者企业IT架构中的各项配置信息

shell 编程补充

点点圈 提交于 2019-12-26 12:25:17
1 反引号可以进行命令的执行 ,如 `pwd` 会执行pwd这个命令。也可以通过$(pwd)来执行 2 $0 代表当前命令本身的路径。 3 dirname 可以读取指定路径名,并删除最后一个斜杠后的路径。比如有 dirname /opt/apps ,结果为 /opt 4 `dirname "$0" `来获取当前脚本的目录。 5 位置参数可以用 shift 命令左移。比如 shift 3 表示原来的 $4 现在变成 $1 ,原来的 $5 现在变成 $2 等等,原来的 $1 、 $2 、 $3 丢弃, $0 不移动。不带参数的 shift 命令相当于 shift 1 。 这样我们来获取参数的时候就不用一个一个数了。 6 nohup 不挂端的运行,即脱离终端运行,当我们以当前shell启动了一个命令,如果shell关闭后,那么命令就不执行了,nohup可以解决这个问题 7 & 使命令在后台运行,一般与nohup组合使用。 nohup sh commnd & 8 变量定义的等号前后不要有空格 9 ${param1:-param2} , 如果param1不为空,结果为param1, 否则为param2 10 sh -c "cmd" 可以直接执行字符串内的命令 11 使用grep 来执行进行if判断: if grep qwrewq -q info.log ;then echo 'success