shell 指令碼練習2

2021-10-10 01:54:33 字數 2831 閱讀 7334

#!/bin/bash

install_nginx(

)start_nginx(

)stop_nginx(

)reload_nginx(

)while:do

read -p "請輸入您想要執行的操作:<<" cmd

case

$cmd

in start)

start_nginx

;;stop)

stop_nginx

;;restart)

stop_nginx

start_nginx

;;reload)

reload_nginx

;;quit)

exit;;

*)echo

"使用方法:usage: nginx ";;

esac

done

#!/bin/bash

read -p "請輸入您想要建立的使用者數:<<" num

for((i=

1;i<=$num;i++

))do

id hehe$iif[

$? -eq 0 ]

;then

echo

"hehe$i 已經存在"

else

let sum++

pwd=

$(openssl rand -hex 4)

useradd hehe$i

;echo

"$pwd"

|passwd --stdin hehe$i

echo

"成功建立了$sum個使用者"

figrep -w "hehe$i" /tmp/uselist

if[$? -ne 0 ]

;then

echo

"hehe$i

$pwd"

>> /tmp/uselist

fidone

cat /tmp/uselist

實驗三:mysql備份+異地備份指令碼

請開發指令碼實現如下功能:所有功能都需要執行指令碼驗證

準備兩台伺服器,一台為資料庫伺服器,一台為異地備份伺服器

1.通過埠是否監聽判斷mysql 服務是否在執行,若未執行,輸出提示並退出指令碼!若正在執行輸出mysql執行正常

2.通過傳參獲取需要備份的資料庫,將所有獲得的引數儲存在陣列:dblist中

3.使用迴圈遍歷陣列dblist,將資料庫備份在/home/backup目錄下,備份的檔案需要壓縮,檔名需要新增時間戳

4.備份過程需要判斷資料庫是否備份成功!若未備份成功需要傳送郵件通知管理員

5.將每天備份成功的檔案使用scp傳輸到異地備份伺服器的:/opt/mysql_databases_backup目錄下!

6.在使用scp 傳送檔案過程中產生的互動,需要使用expect來自動完成

7.新增計畫任務,指令碼每天的凌晨兩點執行

#!/bin/bash

date=

$(date

"+%y-%m-%d"

)#驗證服務是否正常執行

netstat -lptnu|

grep 3306 >/dev/nullif[

$? -eq 0 ]

;then

echo

"mysql 正在執行"

else

echo

"mysql 未執行"

exit

fi#輸出當前所有的db

cur_db=

$(mysql -e "show databases;"

|sed

'1d'

)echo

"當前存在的db包括:$"

#獲取標準輸入的值

read -p "需要備份的資料庫:<<" db

#建立備份目錄if[

! -d /home/backup/ ]

;then

mkdir -p /home/backup/

fi#遍歷

dblist=

($db

)for db in

$do

mysqldump -ubackup -p123 -h 192.168.10.130 -b $db --skip-lock-tables > /home/backup/$db.sql

cd /home/backup/

tar zcvf $date

.$db.tar.gz $db.sql

#驗證備份檔案

find /home/backup -name $date

.$db.tar.gz > /dev/null

if[$? -eq 0 ]

;then

echo

"$date.$db.tar.gz 備份成功"

echo

"mysql備份成功了!!"

|mail -s "mysql 備份" [email protected]

else

echo

"mysql備份失敗!!"

|mail -s "mysql 備份" [email protected]

fidone

#scp遠端備份

/usr/bin/expect <<

eofspawn scp /home/backup/$date.*.tar.gz 192.168.10.131:/opt/mysql_databases_backup

expect "password"

send "123456\n"

expect eof

eof

shell指令碼小練習(2)

1.通過for迴圈計算10的階乘 bin bash sum 1 for i 1 i 10 i 用類c語言的方法 for i in for i in seq 1 10 do sum expr sum i sum sum i done echo sum 注意 suml i之間的空格,如果寫成 suml ...

shell指令碼練習

顯示系統資訊 bin bash descrition show system information echo os version is cat etc centos release echo kernel version is uname r echo cpu type lscpu grep m...

shell 指令碼練習

bin bash echo hello world chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼for file in ls etc 或for file in ls etc val expr 2 2 注意,這時的計算,2 2運算子和數字之間一定要加空格判斷字串是...