
《咸涩shell》
方丈对于shell脚本的一些独到见解
咸鱼程序猿.
不登高山,不知天之高也;不临深溪,不知地之厚也。
展开
-
每天一个shell小知识(shell变量)
目录shell变量自定义变量:变量定义/查看变量赋值的特殊操作:双引号单引号反撇号设置变量的作用范围:特殊变量---环境变量:位置变量:预定义变量:shell变量在各种shell中都使用到了“变量”的概念。Shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使用变量,shell程序能够提供更加灵活的功能,适应性更强。常见的shell变量类型包括:自定义变量、环境变量、位置变量、预定义变量。自定义变量:Bash中的变量操作相对比较简原创 2020-09-23 10:39:44 · 13247 阅读 · 0 评论 -
咸鱼在线~详解if条件测试操作
目录条件测试操作文件测试碎碎念:整数值比较碎碎念字符串比较逻辑测试碎碎念条件测试操作Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。使用专门的测试工具test命令,可对条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示成立)。使用test测试命令时,两种格式:#test 条件表达式或者(常用格式,两边都有空格)[ 条件表达式 ] 这两种方式作用完全相同,但是通常使用后者。根据要测试的条件类别不同,条件表达式也原创 2020-09-23 10:28:14 · 441 阅读 · 1 评论 -
每天一个shell小知识(函数)
Shell中的函数老方丈碎碎念和其他语言一样,在Shell语言中也有着函数。尽管在Shell中函数并非是必须的编程元素,但是通过使用函数,可以对程序进行更加好的组织。将一些相对独立的代码变成函数,可以提高程序的可读性和重用性。避免重复编写大量相同的代码。函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数。如果想要这个函数,只要调用这个函数的名称就可以了。使用函数的好处在于模块化以及代码可读性强。函数的创建:在shell中可以通过以下两种语法来定义函数:第一种:原创 2020-09-23 10:01:21 · 184 阅读 · 1 评论 -
每天一个shell小知识(正则)
Shell中的正则表达式什么是正则?正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。参数-n :显示行号-o :只显示匹配的内容-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,例如:grep -rl ‘root’ /etc-A :如果匹配成功,则将匹配行及其后n行一起打印出来-B :如果匹原创 2020-09-23 09:53:08 · 197 阅读 · 0 评论 -
《咸涩shell》MySQL入侵邮件报警脚本
这里我们确认数据的完整性使用的是对比md5值#!/bin/bash#md5sum /etc/passwd > /tmp/md5_test 测试md5值md5sum -c /tmp/md5_testif [ $? -eq 0 ];then echo "未被入侵"else echo "已被入侵" mail -s "文件被入侵" 1749437237(方丈本人qq)@qq.com breakfi...原创 2020-10-16 19:42:40 · 13002 阅读 · 0 评论 -
《咸涩shell》MySQL分表自动备份脚本
MySQL分表自动备份脚本#!/bin/bashDB_LIST=$(mysql -uroot -s -e "show databases;" | grep -v "Database")DB_DIR=msyql_backup_`date +%F`[ ! -d $DB_DIR ] && mkdir $DB_DIRfor i in $DB_LISTdo for j in `mysql -uroot -s -e "use $i;show tables;" | grep -v Tab原创 2020-10-16 19:40:14 · 12939 阅读 · 0 评论 -
《咸涩shell》MySQL全备增备脚本可做定时任务
#!/bin/bashMYSQL_BACKUP=`date +%Y%m%d`MYSQL_LOG_BIN=`ls /var/lib/mysql/mysql-bin.[0-9]* | head -n 1 | sort -rg | head -n 1`num=$1if [ ! -d /opt/$MYSQL_BACKUP ];then mkdir -p /opt/$MYSQL_BACKUPfi#全备mysql_all(){ mysqldump -uroot --flush-logs --maste原创 2020-10-16 19:38:49 · 125 阅读 · 0 评论 -
《咸涩shell》MySQL分库自动备份脚本
此脚本可以用来mysql自动备份脚本#!/bin/bashDB_LIST=$(mysql -uroot -s -e "show databases;" | grep -v "Database")DB_DIR=msyql_backup_`date +%F`[ ! -d $DB_DIR ] && mkdir $DB_DIRfor i in $DB_LISTdo #mysqldump -uroot --skip-lock-tables -B $i > ${DB_DIR}/$原创 2020-10-16 19:35:20 · 10219 阅读 · 0 评论 -
服务器系统检测
#!/bin/bashcpu_info(){ #cpu信息 #cpu型号 cpu_model=$(cat /proc/cpuinfo |grep "model name"|uniq |awk -F ':' '{print$2}') echo "cpu的型号信息:${cpu_model}" #cpu核心数 cpu_core=$(cat /proc/cpuinfo |grep "core id"|uniq |wc -l) echo "cpu的核心数:${cpu_core}" #cpu物理个数原创 2020-06-17 17:33:17 · 11628 阅读 · 0 评论 -
《咸鱼分享》mysql分库分表备份(shell)
我们做了mysql主从之后呢,需要分库分表的备份,为了实现更快的工作效率所以我们需要一个shell来实现一键备份。数据库备份shell脚本# vim /shell/backup_mysql.sh#!/bin/bashdate=`date +%Y-%m-%d`database=`mysql -uroot -p123456 -e "show databases;" | grep -v Database`for db in $databasedo [ -d /opt/$date/$db ]原创 2020-09-23 11:30:54 · 220 阅读 · 0 评论 -
批量添加用户(shell脚本)
批量添加用户#!/bin/bash#本脚本用来批量创建系统用户echo '成功创建用户:' > /root/user_nameread -ep '请输入要创建的用户数量:' numfor i in `seq 1 $num`do grep "user-$i" /etc/passwd > /dev/null 2>&1 if [ $? -ne 0 ]; then useradd user-$i > /dev/null 2>&1 if [原创 2020-09-23 11:22:29 · 517 阅读 · 0 评论 -
根据ip列表检测主机状态(shell脚本)
根据ip地址列表监测主机状态:根据公司服务器ip地址列表文件,监测各个主机ping的联通性,输出各个主机是否启动、关闭。这其中服务器数量并不固定,IP地址之间也无特殊规律。#vi ipfor.sh#!/bin/bashHLIST=$(cat /root/iplist.txt)for IP in $HLISTdo ping -c 3 $IP &> /dev/null if [ $? -eq 0 ] then原创 2020-09-23 11:21:15 · 13596 阅读 · 0 评论 -
每天一个shell小知识(for)
目录For循环语句For语句的结构结构执行流程实例For循环语句在实际工作环境中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他命令完全相同。如:根据服务器清单检查各个主机的存活状态;根据ip地址黑名单设置拒绝访问的防火墙策略等。这样繁琐的重复任务时,if语句已经不能满足需求。则我们需要for循环语句。For语句的结构使用for循环时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。在这里,“取值列表”称为for原创 2020-09-23 11:18:10 · 10294 阅读 · 0 评论 -
每天一个shell小知识(while)
目录while循环语句While语句的结构while语句的执行流程流程图实例while循环语句For循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合适用while循环语句。While语句的结构使用while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。因此循环体内的命令序列中应该包含修改原创 2020-09-23 10:44:15 · 1001 阅读 · 0 评论 -
每天一个shell小知识(case)
Case语句case原理:结构例1检查用户输入字符类型:提示用户输入一个字符,通过case语句判断该字符为字母,数字或者是其他字符,并给出相应的提示。case原理:Case语句主要适用于:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。这种情况和多分支if语句非常相似。只不过if要判断多个不同的条件而case语句只判断一个变量的不同取值。结构case 变量值 in模式1) 命令序列1 ;;模式2) 命令序列2 ;;。。。。。。。。。。。。。*)默认命令序列原创 2020-09-23 09:41:12 · 258 阅读 · 0 评论 -
每天一个shell小知识(if)
If条件语句if 语句的结构在Sell脚本应用中,if语句是最为常用的一种流程控制方式.用来根据特定的条件测试结果分别执行不同的操作-如果…根据不同的复杂程度,if 语句的选择结构可以分为三种基本类型,适用于不同的应用场合单分支if语句if 条件测试操作then 命令序列 fi在上述语句结构中,条件测试操作即【条件表达式】语句,也可以是其他可执行的命令语句;【命令序列】指的是一条或多条可执行的命令行,也包括嵌套使用if语句或其他流程控制语句。例1#vi mount.sh#!/bin原创 2020-09-22 20:32:02 · 349 阅读 · 0 评论 -
shell脚本一键安装lnmp
#!/bin/bash#安装nginx依赖yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel#解压nginx安装包tar zxf nginx-1.12.2.tar.gzcd nginx-1.12.2#编译安装./configure && make && make install#对配置文件进行修改(加入php配置)sed -i "45c index index.php index.h原创 2020-06-18 22:55:43 · 13770 阅读 · 0 评论 -
mysql的主从配置+shell脚本的检测和邮箱报警(centos7)
mysql主从的搭建+shell实现检测并邮件报警。 数据库分库分表备份+任务定时计划准备俩台服务器(关闭防火墙和selinux)systemctl stop firewalldsetenforce 0安装mysqlyum -y install mariadb mariadb-server一台配置主配置文件vi /etc/my.cnfserver-id=1log-bin=mysqlbin保存退出然后重新启动mysqlsystemctl restart mariadb进入mysql原创 2020-06-15 21:45:01 · 13461 阅读 · 0 评论