03 Linux网络安全

阅读: 评论:0

03 Linux网络安全

03 Linux网络安全

Linux网络安全

  • 一 Linux系统基本操作
    • 1 详细信息
    • 2 目录树状结构
    • 3 快捷键的应用
    • 4 增删改查
    • 5 命令字的帮助信息查询
    • 6 压缩和解压缩
    • 7 vim编辑器
    • 8 Linux系统下软件分类
  • 二 Linux系统和文件管理
    • 1 Linux操作系统和用户分类
    • 2 建立和调整用户属性
    • 3 调整文件和目录权限
    • 4 命令`ahattr`不再允许添加用户
    • 5 umask命令
    • 6 密码最长有效期同一设置为90天
  • 三 Linux日志审计系统
    • 1 网络信息查看与配置
      • (1) 确认系统的网卡信息和ip地址
      • (2) 关闭 NetworkManager 服务
      • (3) 临时配置网络地址
      • (4) 网络地址配置永久生效
      • (5)开启路由功能
      • (6)关闭防火墙
    • 2 日志文件
    • 3 日志服务器建立(异地备份)
    • 4 日志备份实验![在这里插入图片描述](.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIzNDAyMQ==,size_16,color_FFFFFF,t_70)
      • (1) 客户机配置
      • (2) 备份服务器配置
  • 四 LAMP安全配置
    • 1 建立php主页解析以及主页的访问控制
      • (1) 提供web服务
      • (2) 建立LAMP平台
  • 五 LNMP安全配置
    • 1 nginx安装配置
    • 2 启用与停用
    • 3 nginx实现php解析
  • 六 java web框架:jsp语言
    • 1 tomcat:jsp解析中间键
    • 2 nginx+tomcat负载均衡集群
  • 七 包过滤防火墙
    • 1 包过滤规则
      • iptables的表与链
      • iptables链
      • IPTABLES 规则(Rules)
      • IPTABLES 基本语法
    • 2 网络地址转换
      • (1)源地址转换
      • (2)目标地址转换
  • 八 shell脚本与自动化
    • 1 脚本编写规则与变量定义
    • 2 判断语句
    • 3 循环语句与case语句应用上
      • (1) 简单的循环语句
    • 4 循环语句与case语句应用中
    • 5 循环语句与case语句应用下

一 Linux系统基本操作

安装CentOS 6.9 64位
[root@xiyangyang Desktop]#
[当前登录用户名称@主机名称 当前所在路径]

1 详细信息

  • fdisk -l
    /dev/sda 操作系统中第一块硬盘的名称以及所在路径,linux操作系统中一切皆文件(文件名)sd(硬盘类型)a(第一块)
    sdb(第二块) sdc(第三块)
  • cat /proc/meminfo 内存信息
    MenTotal 内存总大小
  • cat /proc/cpuinfo CPU信息
    cpu大小
  • poweroff(关机) | reboot(重启)
    关机和重启的命令

2 目录树状结构

目录 == 文件夹
cd ===> change directory… 返回上一-级目录
pwd ===> 列出当前所在目录路径
Is ===> list 列出当前目录中的内容
/ ===> 操作系统的启示路径根路径
/bin ===> 普通用户和管理员都可以执行的命令字
/sbin ===> 只有管理员才能执行的命令关机重启
/boot ===> 引导主引导目录独立的分区启动菜单内核
/dev ===> device设备设备文件存放目录
/etc ===> 配置文件存放目录
/home ===> 普通用户的家目录
/root ===> 管理员的家目录
/media ===> 光驱的挂在目录
/mnt ===> 临时设备挂载目录
/proc ===> 里面的数据都在内存中
/usr ===> 软件的安装目录
/var ===> 常变文件的存放目录 日志文件 邮件文件

3 快捷键的应用

安装vmware:实现虚拟机和真实机之间的文件复制
tab功能:命令字和以存在的文件名称补齐的作用
清除屏幕内容:ctrl+l
中止快捷键:ctrl+c

不同颜色文件类型

蓝色 --------------> 目录,即文件夹
黑色 --------------> 普通文件
浅蓝色 ------------> 符号连接(快捷方式)
黑底黄字 ----------> 设备文件
绿色 --------------> 有执行权限的文件
红色 --------------> 压缩包
紫色 --------------> 图片、模块等

