實驗一:Nginx服務管理腳本
請準備一臺服務器,在服務器上使用原始碼安裝nginx,成功啟動并訪問到nginx
為更方便的啟動或者停止 nginx,請請根據要求,撰寫腳本實作如下的功能:
1.定義啟動Nginx函式,
要求:
函式中需要判斷nginx 的pid檔案是否存在,若存在則提示: Nginx已經啟動…若Nginx未啟動,則執行檢測組態檔,檢測通過后執行啟動nginx
啟動后判斷nginx的pid檔案是否創建成功,若創建成功,則提示nginx啟動成功!否則提示nginx啟動失敗
2.定義關閉 Nginx函式,
要求:
可以正確通過pid檔案判斷nginx服務是否已經停止,若已停止,則提示:nginx已經停止…
nginx在停止后判斷pid檔案是否已經成功被洗掉,若成功洗掉則提示: nginx停止成功
3.定義重新載入 Nginx函式
4.判斷用戶的傳遞的引數,可以實作:start、stop、restart、reload和其他的引數判斷,
傳遞對應的引數,實作對應的功能,若傳遞錯誤的引數,則提示用戶使用方法:Usage: nginx {start]stop/lrestartlreload}
#!/bin/bash
install_nginx(){
groupadd www
useradd -s /sbin/nologin -g www www
yum install gcc-c++ pcre pcre-devel zlib zlib-devel
cd /usr/local/src
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --user=www --group=www --prefix=/usr/local/nginx
make && make install
}
start_nginx(){
netstat -lptnu|grep 80
if [ $? -eq 0 ]; then
echo "nginx 已經正常運行了"
else
/usr/local/nginx/sbin/nginx
fi
}
stop_nginx(){
pgrep nginx
if [ $? -eq 0 ]; then
echo "開始停止服務...."
pkill nginx
fi
}
reload_nginx(){
/usr/local/nginx/sbin/nginx -s reload
}
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 {start|stop|restart|reload}"
;;
esac
done
實驗二:批量創建系統用戶腳本
請開發腳本實作如下功能,所有功能都需要執行腳本驗證:1.通過互動獲取需要創建用戶的數量
2.用戶創建之前要判斷用戶是否已經存在,若用戶已經存在則跳過
3.在創建用戶的同時為用戶設定密碼,密碼為隨機字串,不得少于8位
4.最后在創建完畢后需要有提示:成功創建多少個用戶,創建失敗有多少用戶
5.所有創建成功的用戶名和密碼要保存在:userlist檔案中!
#!/bin/bash
read -p "請輸入您想要創建的用戶數:<<" num
for((i=1;i<=$num;i++))
do
id hehe$i
if [ $? -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個用戶"
fi
grep -w "hehe$i" /tmp/uselist
if [ $? -ne 0 ]; then
echo "hehe$i $pwd" >> /tmp/uselist
fi
done
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/null
if [ $? -eq 0 ]; then
echo "mysql 正在運行"
else
echo "mysql 未運行"
exit
fi
#輸出當前所有的db
cur_db=$(mysql -e "show databases;"|sed '1d')
echo "當前存在的db包括:${cur_db}"
#獲取標準輸入的值
read -p "需要備份的資料庫:<<" db
#創建備份目錄
if [ ! -d /home/backup/ ]; then
mkdir -p /home/backup/
fi
#遍歷
dblist=($db)
for db in ${dblist[@]}
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 備份" 34704286@qq.com
else
echo "mysql備份失敗!!"|mail -s "mysql 備份" 34704286@qq.com
fi
done
#scp遠程備份
/usr/bin/expect <<eof
spawn scp /home/backup/$date.*.tar.gz 192.168.10.131:/opt/mysql_databases_backup
expect "password"
send "123456\n"
expect eof
eof
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196357.html
標籤:java
