Linux运维技巧实例分析

52次阅读
没有评论

共计 3046 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章主要讲解了“Linux 运维技巧实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Linux 运维技巧实例分析”吧!

一、生成随机字符串

#  去掉 /\ 两个字符,取第 5 到 14 位。openssl rand -base64 40 | sed  s/[/\]//g  | cut -c 5-14
#  或者生成 16 位随机字符,1 个,要包含数字 - n 和特殊字符 -y。

二、文件名批量修改

法一

#!/bin/bash
Filename=_faster.html
Dirname= /test 
cd $Dirname||exit 1
for n in `ls`
 name=$(echo ${n}|awk -F  _   {print $1} )
 mv $n ${name}${Filename}
done

法二

#!/bin/bash
Path= /test 
cd $Path   \
ls | awk -F  _   {print  mv    $0   $1 _faster.html}  | bash

法三

rename

三、并发 ping

#!/bin/bash
CMD= ping -W 2 -c 2 
IP= 192.168.74. 
for n in $(seq 254);do
 {
 $CMD $IP$n   /dev/null 2 1
 if [ $? -eq 0 ];then
 echo  $IP$n
 fi
 } 
wait #  主 shell 进程需要等待各并发子进程的结束返回
echo

四、解决 DOS 攻击

file=$1
while true; do
 awk  {print $1}  $1 | grep -v  ^$  | sort | uniq -c   /tmp/tmp.log
 exec   /tmp/tmp.log
 while read line; do
 ip=`echo $line | awk  {print $2} `
 count=`echo $line | awk {print $1}`
 if [ $count -gt 500 ]   [ `iptables -nL | grep  $ip  | wc -l` -lt 1 ]; then
 iptables -I INPUT -s $ip -j DROP
 echo  $line   /tmp/droplist_$(date +%F).log
 fi
 done
 sleep 3600
done

五、MySQL 备份

不登录数据库如何执行 sql 命令

#!/bin/sh
MYUSER=root
MYPASS=123456
MYCMD= mysql -u$MYUSER -p$MYPASS
for db in db1 db2 db3; do
 $MYCMD  use $db;show tables; 
done

分库备份

#!/bin/sh
MYUSER=root
MYPASS=123456
DBPATH=/root/test/db_bak
MYCMD= mysql -u$MYUSER -p$MYPASS
MYDMP= mysqldump -u$MYUSER -p$MYPASS 
[ ! -d $DBPATH ]   mkdir $DBPATH
for db in `$MYCMD  show databases;  | sed  1d  |egrep -v  mysql|schema|sys  do
 if [ -z `echo $db|grep  test ` ];then #  不包含 test 字符串
 $MYDMP $db | gzip  $DBPATH/${db}_$(date +%F).sql.gz
 fi
done

注意文中包含字符串的判断可有多种方式 Shell 判断字符串包含关系的几种方法 其中“$A =~ $B”是判断 A 包含 B 最简单的方式。

六、入侵检测与报警

建立初始的文件指纹库

find /var/html/www -type f | xargs md5sum 

利用指纹库检查文件是否被篡改

md5sum -c --quiet /opt/checksum.bak

监测文件数量及文件名的变化

find /var/html/www -type f   /opt/filename.bak
find /var/html/www -type f   /opt/filename.now
diff

cron

* /3 * * * * /bin/sh /path/to/monitor.sh   /dev/null 2 1

七、产生随机数

# 0~32767
echo $RANDOM
echo  bulabula$RANDOM  | md5sum | cut -c 8-15
openssl rand -base64 8
date +%s%N
head /dev/urandom|cksum
cat /proc/sys/kernel/random/uuid
apt install expect
expect_mkpasswd -l 8 -d 2 -c 3 -C 2 -s 1
yum install expect
mkpasswd -l 8 -d 2 -c 3 -C 2 -s 1
#  参数说明

八、子脚本的调用方式

fork 方式(分身,复制——产生新的 PID)
执行方式

/path/script.sh
/bin/sh /path/script.sh

系统启动一个子 shell 执行调用的脚本(生成新的 PID——子 shell)。子 shell 执行的时候父 shell 处于 Sleep 状态(S)。子 shell 执行完毕后返回到父 shell。子 shell 可以继承父 shell 的环境变量,但反之不然。

exec方式(变身——沿用原来的 PID)
执行方式

exec

被调用的脚本与父脚本在同一个 shell 内运行(不产生新的 PID),但使用 exec 调用一个新脚本后,父脚本中 exec 之后的内容就不会再执行了——变身。

source 方式(类似 exec 方式,沿用原来的 PID)
执行方式

source /path/script.sh
.

source 方式开启的脚本和父脚本在同一个 shell 中运行(不产生新的 PID)。source 调用一个新脚本,执行完成后,父脚本 source 之后的内容还会再执行。

九、shell 逐行读取文件

法一

exec  file
while read line; do
 echo $line
done

法二

cat file | while read line; do
 echo $line
done

法三

while read line; do
 echo $line
done   file

法四

for line in `cat test.txt`; do
 echo $line
done

十、测试表达式区别

测试表达式符号

[]

test

[[]]

(())

边界是否需要空格

Y

Y

Y

N

支持的逻辑运算符

!,-a,-o

!,-a,-o

!,,┃┃

!,,┃┃

支持的算数运算符

-eq,-gt,-lt,-ge,-le

-eq,-gt,-lt,-ge,-le

-eq,-gt,-lt,-ge,-le 和 =,,,=,=

-eq,-gt,-lt,-ge,-le 和 =,,,=,=

字符串比较

=,==,!=

=,==,!=

=,==,!=

=,==,!=

是否支持通配 *

N

N

Y

N

感谢各位的阅读,以上就是“Linux 运维技巧实例分析”的内容了,经过本文的学习后,相信大家对 Linux 运维技巧实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计3046字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)