目录

脚本

一个简单的脚本

实现流程:

变量赋值

IF判断语句

if单分支结构

if 双分支结构

if 多分支结构

实用案例:检测内网主机存活状态

Shell循环语句(for、while)

for循环

while循环

检测内网主机存活装态(优化版)

case语句

case案例

case格式

函数

分析apache自启动脚本

apache的启动函数

apache的关闭函数

Nginx自启动脚本


脚本

什么是脚本?作用?
Linux中的脚本其实就类似我们在windows系统中编写的批处理,那么我们如何去学习他呢?
从上往下一次执行,有错不会执行,跳到下一条命令

我们这里主要通过应对各种场景的要求,编写相应的脚本去实现的过程中,我们去一步步的认识脚本编写的各种语法。这些语法的含义其实在我们以前学过的编程语言中,已经了解了。这里,我们主要是了解和学习其语法结构即可,你会发现,学起来非常轻松,也很有意思......

一个简单的脚本

场景设定如下:

上午9点 要求设定eth0网卡 ip

IP:192.168.1.100/24

网关:192.168.1.254

下午2点要求设定eth0网卡 ip

IP:172.16.1.100/24

网关:172.16.1.254

实现流程:

笨办法:

①先把ifcfg-eth0文件清空:echo "" > /etc/sysconfig/network-scripts/ifcfg-eth0
②echo "DEVICE=eth0" >> /etc/sysconfig/network-scripts/ifcfg-eth0
   echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/ifcfg-eth0
   echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-eth0
   echo "BOOYPROTO=static" >> /etc/sysconfig/network-scripts/ifcfg-eth0
   echo "IPADDR=192.168.1.100" >> /etc/sysconfig/network-scripts/ifcfg-eth0
   echo "NETMASK=255.255.255.0" >> /etc/sysconfig/network-scripts/ifcfg-eth0
   echo "GATEWAY=192.168.1.254" >> /etc/sysconfig/network-scripts/ifcfg-eth0
③先关了:ifdown  eth0,再开启:ifup eth0

下午还要再输一遍,改为172

用脚本:

①先建立一个文件 vim fixip.sh(因为要实现修改ip功能,见名知义,后缀为sh,因为是shell脚本编写)
②在脚本的第一行是声明这个脚本是用什么命令解释器来运行的,比如是sh命令解释器,就要写sh命令解释器的位置(/bin/sh),如果是bash就是写(/bin/bash),井号开头
   第二行第三行也是井号开头,分别写上这个脚本的作用以及创建时间,联系方式(不写也行)

③怎么运行?首先给它一个执行权限

变绿就说明有执行的权限
运行脚本的方法:如果在同一目录就用./去运行——》./fixup.sh

公司会随机指定不同的ip进行修改

优化脚本为交互式脚本,就引出了我们下面要讲的变量赋值
100.1.1.100/24
10.1.1.254
请输入ip地址:
请输入子网掩码:
请输入网关:

变量赋值


A 顾名思义就是我们定义的变量了,我们给其赋值,再通过$A调出它所表示的值(字符串)

[root@Waffle Desktop]# read -p "please input ipaddr:" IP
(大写IP说明这个东西是变量,please input ipaddr是显示内容,显示的内容输入完后就存在变量里面了)
please input ipaddr:10.1.1.1
[root@Waffle Desktop]# echo $IP
10.1.1.1

优化脚本:
在刚刚编写的脚本第二行写上read -p "please input ipaddr:" IP

IF判断语句

if单分支结构

if 条件
then 成立 子语句
fi(结尾要写fi)

案例:判断3是否小于5

注意 [ 后面要写空格,否则错误

if 双分支结构

if 条件

then 成立子语句

else 不成立子语句

fi

案例:判断6是不是小于5

linux中对缩进没有要求

if 多分支结构

if 条件

then 成立子语句

elif 条件

then 成立子语句

else 不成立子语句

fi

案例:判断键盘输入的数字和10的关系


注意:[ 前后一定要有空格

Linux中  大于 -gt 小于 -lt 等于 -eq

实用案例:检测内网主机存活状态

我们平时的ping操作,我们可以对其进行修饰,改变其特定的输出显示:

-c 指定其发送几个包

-i 发间隔时间(s)

-W 等待响应时间(s)

[root@Waffle Desktop]# ping -c2 -i0.2 -W2 12.34.56.79(要黏在一起写,发两个包,间隔时间0.2s,等待时间2s)

[root@Waffle Desktop]# ping -c2 -i0.2 -W2 12.34.56.79 &> /dev/null意思是把不管是正确还是错误的输出全部导出到/dev/null,这个文件相当于是一个空洞

前后加两个点(在数字键盘1的左边,不同于单引号)

优化:

如果想测试一个网段的主机存活,就不太好用了

Shell循环语句(for、while)

for根据取值列表循环
while根据条件进行循环

for循环

格式:
for  变量  in  取值列表
do
     子语句
done

案例:屏幕上输出1~10,如何拿for循环实现?

while循环

while  条件
do
      子语句
done

案例:屏幕上输出1~3

检测内网主机存活装态(优化版)

继续我们回到前面的探测主机存活,这一次我们要实现在真实的环境中,探测局域网的主机存活状态

将我们的网络属性配置到桥接模式

1、将centos6-1的eth0网卡设置为桥接模式

2、修改网卡配置

[root@Waffle Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-eth0


3、编写脚本

#!/bin/bash
NET=10.0.110.
for i in {1..254}
do
    if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
    then echo -e "$NET$IP is \033[31mup\033[0m"      就是把UP变红色  DOWN变绿色
    else echo -e "$NET$IP is \033[32mdown\033[0m"
    fi
done

换while循环看看

#!/bin/bash
NET=10.1.1.
IP=200
while [ $IP -lt 254 ]

do
    let IP=IP+1
    if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
    then echo -e "$NET$IP is \033[31mup\033[0m"
    else echo -e "$NET$IP is \033[32mdown\033[0m"
    fi
done

case语句

case案例

案例

./case.sh  centos
redhat

./case.sh redhat
centos

./cash.sh xxx
usage case.sh {redhat|centos}

#!/bin/bash
case $1 in
redhat)
   echo "centos"
   ;;
centos)
   echo "redhat"
   ;;
*)--》*表示所有
   echo "useage $0 {redhat|centos}"