4 增删改查

  • 查询:查看目录下有哪些内容,查看文件中的内容
    |s命令 cat命令
  • 创建文件 创建目录
    touch 文件名
    echo “hello” > 文件名
    mkdir 目录名
  • 剪切和复制
    class1 剪切文件
    修改名字
    /tmp 拷贝文件
    ln -s /tmp/p /root/Desktop/ 符号链接(前面是源文件,后面是目标文件)
    rm - 强制删除文件
    rm -rf class 强制删除目录

5 命令字的帮助信息查询

帮助手册man ls
退出帮助手册:q

-a    显示隐藏文件
-l    显示文件的详细信息
-lh   显示文件大小
-R    递归显示

内部命令: 利用 help cd
外部命令: 安装的第三方软件带的命令,基本都有帮助手册

6 压缩和解压缩

1. dd if=/dev/zero of=/tmp/bigfile bs=1M count=100
inputfile输入文件
outputfile输出文件
bs单位
count计数器2. gzip 文件名称 ------> 压缩文件
3. gunzip 压缩包 ------> 解压缩4. bzip2 文件名称  ------>  压缩
5. bunzip2 压缩包 ------> 解压缩6. 如何对目录进行打包压缩
tar -cf /tmp/allfile.tar /tmp/allfile
tar-jcf/tmp/allfile.tar.bz2 /tmp/allfile
tar-jxf/tmp/allfile.tar.bz2 -c /root-x解包
-C指定解压路径
-Z gzip
j bzip2

7 vim编辑器


命令模式有非常多的快速编辑快捷键

2yy      复制当前行及下一-行
p        粘贴到当前行下
dd       删除当前行
gg       回到第一行
G        回到最后一行
50G      到达第50行,可以进行行间跳转

8 Linux系统下软件分类

  • 源码包

  • 封装后的软件包:安装便捷
    rmp ------> red hat package manager
    deb ------> Debian

  • 源码包不考虑系统的版本
    针对tree-1.5.3-3.el6.x86_64.rpm 安装的注意事项
    安装系统时候安装的软件版:/media下面
    rpm -qa列出所有已经安装过的rpm软件包
    rpm -qpi列出软件的详细信息
    rpm -qpl列出软件的安装路径
    rpm -ivh 安装软件
    rpm -e卸载软件

  • yum安装和卸载

二 Linux系统和文件管理

1 Linux操作系统和用户分类

  • /etc/passwd 保存了操作系统中所有用户的信息,一共34个用户

  • /etc/shadow

  • /etc/group

2 建立和调整用户属性

(1) 建立一个名为class1的组,组id为1000,class2的组id2000

groupadd class1
cat etc/group
groupmod -g 1000 class1
groupadd -g 2000 class2

(2) 建立tom用户要求其基本组是class1组,附加组为class2组,tom用户的uid为600

useradd -g class1 tom
id tom
usermod -G 2000 -u 600 tom
id tom

(3) 建立一个程序用户uid为250用户名为testuser没有家目录

useradd -u 250 -M -s /sbin/nologin testuser    //-M表示没有家目录

(4) 为tom用户设定密码为123,并设定密码最长有效期为90将用户密码进行锁定使其无法登录系统

passwd tom        //修改密码
123
123
cat /etc/shadow
chage -M 90 tom   //修改密码最长有效期
id tom
passwd -S tom    //查看密码状态
passwd -l tom    //密码锁定
passwd -u tom    //密码锁定解锁

(5) 删除tom用户和testuser用户,删除class1组和2组

userdel -r testuser
userdel -r tom
groupdel class1
groupdel class2

3 调整文件和目录权限

权限:文件或目录属于谁,属于哪个组。不同的用户对该文件进行何种操作。

(1) 查看文件权限

ls -      //查看文件权限
ls -ld testdir/     //查看目录权限

头十位字符表示含义:
第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”、“c表示字符设备”、“b表示块状设备”等等;
第2-4位:表示文档属主用户权限-----------------------------------------------------------| r                        w                   x          ||文件:read读取文件        write写入文件       可执行权限     ||目录:可以查看目录内容     可以增删文件        可以进入目录    ||---------------------------------------------------------|举例:chmod 用户(u/g/o/a) 算数运算符(-+=) 权限(rwx) 文件chown 用户 文件  //将指定文件的拥有者改为指定的用户或组chgrp 组  文件   //改变文件或目录所属的用户组第5-7位:表示属组用户权限
第8-10位:表示other用权限
其中:rwx分别表示读、写、执行权限;没有对应权限就用“–”代替。

