shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机
1.NGINX启动脚本
- #!/bin/bash
- # chkconfig: 235 32 62
- # description: nginx
- [ -f /etc/init.d/functions ] && . /etc/init.d/functions
- pidfile=/application/nginx/logs/nginx.pid
- start(){
- if [ -f $pidfile ];then
- echo "Nginx is Running"
- else
- /application/nginx/sbin/nginx
- RETVAL=$?
- if [ $RETVAL -eq 0 ];then
- action "Nginx is Started" /bin/true
- else
- action "Nginx is Started" /bin/false
- fi
- fi
- return $RETVAL
- }
- stop(){
- if [ -f $pidfile ];then
- /application/nginx/sbin/nginx -s stop
- RETVAL=$?
- if [ $RETVAL -eq 0 ];then
- action "Nginx is Stopped" /bin/true
- else
- action "Nginx is Stopped" /bin/false
- fi
- else
- echo "Nginx is not Running"
- fi
- return $RETVAL
- }
- reload(){
- if [ -f $pidfile ];then
- /application/nginx/sbin/nginx -s reload &>/dev/null
- RETVAL=$?
- if [ $RETVAL -eq 0 ];then
- action "Nginx is Reloaded" /bin/true
- else
- action "Nginx is Reloaded" /bin/false
- fi
- else
- echo "Nginx is not Running"
- /application/nginx/sbin/nginx
- RETVAL=$?
- if [ $RETVAL -eq 0 ];then
- action "Nginx is Started" /bin/true
- else
- action "Nginx is Started" /bin/false
- fi
- fi
- return $RETVAL
- }
- # case中的RETVAL=$?是为了接收函数的返回值
- case $1 in
- start)
- start
- RETVAL=$?
- ;;
- stop)
- stop
- RETVAL=$?
- ;;
- restart)
- stop
- sleep 1
- start
- RETVAL=$?
- ;;
- reload)
- reload
- RETVAL=$?
- ;;
- *)
- echo "USAGE: $0 {start|stop|restart|reload} "
- exit 1
- esac
- exit $RETVAL
添加到系统服务中
- cp /server/scripts/nginx /etc/init.d/
- chkconfig --add nginx
- # 生成了这些文件
- /etc/rc.d/rc2.d/S32nginx /etc/rc.d/rc3.d/S32nginx
- /etc/rc.d/rc4.d/S32nginx /etc/rc.d/rc5.d/S32nginx
- /etc/rc.d/rc0.d/K62nginx /etc/rc.d/rc1.d/K62nginx
- /etc/rc.d/rc6.d/K62nginx
- 0-6表示不同运行级别:
- 0:关机
- 1:单用户
- 2:无网络的多用户
- 3:命令模式
- 4:未启用
- 5:图形界面模式
- 6:重启
- # 查看运行级别
- who -r
- runlevel
- 2、3、5表示不管是这三个运行级别中的哪一个,nginx的启动顺序都是第32位
- 0、6表示重启或关机时,nginx的关闭顺序是第62位
2.统计日志文件流量字段之和
- #!/bin/bash
- exec < access_2018-12-8.log
- while read line
- do
- i=`echo $line|awk '{print $10}'`
- expr $i + 1 &>/dev/null
- if [ $? -ne 0 ];then
- continue
- fi
- ((sum+=i))
- done
- [ -n "$sum" ] && echo $sum
- #!/bin/bash
- while read line
- do
- i=`echo $line|awk '{print $10}'`
- expr $i + 1 &>/dev/null
- if [ $? -ne 0 ];then
- continue
- fi
- ((sum+=i))
- done< access_2018-12-8.log
- 或者cat a.log | while read line
- [ -n "$sum" ] && echo $sum
用shell取苹果
- #!/bin/bash
- file="/root/iplist"
- exec < $file
- while read line
- do
- echo $line >> /root/ReverseIp
- done
- mv $file $file.bak
- cat /root/ReverseIp | tac
3.for循环实战,创建十个文件,名字为随机的八个字符
- #!/bin/bash
- mkdir test1
- cd ./test1
- for((i=1;i<=10;i++))
- do
- touch `echo $RANDOM |md5sum | cut -c 1-8`.html
- done
批量修改文件名中指定的字符串
- file="192916b7_finished.html"
- mv $file `echo $file | sed 's#_finished.html#.jpg#g'`
- # 第二种方法
- ls test1 | awk -F '[_]' '{print "mv " $0,$1".jpg"}'
- # 第三种方法
- rename "_finished.html" ".jpg" /root/test1/*.html
- # 第四种方法,sed后向引用
- mv $file `echo $file | sed -r 's#(^.*)_finished.html#\1.jpg#g'`
4.跳板机
知识点1:trap信号;
知识点2:ssh key免密钥登录;
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1
知识点3:/etc/profile.d/:登录系统时会加载该目录,放在/etc/profile.d/的文件,即使没有x权限也能被执行.
想要cat的EOF不顶格写,第二个EOF前面是TAB键,不是四个空格.
- cat /server/scripts/tiaoban.sh
- #!/bin/bash
- trapper(){
- trap "" HUP INT QUIT TERM TSTP
- }
- menu(){
- cat <<-EOF
- ========Host List================
- 1)172.16.1.8
- 2)172.16.1.31
- 3)172.16.1.41
- 4)exit
- ==================================
- EOF
- }
- conn_host(){
- case "$1" in
- 1)
- ssh $USER@172.16.1.8
- ;;
- 2)
- ssh $USER@172.16.1.31
- ;;
- 3)
- ssh $USER@172.16.1.41
- ;;
- 4)
- exit
- ;;
- *)
- continue
- esac
- }
- main(){
- while true
- do
- clear
- menu
- read -p "Pls select:" num
- conn_host $num
- done
- }
- trapper
- main
- cat /etc/profile.d/tiaobanfirst.sh
- #!/bin/bash
- [ $UID -ne 0 ] && [ $USER != "oldgirl" ] &&\
- . /server/scripts/tiaoban.sh
如果这个脚本中不写第一行,则永远也登不上这台机器了,只能虚拟机恢复快照或物理机重装系统.
b.安全方面
1)跳板机禁止外网IP登录,只能内网IP登录;
2)其他服务器也禁止外网IP登录,同时禁止root登录,做完ssh认证,将密码登录也禁止,只允许密钥登录,并且只有跳板机的密钥放在其他服务器上;
PasswordAuthentication yes改为no
3)通过VPN连到跳板机,再从跳板机登录到其他服务器.
从零开始搭建创业公司后台技术栈:http://www.phppan.com/2018/04/svr-stack/
shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机的更多相关文章
- 【shell脚本】nginx启动脚本
[root@localhost init.d]# cat nginx #!/bin/bash #nx Startup script for the Nginx HTTP Server # it ver ...
- centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课
centos LNMP第一部分环境搭建 LAMP安装先后顺序 LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/local/php/{ ...
- linux nginx 启动脚本
linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...
- Nginx 启动脚本/重启脚本
第一步先运行命令关闭nginx sudo kill `cat /usr/local/nginx/logs/nginx.pid` 第二步 vi /etc/init.d/nginx 输入以下内容 #!/b ...
- nginx启动脚本,手动编辑
nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...
- Nginx 启动脚本
Nginx 启动脚本 1.vim /etc/init.d/nginx #!/bin/bash # chkconfig: - 30 21 # description: http service. # S ...
- LNMP 1.4 nginx启动脚本和配置文件
编写Nginx启动脚本,写入下面这段,授权755 vim /etc/init.d/nginx #!/bin/bash # chkconfig: - # description: http servic ...
- nginx启动脚本和配置文件
1.编写Nginx启动脚本,并加入系统服务 vim /etc/init.d/nginx并在其中写入如下内容:#!/bin/bash# chkconfig: - 30 21# description: ...
- nginx启动脚本(class练习)
说明:使用类的方式编写程序启动脚本(练习) 1 #!/usr/bin/env python import sys import os from subprocess import Popen,PIPE ...
随机推荐
- nmap脚本nse的使用
nmap脚本(nse)使用总结 0x01 nmap按脚本分类扫描 nmap脚本主要分为以下几类,在扫描时可根据需要设置--script=类别这种方式进行比较笼统的扫描: auth: 负责处理鉴权证书( ...
- 基本CSS布局二
基本CSS布局二------基本页面布局二 /*主面板样式*/ #container { width:100%; margin:0px auto;/*主面板DIV居中*/ } /*顶部面板样式*/ # ...
- 【全网最优方法】JAVA初学:错误: 找不到或无法加载主类HelloWorld
JAVA初学:错误: 找不到或无法加载主类 HelloWorld 我这是看的黑马2019网课(B站)出现的问题. 放一下别人的图,我也是大概的问题:就是javac没问题,java却无论怎么弄都报错. ...
- cygwin执行.py提示找不到模块,但已经安装模块的解决办法
. 在解决了cygwin中make命令不能使用的问题之后(https://www.cnblogs.com/zhenggege/p/10724122.html),make maskrcnn路径下的set ...
- GNU项目
目标在于建立一个完全相容于UNIX的自由软件环境.发展GNU系统的计划,最早由理查德•斯托曼在1983 年启动,它是自由软件基金会最早致力的目标.最近一个GNU系统版本,是于2011年4月1日释出的G ...
- 自定义一个数组对象工具demo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 解决Mysql无法导入存在null数据的问题
其实很简单,在mysql的控制台输入 SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 然后重 ...
- Kafka 可视化工具(Kafka Tool)
Kafka 可视化工具 使用Kafka的小伙伴,有没有为无法直观地查看 Kafka 的 Topic 里的内容而发过愁呢? 下面推荐给大家一款带有可视化页面Kafka工具:Kafka Tool (目前最 ...
- 059. Spiral Matrix II
题目链接:https://leetcode.com/problems/spiral-matrix-ii/description/ Given a positive integer n, generat ...
- 实验----Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...