Linux運維小小案例

2021-10-20 09:53:09 字數 4488 閱讀 8345

# 去掉/\兩個字元,取第5到14位。

openssl rand -base64 40 |

sed's/[/\]//g'

|cut -c 5-14

# 或者生成16位隨機字元,1個,要包含數字-n和特殊字元-y。

pwgen 16 1 -n -y

#!/bin/bash

filename=_faster.html

dirname=

"/test"

cd$dirname

||exit 1

for n in`ls

`doname=

$(echo $

|awk -f '_''')

mv$n$$

done

#!/bin/bash

path=

"/test"

cd$path

&& \ls|

awk -f '_'''|

bash

rename faster.html slow.html *.html
#!/bin/bash

cmd=

"ping -w 2 -c 2"

ip="192.168.74."

for n in

$(seq 254);do

&done

wait

# 主shell程序需要等待各併發子程序的結束返回

echo finish

file=

$1while

true;do

awk''$1|

grep -v "^$"

|sort

|uniq -c > /tmp/tmp.log

exec

< /tmp/tmp.log

while

read line;

do ip=

`echo $line |

awk''

` count=

`echo $line |

awk`

if[$count -gt 500 ]&&[

`iptables -nl |

grep

"$ip"

|wc -l`

-lt 1 ]

;then

iptables -i input -s $ip -j drop

echo

"$line is dropped"

>> /tmp/droplist_$(

date +%f)

.log

fidone

sleep 3600

done

#!/bin/sh

myuser=root

mypass=123456

mycmd=

"mysql -u$myuser -p$mypass -e"

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 -e"

mydmp=

"mysqldump -u$myuser -p$mypass"

[! -d $dbpath]&&

mkdir

$dbpath

for db in

`$mycmd "show databases;"

|sed

'1d'

|egrep -v "mysql|schema|sys"`;

doif

[ -z `

echo $db|

grep

"test"` ]

;then

# 不包含test字串

$mydmp

$db|

gzip

>

$dbpath/$_$(

date +%f)

.sql.gz

fidone

注意文中包含字串的判斷可有多種方式shell判斷字串包含關係的幾種方法

其中「$a =~ $b」是判斷a包含b最簡單的方式。

find /var/html/www -type f |

xargs md5sum > /opt/checksum.bak

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 /opt/filename.*

* /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

# 引數說明

-l 密碼長度

-d 數字的數量

-c 小寫字母的數量

-c 大寫字母的數量

-s 特殊字元的數量

/path/script.sh

/bin/sh /path/script.sh

系統啟動乙個子shell執行呼叫的指令碼(生成新的pid——子shell)。子shell執行的時候父shell處於sleep狀態(s)。子shell執行完畢後返回到父shell。子shell可以繼承父shell的環境變數,但反之不然。

exec /path/script.sh
被呼叫的指令碼與父指令碼在同乙個shell內執行(不產生新的pid),但使用exec呼叫乙個新指令碼後,父指令碼中exec之後的內容就不會再執行了——變身。

source /path/script.sh

. /path/script.sh

source方式開啟的指令碼和父指令碼在同乙個shell中執行(不產生新的pid)。source呼叫乙個新指令碼,執行完成後,父指令碼source之後的內容還會再執行。

exec

while

read line;

doecho

$line

done

cat

file

|while

read line;

doecho

$line

done

while

read line;

doecho

$line

done

<

file

for line in

`cat test.txt`;do

echo

$line

done

測試表示式符號

[ ]test

[[ ]]

(())

邊界是否需要空格yy

yn支援的邏輯運算子

!,-a,-o

!,-a,-o

!,&&,┃┃

!,&&,┃┃

支援的算數運算子

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

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

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

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

字串比較

=,==,!=

=,==,!=

=,==,!=

=,==,!=

是否支援通配*nn

yn

Python實現運維案例

python是一種跨平台程式語言,在多種平台都能得到很好的支援,在各種平台環境的運維過程中,有些工作是很繁瑣重複的工作,可以編寫指令碼作為工具輔助運維工作,比如linux中使用shell指令碼,但是shell指令碼編寫 除錯比較困難,支援的輔助庫少,編寫稍微複雜些的功能就比較耗時 容易出錯了。本文通...

Linux運維是什麼?linux運維的基礎知識

如果您對運維行業了解一些,應該會知道,現在的運維早已不是早年的 睡機房 往辦公室打眼一看,分不清是運維攻城獅還是開發程式猿,但是,運維這行也是春天到了,今天linux,明天雲計算的,各種新鮮概念層出不窮,那麼,linux運維是什麼?雲計算運維又是什麼?linux運維需要掌握的基礎知識 1 shell...

Linux運維筆記

總核數 物理cpu個數 x 每顆物理cpu的核數 總邏輯cpu數 物理cpu個數 x 每顆物理cpu的核數 x 超執行緒數 檢視物理cpu個數 cat proc cpuinfo grep physical id sort uniq wc l 檢視每個物理cpu中core的個數 即核數 cat pro...