(2) 文件赋权限(8进制转换法)
chmod

 -----------------------
|   0   000   ---       |
|   1   001   --x       |
|   2   010   -w-       |
|   3   011   -wx       |
|   4   100   r--       |
|   5   101   r-x       |
|   6   110   rw-       |
|   7   111   rwx       |----------------------

(3) 粘滞位 sgid suid 权限

  • 粘滞位针对目录福泉,目录中创建的文件只有建立者可以删除。
    chmod o+t test 增加粘滞位
  • sgid是针对目录建立的权限,在该目录中建立的文件所属组继承父目录的属组
    chmod g+s test 所属组继承父目录的所属组,通过ll -d test查看
  • suid 对可执行文件建立
    谁运行该文件,都具有该文件所属者的权限
ll /etc/passwd
ll /etc/shadow【root用户】
ll /usr/bin/vim
chmod u+s /usr/bin/vim
【普通用户】
vim /etc/shadow    //删掉aaa用户的密码,保存退出,"su - aaa" 登录的时候,无需输入密码

【撤销】 chmod g-s,o-t test chmod u-s /usr/bin/vim
【操作系统命名字】 find /usr/bin perm 4755

4 命令ahattr不再允许添加用户

/etc/passwd
/etc/shadow

锁定:chattr +i /etc/passwd /etc/shadow
撤销:chattr +i /etc/passwd /etc/shadow

5 umask命令


文件最高权限:666 - 022 = 644
目录最高权限:0777 - 0022 = 755

/etc/profile
/etc/bashrc

6 密码最长有效期同一设置为90天

修改文件 vim /etc/login.defs

三 Linux日志审计系统

1 网络信息查看与配置

(1) 确认系统的网卡信息和ip地址

查看网络地址配置:ip addr
ethernet 0表示第一个网卡,ethernet 1 表示第二个网卡
eth0 00:0c:29:bb:24:75
eth1 00:0c:29:bb:24:7f

(2) 关闭 NetworkManager 服务

service NetworkManager stop
chkconfig --level 345 NetworkManager off

(3) 临时配置网络地址

  • 桥接模式:网络适配器—>设置—>桥接模式
  • IP设置:ip addr add 192.168.0.100/24 dev eth0
  • 网卡上线:ip link set eth0 up
  • 设定默认网关:ip route add default via 192.168.86.1 ,通过 ip route 查看是否设置成功
  • 配置dns解析:vim /f
    添加一条语句 nameserver 202.106.0.20

(4) 网络地址配置永久生效

cd /etc/sysconfig/network-scripts/
ls
vim ifcfg-eth0
配置内容如下

DEVICE=eth0   //网卡设备名称
TYPE=Ethernet  //类型
ONB0OT=yes    //是否允许network服务管理
BOOTPROTO=static   //静态获取
IPADDR=192.168.1.254
NETMASK=255.255.255.0

另外一个网卡

DEVICE=eth1   //网卡设备名称
TYPE=Ethernet  //类型
ONB0OT=yes    //是否允许network服务管理
BOOTPROTO=static   //静态获取
IPADDR=172.16.1.254
NETMASK=255.255.255.0
GATEWAY=202.106.0.20

IP网络配置生效:/etc/init.d/network restart
重启网络服务:service network restart
检查配置:ip addr

(5)开启路由功能

vim /f
net.ipv4.ip_forward = 1 0代表不转发,1代表转发
sysctl -p 使路由转发功能生效
iptables -nL 查看路由转发配置

(6)关闭防火墙

命令:setup

2 日志文件

  • 日志文件位置:cd /var/log
  • 日志文件分类:系统日志(messages)、登录日志(secure)、程序日志()
  • 日志的管理服务:vim /f
  • 日志管理帮助:f
    The priority is one of the following keywords, in ascending order: debug info, notice, warning, warn (sane as warning) , err, error (same as err), crit, aLert, energ, panic (same as emerg).
    尝试触发:logger - "===test==="
    查看日志:cat /var/log/secure

