共計 3046 個字符,預計需要花費 8 分鐘才能閱讀完成。
這篇文章主要講解了“Linux 運維技巧實例分析”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Linux 運維技巧實例分析”吧!
一、生成隨機字符串
# 去掉 /\ 兩個字符,取第 5 到 14 位。openssl rand -base64 40 | sed s/[/\]//g | cut -c 5-14
# 或者生成 16 位隨機字符,1 個,要包含數(shù)字 - 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
三、并發(fā) 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 進程需要等待各并發(fā)子進程的結(jié)束返回
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 備份
不登錄數(shù)據(jù)庫如何執(zhí)行 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 判斷字符串包含關(guān)系的幾種方法 其中“$A =~ $B”是判斷 A 包含 B 最簡單的方式。
六、入侵檢測與報警
建立初始的文件指紋庫
find /var/html/www -type f | xargs md5sum
利用指紋庫檢查文件是否被篡改
md5sum -c --quiet /opt/checksum.bak
監(jiān)測文件數(shù)量及文件名的變化
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
七、產(chǎn)生隨機數(shù)
# 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
# 參數(shù)說明
八、子腳本的調(diào)用方式
fork 方式(分身,復制——產(chǎn)生新的 PID)
執(zhí)行方式
/path/script.sh
/bin/sh /path/script.sh
系統(tǒng)啟動一個子 shell 執(zhí)行調(diào)用的腳本(生成新的 PID——子 shell)。子 shell 執(zhí)行的時候父 shell 處于 Sleep 狀態(tài)(S)。子 shell 執(zhí)行完畢后返回到父 shell。子 shell 可以繼承父 shell 的環(huán)境變量,但反之不然。
exec
方式(變身——沿用原來的 PID)
執(zhí)行方式
exec
被調(diào)用的腳本與父腳本在同一個 shell 內(nèi)運行(不產(chǎn)生新的 PID),但使用 exec
調(diào)用一個新腳本后,父腳本中 exec
之后的內(nèi)容就不會再執(zhí)行了——變身。
source 方式(類似 exec
方式,沿用原來的 PID)
執(zhí)行方式
source /path/script.sh
.
source 方式開啟的腳本和父腳本在同一個 shell 中運行(不產(chǎn)生新的 PID)。source 調(diào)用一個新腳本,執(zhí)行完成后,父腳本 source 之后的內(nèi)容還會再執(zhí)行。
九、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
十、測試表達式區(qū)別
測試表達式符號
[]
test
[[]]
(())
邊界是否需要空格
Y
Y
Y
N
支持的邏輯運算符
!,-a,-o
!,-a,-o
!,,┃┃
!,,┃┃
支持的算數(shù)運算符
-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 運維技巧實例分析”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對 Linux 運維技巧實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!