esac

赋权后执行

case格式

case 变量 in
模式1)
   子语句
   ;;
*)
   子语句
   ;;
esac

函数

将一部分代码存储到一个变量中
再调用的时候就会执行这个功能

案例:设计一个函数名字为A,运行A时屏幕输出OK

可以通过 echo $?  得到函数的返回值(return)

redhat(){
        echo cetos
        return 0
    }
    centos(){
        echo redhat
        return 0
    }
    case $1 in
    redhat)
        redhat(就相当于调用上面的函数)
        ;;
    centos)
        centos
        ;;
    *)
        echo "Usage $0 {redhat|centos}"
    esac

分析apache自启动脚本

apache的启动函数

apache的关闭函数

这些是不是看起来很熟悉,都是我们前面学的编写的

接下来我们就来编写nginx的自启动脚本

Nginx自启动脚本

首先我们要在/etc/init.d/目录下编写我们Nginx的启动脚本nginxd

【CyberSecurityLearning 34】Linux脚本编写(Shell脚本)相关推荐

  1. 在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...

    如何编写简单的Shell脚本(Script)文件之Linux的基本操作 新建一个文本文件包含所需要的脚本.举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网 ...

  2. linux 脚本中 -le,Linux中编写Shell脚本

    目录 Shell Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等. 用户每输入一条命令,Shell就执行一条.这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式. ...

  3. Linux中编写Shell脚本

    目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算

  4. Linux之编写shell脚本

    什么是shell脚本 首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合. 例如:创建.进入.删除目录,拷贝 ...

  5. Linux编写脚本监控系统负载,linux系统管理-编写Shell脚本监测服务器状态

    --为了持续观察服务器每天的基本运行状况,提供方便易读的集中的日志记录数据,需要结合Shell脚本和计划任务设置,定期记录不同时间段服务器的CPU负载.内存和交换空间.磁盘使用率等各种信息 需求描述 ...

  6. 查看每个用户linux内存,编写shell脚本查看linux当前各用户的cpu和memory消耗比例

    为了方便自己查看centOS上的各用户cpu和内存的使用比例,写了shell脚本. viewUsage.sh #!/bin/bash # # view the cpu and memory consu ...

  7. 总结:linux 学习之 shell 脚本编写

    一.Shell 脚本编写规范 1.一个规范的 Shell 脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在 Linux bash 的编程一般为:#!/bin/bash  或 #! ...

  8. linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql

    修改数据库数据 在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写. 一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行.本篇文 ...

  9. Linux—编写shell脚本操作数据库执行sql

    修改数据库数据   在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写.   一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行 ...

  10. linux 脚本监听,Linux—编写shell脚本监控主机

    编写SHELL脚本监控主机 1.用vi命令在/root目录是新建一个脚本文件sysmon.sh: 内容如下: #!/bin/bash dug=$(df -h | grep "/$" ...

最新文章

  1. matlab求矩阵均值向量,如何求一个矩阵的均值向量
  2. ♥看二本学渣如何进腾讯 分享面试经验、职场感悟、硬核知识、大厂内推♥
  3. 请教大家,如何使用sed命令,替换文件指定行的内容呢?-Linux系统管理-ChinaUnix.net...
  4. poj 1821(单调队列优化dp)
  5. poj 2352 线段树
  6. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel
  7. C# SQLite 数据库操作实例2
  8. php中自动转换、强制转换、其他数据类型和bool转换
  9. 小学生 计算机编程 教程,面向小学生的C ++有趣编程(第一卷)配置教学资源课件完整版...
  10. Drupal 自己定义主题实体 Theming Custom Entities
  11. Windows server 2008 R2 个人使用修改==转载+原创
  12. ORACLE常用的一些特殊SQL,收藏收藏,下次需要的时候就不用再翻箱倒柜了
  13. Linux C编程实战——第六章 文件操作_项目实现_自写ls命令
  14. 雷达相关书籍学习顺序推荐
  15. 计算机音乐数字大全抖音,抖音歌曲大全100首,抖音最火的100首音乐
  16. 手机怎么把图片转成PDF格式?这个方法很好用
  17. 戴尔电脑,耳机插入无反应解决办法
  18. 数字漫画行业繁花似锦,国漫扎根本土文化“向外生长”?
  19. 高数笔记(十):定积分的概念与性质,微积分基本公式,牛顿-莱布尼兹公式,变限函数求导
  20. canvas实现一个线性图

热门文章

  1. NYOJ 1053 Alice and Bob (N)
  2. NYOJ 682 初学者的烦恼
  3. 算法(69)----最长和谐子序列
  4. 使用Amanda ZRM备份远程MySQL数据库
  5. 程序组件通信方案集锦
  6. testng提供的Assert类断言使用
  7. JS刷新父窗口的几种方式
  8. 吴恩达 coursera ML 第十三课总结+作业答案
  9. R语言:ggplot2
  10. 【Paper】研究论文不会写?先来学学怎么做西红柿炒鹌鹑蛋吧!