3 日志服务器建立(异地备份)

跟踪日志文件:tail -f /var/log/secure
清空日志:echo “”>/var/log/secure

4 日志备份实验

(1) 客户机配置

  • 配置文件:vim /f
    @@表示用tcp协议发送。
  • 关闭防火墙
setenforce 0  //关闭防火墙服务
getenforce    //查看是否关闭
service rsyslog restart  //重启服务生效

(2) 备份服务器配置

  • 打开配置文件 vim /f
  • 修改配置文件
// f
# Provides TCP syslog reception
$ModLoad imtcp    //用什么模块收
$InputTCPServerRun 514  //用什么端口收# 在后面追加接收的ip与存放位置
:fromhost-ip,isequal,"172.16.1.254" /var/log/client/172.16.1.254.log
  • 重启服务 service rsyslog restart
  • 服务状态查看 ss -antpl | grep 514

四 LAMP安全配置

1 建立php主页解析以及主页的访问控制

lamp平台 ------ > linux apache mysq| php
包匹配是否安装:rpm -qa grep httpd

(1) 提供web服务

  • 显示到主页上 —> 对外提供服务 —> ip地址端口号
    1 启动服务 service httpd start
    2 验证端口是否开启 ss -antpl | grep 80
    3 主页建立 /var/www/html/index.html
    4 主配置文件分析 vim /etc/httpd/f           关掉标签限制 setenforce 0
    主配置文件位置 /etc/httpd/f 包含有:文件主路径位置、默认开启的端口、加载的功能模块、服务启动时使用的身份、默认主页存放路径等,针对默认主页存放利用存在以下漏洞:拿到root权限后,利用apache服务共享文件。
mkdir /var/www/html/share
cp /etc/passwd /etc/shadow /var/www/html/share
//访问路径 192.168.1.254/share/ ,另存为 passwd 和 shadow文件,发现无法对 shadow 另存为,所以我们需要给shadow 加权限
chmod o+r shadow  //加权限
//再次另存为shadow,发现可以另存为针对该攻击的防御,关闭索引功能--->共享目录
# Options Indexes FollowSymLinks   //删掉该行的indexes,如下行所示
Options FollowSymLinks控制谁可以从该服务器获取内容,allow设置白名单,deny设置黑名单
# Order allow,deny 
# Allow from all
Order allow,deny  //先允许再拒绝
allow from 192.168.1.21   //允许来自这个ip的,allow from 192.168.1. 表示允许一个网段
配置生效:service httpd restart ,再次查看时候发现访问被拒绝。对页面进行加密(即加密目录),首先进行命令配置
htpasswd -c /etc/http/conf/httpuser tom
ll
cat httpuser
chmod -r httpuser   //撤销权限
chmod -w httpuser
chmod u+r httpuser
chown apache httpuser
然后进行配置文件 vim /etc/httpd/f 配置
order allow,deny 
allow from all
authtype basic 
authname "please input username and password"
authuserfile /etc/httpd/conf/httpuser 
require valid-user
配置完毕后,服务重启 /etc/init.d/httpd restart
再次访问网页发现,需要输入密码才能够访问网页

(2) 建立LAMP平台

安装mysql: yum install mysql-server -y
设定用户名: service mysqld start
设定管理员密码:mysql admin -u root -p password "12346"
测试密码:mysql -u root -p

安装php: yum install php 输入y
安装php-mysql: yum install php-mysql 输入y

安装php-mbsring: yum install php-mbsring ,如果php-mbstring在第二张光盘中,则需要卸载第二张光盘 umount /dev/cdrom,点击电脑上的光驱,选择第二张光盘,点击确定,然后挂载第二张光盘 mount /dev/cdrom /media,进入packages,cp php-mbstring-5.3.3-49.el6.x86 _64.rp m /root/Desktop/ ,进入/root/Desktop/,安装包 rpm -ivh php-mbstring-5.3.3-49.el6.x86_64.rpm

配置php配置文件vim /etc/php. ini,开启短标记功能 short _open_ tag = on。进入目录cd /var/www/html/,创建index.php验证是否可以识别短标记。进入页面测试能够访问 192.168.1.254/index.php

//index.php
<?
phpinfo();
?>

五 LNMP安全配置

