1、监控 MySQL 主从同步状态是否异常脚本
#!/bin/bashHOST=localhost
USER=rootPASSWD=123.com
IO_SQL_STATUS=
(
m
y
s
q
l
−
h
(mysql -h
(mysql−hHOST -u
U
S
E
R
−
p
USER -p
USER−pPASSWD -e ‘show slave status\G’ 2>/dev/null |awk ‘/Slave_.*_Running:/{print $1$2}’)for i in $IO_SQL_STATUS; do` `THREAD_STATUS_NAME=${i%:*}` `THREAD_STATUS=${i#*:}` `if [ "$THREAD_STATUS" != "Yes" ]; then` `echo "Error: MySQL Master-Slave $THREAD_STATUS_NAME status is $THREAD_STATUS!" |mail -s "Master-Slave Staus" [url=mailto:xxx@163.com]xxx@163.com[/url]` `fi
done
2、目录文件变化监控和实时文件同步
#!/bin/bash
MON_DIR=/optinotifywait -mqr --format %f -e create $MON_DIR |\
while read files; do
rsync -avz /opt /tmp/opt
#echo “$(date +‘%F %T’) create $files” | mail -s “dir monitor” [url=mailto:xxx@163.com]xxx@163.com[/url]``done
3、批量创建 100 用户并设置密码脚本
#!/bin/bashDATE=$@
USER_FILE=user.txtfor USER in $USER_LIST; do` `if ! id $USER &>/dev/null; then` `PASS=$(echo $RANDOM |md5sum |cut -c 1-8)` `useradd $USER` `echo $PASS |passwd --stdin $USER &>/dev/null` `echo "$USER $PASS" >> $USER_FILE` `echo "$USER User create successful."` `else` `echo "$USER User already exists!"` `fi
done
4、批量检测网站是否异常脚本
#!/bin/bashURL_LIST="www.baidu.com [url=http://www.ctnrs.com]www.ctnrs.com[/url]"
for URL in
U
R
L
L
I
S
T
;
d
o
‘
‘
F
A
I
L
C
O
U
N
T
=
0
‘
‘
f
o
r
(
(
i
=
1
;
i
<
=
3
;
i
+
+
)
)
;
d
o
‘
‘
H
T
T
P
C
O
D
E
=
URL_LIST; do` `FAIL_COUNT=0` `for ((i=1;i<=3;i++)); do` `HTTP_CODE=
URLLIST;do‘‘FAILCOUNT=0‘‘for((i=1;i<=3;i++));do‘‘HTTPCODE=(curl -o /dev/null --connect-timeout 3 -s -w “%{http_code}” $URL)
if [
H
T
T
P
C
O
D
E
−
e
q
200
]
;
t
h
e
n
‘
‘
e
c
h
o
"
HTTP_CODE -eq 200 ]; then` `echo "
HTTPCODE−eq200];then‘‘echo"URL OK"` `break` `else` `echo “$URL retry $FAIL_COUNT”` `let FAIL_COUNT++` `fi` `done` `if [ $FAIL_COUNT -eq 3 ]; then` `echo “Warning: $URL Access failure!”` `fi``done
5、批量主机远程执行命令脚本
#!/bin/bashCOMMAND=$*
HOST_INFO=host.infofor IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do` `USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)` `PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)` `PASS=$(awk -v ip=$IP 'ip==$1{print $4}' $HOST_INFO)` `expect -c "` `spawn ssh -p $PORT $USER@$IP` `expect {` `\"(yes/no)\" {send \"yes\r\"; exp_continue}` `\"password:\" {send \"$PASS\r\"; exp_continue}` `\"$USER@*\" {send \"$COMMAND\r exit\r\"; exp_continue}` `}` `"` `echo "-------------------"
done
6、一键部署 LNMP 网站平台脚本
#!/bin/bashNGINX_V=1.15.6
PHP_V=5.6.36TMP_DIR=/tmp
INSTALL_DIR=/usr/local
PWD_C=$PWD
echo
echo -e "\tMenu\n"echo -e "1. Install Nginx"
echo -e "2. Install PHP"echo -e "3. Install MySQL"
echo -e "4. Deploy LNMP"echo -e "9. Quit"
function command_status_check() {` `if [ $? -ne 0 ]; then` `echo $1` `exit` `fi
}
function install_nginx() {
cd
T
M
P
D
I
R
‘
‘
y
u
m
i
n
s
t
a
l
l
−
y
g
c
c
g
c
c
−
c
+
+
m
a
k
e
o
p
e
n
s
s
l
−
d
e
v
e
l
p
c
r
e
−
d
e
v
e
l
w
g
e
t
‘
‘
w
g
e
t
[
u
r
l
=
h
t
t
p
:
/
/
n
g
i
n
x
.
o
r
g
/
d
o
w
n
l
o
a
d
/
n
g
i
n
x
−
]
h
t
t
p
:
/
/
n
g
i
n
x
.
o
r
g
/
d
o
w
n
l
o
a
d
/
n
g
i
n
x
−
[
/
u
r
l
]
TMP_DIR` `yum install -y gcc gcc-c++ make openssl-devel pcre-devel wget` `wget [url=http://nginx.org/download/nginx-]http://nginx.org/download/nginx-[/url]
TMPDIR‘‘yuminstall−ygccgcc−c++makeopenssl−develpcre−develwget‘‘wget[url=http://nginx.org/download/nginx−]http://nginx.org/download/nginx−[/url]{NGINX_V}.tar.gz
tar zxf nginx-
N
G
I
N
X
V
.
t
a
r
.
g
z
‘
‘
c
d
n
g
i
n
x
−
{NGINX_V}.tar.gz` `cd nginx-
NGINXV.tar.gz‘‘cdnginx−{NGINX_V}
./configure --prefix=$INSTALL_DIR/nginx ` --with-http_ssl_module \
--with-http_stub_status_module \
--with-stream
command_status_check "Nginx - 平台环境检查失败!"
make -j 4
command_status_check "Nginx - 编译失败!"
make install
command_status_check "Nginx - 安装失败!"
mkdir -p $INSTALL_DIR/nginx/conf/vhost
alias cp=cp ; cp -rf $PWD_C/nginx.conf $INSTALL_DIR/nginx/conf
rm -rf $INSTALL_DIR/nginx/html/*
echo "ok" > $INSTALL_DIR/nginx/html/status.html
echo '<?php echo "ok"?>' > $INSTALL_DIR/nginx/html/status.php
$INSTALL_DIR/nginx/sbin/nginx
command_status_check "Nginx - 启动失败!"``}`` ``function install_php() {
cd $TMP_DIR
yum install -y gcc gcc-c++ make gd-devel libxml2-devel \
libcurl-devel libjpeg-devel libpng-devel openssl-devel \
libmcrypt-devel libxslt-devel libtidy-devel
wget [url=http://docs.php.net/distributions/php-]http://docs.php.net/distributions/php-[/url]${PHP_V}.tar.gz
tar zxf php-${PHP_V}.tar.gz
cd php-${PHP_V}
./configure --prefix=$INSTALL_DIR/php \
--with-config-file-path=$INSTALL_DIR/php/etc \
--enable-fpm --enable-opcache \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-freetype-dir \
--enable-mbstring --enable-hash
command_status_check "PHP - 平台环境检查失败!"
make -j 4
command_status_check "PHP - 编译失败!"
make install
command_status_check "PHP - 安装失败!"
cp php.ini-production $INSTALL_DIR/php/etc/php.ini
cp sapi/fpm/php-fpm.conf $INSTALL_DIR/php/etc/php-fpm.conf
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
/etc/init.d/php-fpm start
command_status_check "PHP - 启动失败!"``}`` ``read -p "请输入编号:" number``case $number in
1)
install_nginx;;
2)
install_php;;
3)
install_mysql;;
4)
install_nginx
install_php
;;
9)
`exit;;``esac
7、一键查看服务器资源利用率
#!/bin/bashfunction cpu() {` `NUM=1` `while [ $NUM -le 3 ]; do`
util=vmstat |awk '{if(NR==3)print 100-$15"%"}'
user=vmstat |awk '{if(NR==3)print $13"%"}'
sys=vmstat |awk '{if(NR==3)print $14"%"}'
iowait=vmstat |awk '{if(NR==3)print $16"%"}'
`echo "CPU - 使用率: $util , 等待磁盘IO响应使用率: $iowait"` `let NUM++` `sleep 1` `done
}
function memory() { `` total=
free -m |awk ‘{if(NR2)printf “%.1f”,$2/1024}’ `` `` used=
free -m |awk '{if(NR2) printf “%.1f”,(
2
−
2-
2−NF)/1024}’ `` `` available=
free -m |awk ‘{if(NR==2) printf “%.1f”,$NF/1024}’``
echo “内存 - 总大小: ${total}G , 使用: ${used}G , 剩余: KaTeX parse error: Expected 'EOF', got '}' at position 16: {available}G"``}̲`` ``function…(df -h |awk ‘/^/dev/{print $1}’)
for p in
f
s
;
d
o
‘
‘
m
o
u
n
t
e
d
=
fs; do` `mounted=
fs;do‘‘mounted=(df -h |awk ‘
1
=
=
"
′
1=="'
1=="′p’”{print KaTeX parse error: Expected 'EOF', got '}' at position 3: NF}̲')` `siz…(df -h |awk ‘
1
=
=
"
′
1=="'
1=="′p’“{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲')` `use…(df -h |awk ‘
1
=
=
"
′
1=="'
1=="′p’”{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}̲')` `use…(df -h |awk ‘
1
=
=
"
′
1=="'
1=="′p’"{print $5}‘)
echo “硬盘 - 挂载点: $mounted , 总大小: $size , 使用: $used , 使用率: KaTeX parse error: Expected 'EOF', got '}' at position 26: …nt"` `done``}̲`` ``function…(ss -antp |awk '{status[$1]++}END{for(i in status) printf i”:“status[i]” "}’)
echo “TCP连接状态 - $summary”}
cpu
memorydisk
tcp_status
8、找出占用 CPU 内存过高的进程脚本
ps -eo user,pid,pcpu,pmem,args --sort=-pcpu |head -n 10
ps -eo user,pid,pcpu,pmem,args --sort=-pmem |head -n 10
9、自动发布 Java 项目(Tomcat)
#!/bin/bash``DATE=$(date +%F_%T)`` ``TOMCAT_NAME=$1``TOMCAT_DIR=/usr/local/$TOMCAT_NAME``ROOT=$TOMCAT_DIR/webapps/ROOT`` ``BACKUP_DIR=/data/backup``WORK_DIR=/tmp``PROJECT_NAME=tomcat-java-demo`` ``# 拉取代码``cd $WORK_DIR``if [ ! -d $PROJECT_NAME ]; then` `git clone [url=https://github.com/lizhenliang/tomcat-java-demo]https://github.com/lizhenliang/tomcat-java-demo[/url]` `cd $PROJECT_NAME``else` `cd $PROJECT_NAME` `git pull``fi`` ``# 构建``mvn clean package -Dmaven.test.skip=true``if [ $? -ne 0 ]; then` `echo "maven build failure!"` `exit 1``fi`` ``# 部署``TOMCAT_PID=$(ps -ef |grep "$TOMCAT_NAME" |egrep -v "grep|$$" |awk 'NR==1{print $2}')``[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID``[ -d $ROOT ] && mv $ROOT $BACKUP_DIR/${TOMCAT_NAME}_ROOT$DATE``unzip $WORK_DIR/$PROJECT_NAME/target/*.war -d $ROOT``$TOMCAT_DIR/bin/startup.sh``
10、自动发布 PHP 项目脚本
#!/bin/bashDATE=$(date +%F_%T)
WWWROOT=/usr/local/nginx/html/$1
BACKUP_DIR=/data/backup
WORK_DIR=/tmpPROJECT_NAME=php-demo
# 拉取代码
cd $WORK_DIRif [ ! -d $PROJECT_NAME ]; then` `git clone [url=https://github.com/lizhenliang/php-demo]https://github.com/lizhenliang/php-demo[/url]` `cd $PROJECT_NAME
else
cd $PROJECT_NAME
git pullfi
# 部署
if [ ! -d $WWWROOT ]; then
mkdir -p $WWWROOT
rsync -avz --exclude=.git
W
O
R
K
D
I
R
/
WORK_DIR/
WORKDIR/PROJECT_NAME/* $WWWROOTelse` `rsync -avz --exclude=.git $WORK_DIR/$PROJECT_NAME/* $WWWROOT
fi
为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取