lnmp平台 ------ > linux nginx mysq| php
nginx web 支持庞大的并发访问

1 nginx安装配置

继apache之后的另一款在linux下被大量使用的web服务软件。Nignx的优势在于,稳定性低系统资源损耗并发连接的高处理能力。一台物理服务器可处理30000~50000个并发请求。

[更替光盘]
umount /dev/cdrom  //卸载第二张光盘 
mount /dev/cdrom /media/    //挂载第一张光盘
vim /pos.po[dvdrom]
name="yum dvd rom'
#baseurl=file:/media/Centos 6.9 Final 
baseurl=file:/media/
gpgcheck=0//编译安装之前确保已存在开发环境软件包
yum -y install pcre-devel zlib-devel
//创建运行用户和组
useradd -M -s /sbin/nologin nginx
//编译安装,prefix是安装位置,user用户身份,group组身份
# 主程序包拷贝到虚拟机中
tar zxf nginx-1.6.
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
make
make install
//判断是否安装成功
cd /usr/local/nginx
ls

2 启用与停用

  • 启用
    /usr/local/nginx/sbin/nginx 启动脚本
    --t 选项可检查配置文件错误
  • 验证
    浏览器访问 127.0.0.1
  • 停用
    killall -s HUP nginx 重载
    killall -s QUIT nginx 停止
  • 启动
    cd sbin
    ./nginx
    ss -antpl | grep 80
    ip add
    cd …
    cd html
    pwd —> /usr/local/nginx/html/index.html
  • 关闭
    cd sbin
    ./nginx -s stop
    ss -antpl | grep 80
  • 配置文件

3 nginx实现php解析

killall php-fpm 或者 /usr/local/nginx/sbin/nginx -s stop
php-fpm 或者 /usr/local/nginx/sbin/nginx

六 java web框架:jsp语言

1 tomcat:jsp解析中间键

  • 安装配置
    源代码:apache-tomcat-7.0.
    解压:tar xf apache-tomcat-7.0.
    放置到指定安装路径:mv apache-tomcat-7.0.54 /usr/local/tomcat7
    进入所在路径:cd /usr/local/tomcat7/bin
    启动:./startup.sh
    关闭:./shutdown.sh
    端口是否开启:ss -antpl | grep 8080
    连接 tomcat:127.0.0.1:8080

确认安装JDK(java development kit)java语言软件开发工具包,如果没有可以重新安装,java-version验证是否安装而且版本在1.7.0__80版本以上。

  • 配置环境分析

进入root目录:cd /usr/local/tomcat7/webapps/ROOT
root修改名字:cd.. mv RO0T/ ROOTBAK
编辑主页文件:新建ROOT->index.jsp

2 nginx+tomcat负载均衡集群

  • 重新编译nginx


七 包过滤防火墙

1 包过滤规则

控制工具 iptables,有4个功能(表)。iptables -> Tables -> Chains -> Rules. 简单地讲,tables由chains组成,而chains又由rules组成。

iptables的表与链

iptables表介绍
Filter表iptables的默认表INPUT、OUTPUT、FORWARD
NAT表PREROUTING、POSTROUTING、OUTPUT链
Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。PREROUTING、OUTPUT、FORWARD、INPUT、POSTROUTING
Raw表用于处理异常PREROUTING、OUTPUT

iptables链

INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。

IPTABLES 规则(Rules)

  • 牢记以下三点式理解iptables规则的关键:
    Rules包括一个条件和一个目标(target)
    如果满足条件,就执行目标(target)中的规则或者特定值。
    如果不满足条件,就判断下一条Rules。
  • 目标值(Target Values)
    ACCEPT – 允许防火墙接收数据包
    DROP – 防火墙丢弃包
    QUEUE – 防火墙将数据包移交到用户空间
    RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。
watch -n1 iptables -t filter -nvL     //查看规则
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT   //添加规则
watch -n1 iptables -t filter -nvL     //查看规则

IPTABLES 基本语法

语法构成:-iptables [-t 表名] 选项 [链名] [条件] [-j控制类型]
命令:iptables -t filter -i input -p icmp -j REJECT

  • 注意事项
    不指定表名时,默认指filter表
    不指定链名时,默认指表内的所有链
    除非设置链的默认策略,否则必须指定匹配条件
    选项、链名、控制类型使用大写字母,其余均为小写

  • 数据包的常见控制类型
    -ACCEPT:允许通过
    -DROP:直接丢弃,不给出任何回应
    -REJECT:拒绝通过,必要时会给出提示
    -LOG:记录日志信息,然后传给下一条规则继续匹配

  • 添加规则iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP

  • 查看规则:iptables -t filter -nvL

  • 观察作用:watch -n1 iptables -t filter -nvL
  • 删除、清空规则

2 网络地址转换

(1)源地址转换

  • 查看nat表的状态:iptables -t nat -nvL
    POSTROUTING:路由后规则

  • 添加 nat 转换

iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 12.34.56.78   //添加转发记录
iptables -F FORWARD   //清理FORWARD记录
iptables -nvL   //查看记录iptables -t nat -A POSTROUTING -p tcp -o eth1 -s 192.168.1.0/24 -j MASQUERADE   //由于拨号网络的ip地址随机,所以也写为随机
iptables -t nat -D POSTROUTING 1    //删除之前的转发记录

(2)目标地址转换


PREROUTING:路由前规则

iptables -t nat -A PREROUTING -i eth1 -d 12.34.56.80 -p tcp --dport 80 -j DNAT --to destination 192.168.1.1:9090  //当外网访12.34.56.80:80时,路由器将其转换为内网中192.168.1.1:9090   

八 shell脚本与自动化

1 脚本编写规则与变量定义

【要求】上午9点要求设定eth0网卡,ip:192.168.1.100/24 网关:192.168.1.254
下午2点要求设定eth0网卡.,ip:172.16.1.100/24 网关:172.16.254

  • 上午9点需求设计
echo “” > /etc/sysconfig/network-scripts/ifcfg-eth0    //清空ifcfg-et
cd /etc/sysconfig/network-scripts/
echo "DEVICE=eth0" >> ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "BOOTPROT0=static" >> ifcfg-eth0
echo "IPADDR=192.168.1.100" >> ifcfg-eth0
echo "NETMASK=255.255.255.0" >> ifcfg-eth0
echo "GATEWAY=192.168.1.254" >> ifcfg-eth0
ifdown eth0
ifup eth0
  • 难道下午我们再重新输入一遍这种命令?其实程序员很懒的,写个脚本吧,嘻嘻~
//fixip1.sh
#!/bin/bash
cd /etc/sysconfig/network-scripts/
echo "DEVICE=eth0" > ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "BOOTPROT0=static" >> ifcfg-eth0
echo "IPADDR=172.16.1.100" >> ifcfg-eth0
echo "NETMASK=255.255.255.0" >> ifcfg-eth0
echo "GATEWAY=192.168.1.254" >> ifcfg-eth0
ifdown eth0
ifup eth0
  • 又有一个问题,公司会随机指定不同的ip进行修改,例如10.1.1.100/24 10/1/1/254,所以这就需要一个交互式的脚本了~
测试命令:read -p "pLease input ipaddr:" IP
【优化后的脚本】
//fixip2.sh
#!/bin/bash
read -p "pLease input ipaddr:" IP
read -p "pLease input netmask:" MASK
read -p "pLease input gateway:" WAY
cd /etc/sysconfig/network-scripts/
echo "DEVICE=eth0" > ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "BOOTPROT0=static" >> ifcfg-eth0
echo "IPADDR=$IP" >> ifcfg-eth0
echo "NETMASK=$MASK" >> ifcfg-eth0
echo "GATEWAY=$WAY" >> ifcfg-eth0
ifdown eth0
ifup eth0

2 判断语句

创建一个文件:vim if.sh
赋予执行权限:chmod +x if.sh

【单分支语句】
#!/bin/bash
if [3 -lt 5]   //如果3小于5then echo "yes"
else then echo "no"
fi【自己输入】
#!/bin/bash
read -p "please input a name:" NUM
if [$NUM -lt 10]   //如果3小于5then echo "lt"
elif [$NUM -eq 10]then echo "eq"
else echo"gt"
fi

【ping命令测试】

//
#!/bin/bash
if `ping -c2 -i0.2 -W2 12.34.56.77 &> /dev/null`
then echo "yes"
else echo "no"
fi

【交互式ping命令测试】

//
#!/bin/bash
read -p "please input ipaddr:" IP
if `ping -c2 -i0.2 -W2 $IP &> /dev/null`
then echo "$IP is up"
else echo "$IP is down"
fi

3 循环语句与case语句应用上

循环语句 for while,for根据取值列表循环,while根据条件进行循环。

(1) 简单的循环语句

  • FOR循环
#!/bin/bash
for i in {1..10}
doecho "hello"echo $i
done
  • WHILE循环
#!/bin/bash
NUM=0
while [$NUM -lt 3]
dolet $NUM++    //NUM=NUM+1echo $NUM
done
  • ip测试
    编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,将 BOOTPROT0=static 修改为 BOOTPROT0=dhcp,输入命令ifdown eth0
    ifup eth0。通过 ip addr查看ip。
#!/bin/bash
NET=10.0.110.
for ip in {1..254}
doif `ping -c2 -i0.2 -W2 $NET$IP &> /dev/null`then echo -e "$NET$IP is 33[31mup33[0m"else echo -e "$NET$IP ip 33[32mdown33[0m"fi
done
#!/bin/bash
NET=10.0.110.
IP=200
while [$IP -lt 254]
dolet IP=IP+1if `ping -c2 -i0.2 -W2 $NET$IP &> /dev/null`then echo -e "$NET$IP is 33[31mup33[0m"else echo -e "$NET$IP ip 33[32mdown33[0m"fi
done

4 循环语句与case语句应用中

  • 案例要求

  • 案例代码
case $1 in   //脚本后面跟的第1个词
redhat)echo "centos";;     //结束符
centos)echo "redhat";;     //结束符
*)        //所有其他echo "Useage $0 {redhat |centos}"
esac
  • 函数
    函数:将一部分代码存储到一个变量中。设置一个函数名字叫A,运行A的时候,屏幕输出OK。
redhat(){echo centosreturn 0}
centos(){echo centosreturn 0}case $1 in   //脚本后面跟的第1个词
redhat)redhat;;     //结束符
centos)centos;;     //结束符
*)        //所有其他echo "Useage $0 {redhat |centos}"
esac
  • 命令分析 service httpd start
    首先查看命令:find /etc -name httpd

打开脚本:/etc/rc.d/init.d/httpd

5 循环语句与case语句应用下

  • nginx开机自动启动脚本
    关掉之前的服务 :/etc/init.d/httpd stop
#! /bin/bash 
nginx=/usr/local/nginx/sbin/nginx
start( ){echo "nginx starting ....[OK]"$nginx
}
start
  • 测试是否启动 ss -antpl | grep nginx

  • 扩展状态命令

//nginxd
#! /bin/bash 
nginx=/usr/local/nginx/sbin/nginx
start( ){echo "nginx starting ....[OK]"$nginx
}
status(){if `ss -antpl | grep nginx > /dev/null`then echo ""else echo ""fi
}
stop(){echo "nginx stoping ....[ok]"$nginx -s stop
}case $1 in 
start)start;;
stop)stop;;
status)status;;
restart)stopstart;;
*)echo "Usage :$0 {start|stop|status|restart}"
esac
  • 在–list中找寻nginx,通过 chkconfig --list | grep nginx 并没有过滤出来
    打开httpd文件,发现缺少一些内容描述,我们在后面代码中加上即可
//nginxd
#! /bin/bash 
# chkconfig: - 84 18
# description:nginx script
nginx=/usr/local/nginx/sbin/nginx
start( ){echo "nginx starting ....[OK]"$nginx
}
status(){if `ss -antpl | grep nginx > /dev/null`then echo ""else echo ""fi
}
stop(){echo "nginx stoping ....[ok]"$nginx -s stop
}case $1 in 
start)start;;
stop)stop;;
status)status;;
restart)stopstart;;
*)echo "Usage :$0 {start|stop|status|restart}"
esac

运行命令:chkconfig --add nginxd
再次检查发现就没有问题了:chkconfig --list nginxd
修改nginxd在5级别:chkconfig --level 5 nginxd on
restart
reboot
如果80端口默认开启,说明配置设置成功
/etc/init.d/nginxd status
ss -antpl l grep 80

本文发布于:2024-01-31 06:32:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170665393926261.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:网络安全   Linux
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23