溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

日常運(yùn)維工作shell腳本案例

發(fā)布時(shí)間:2020-07-02 06:20:27 來(lái)源:網(wǎng)絡(luò) 閱讀:21607 作者:2012hjtwyf 欄目:建站服務(wù)器



1、list_sys_status.sh
顯示系統(tǒng)使用的以下信息:
主機(jī)名、IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS服務(wù)器IP地址信息


#!/bin/bash
IP=`ifconfig eth0 | head -2 | tail -1 | awk '{print $2}' | awk -F":" '{print $2}'`
ZW=` ifconfig eth0 | head -2 | tail -1 | awk '{print $3}' | awk -F":" '{print $2}'`
GW=`route -n | tail -1 | awk '{print $2}'`
HN=`hostname`
DNS=`head -1 /etc/resolv.conf | awk '{print $2}'`
echo '此機(jī)IP地址是' $IP
echo '此機(jī)子網(wǎng)掩碼是' $ZW
echo '此機(jī)網(wǎng)關(guān)是' $GW
echo '此機(jī)主機(jī)名是' $HN
echo '此機(jī)DNS是' $DNS

2、mysqlbak.sh備份數(shù)據(jù)庫(kù)目錄腳本


#!/bin/bash
DAY=`date +%Y%m%d`
SIZE=`du -sh /var/lib/mysql`
echo "Date: $DAY" >> /tmp/dbinfo.txt
echo "Data Size: $SIZE" >> /tmp/dbinfo.txt
cd /opt/dbbak &> /dev/null || mkdir /opt/dbbak
tar zcf /opt/dbbak/mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt &> /dev/null
rm -f /tmp/dbinfo.txt

crontab-e
55 23 */3 * * /opt/dbbak/dbbak.sh

3、每周日半夜23點(diǎn)半,對(duì)數(shù)據(jù)庫(kù)服務(wù)器上的webdb庫(kù)做完整備份
每備份文件保存到系統(tǒng)的/mysqlbak目錄里
用系統(tǒng)日期做備份文件名 webdb-YYYY-mm-dd.sql
每次完整備份后都生成新的binlog日志
把當(dāng)前所有的binlog日志備份到/mysqlbinlog目錄下


#mkdir /mysqlbak 
#mkdir /mysqlbinlog
#service mysqld start
cd /shell
#vi webdb.sh
#!/bin/bash
day=`date +%F`
mysqldump -hlocalhost -uroot -p123 webdb > /mysqlbak/webdb-${day}.sql
mysql -hlocalhost -uroot -p -e "flush logs"
tar zcf /mysqlbinlog.tar.gz /var/lib/mysql/mysqld-bin.0*
#chmod +x webdb.sh 
#crontab -e
30 23 * * 7 /shell/webdb.sh


4、very.ser.sh(檢查任意一個(gè)服務(wù)的運(yùn)行狀態(tài))

只檢查服務(wù)vsftpd httpd sshd crond、mysql中任意一個(gè)服務(wù)的狀態(tài)

如果不是這5個(gè)中的服務(wù),就提示用戶能夠檢查的服務(wù)名并退出腳本
如果服務(wù)是運(yùn)行著的就輸出 "服務(wù)名 is running"
如果服務(wù)沒(méi)有運(yùn)行就啟動(dòng)服務(wù)


方法1:使用read寫腳本
#!/bin/bash
read -p "請(qǐng)輸入你的服務(wù)名:" service
if [ $service != 'crond' -a $service != 'httpd' -a $service != 'sshd' -a $service != 'mysqld' -a $service != 'vsftpd' ];then
echo "只能夠檢查'vsftpd,httpd,crond,mysqld,sshd"
exit 5
fi
service $service status &> /dev/null

if [ $? -eq 0 ];thhen
echo "服務(wù)在線"
else
service $service start
fi

方法2:使用位置變量來(lái)寫腳本
if [ -z $1 ];then
echo "You mast specify a servername!"
echo "Usage: `basename$0` servername"
exit 2
fi
if [ $1 == "crond" ] || [ $1 == "mysql" ] || [ $1 == "sshd" ] || [ $1 == "httpd" ] || [ $1 == "vsftpd" ];then
service $1 status &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is running"
else
service $1 start
fi
else
echo "Usage:`basename $0` server name"
echo "But only check for vsftpd httpd sshd crond mysqld" && exit2
fi


5、pc_noline.sh
輸出192.168.1.0/24網(wǎng)段內(nèi)在線主機(jī)的ip地址
統(tǒng)計(jì)不在線主機(jī)的臺(tái)數(shù),
并把不在線主機(jī)的ip地址和不在線時(shí)的時(shí)間保存到/tmp/ip.txt文件里


#!/bin/bash
ip=192.168.1.
j=0
for i in `seq 10 12`
do
ping -c 3 $ip$i &> /dev/null
if [ $? -eq 0 ];then
echo 在線的主機(jī)有:$ip$i
else
let j++
echo $ip$i >> /tmp/ip.txt
date >> /tmp/ip.txt
fi
done
echo 不在線的主機(jī)臺(tái)數(shù)有 $j


6、一個(gè)簡(jiǎn)單的網(wǎng)站論壇測(cè)試腳本

用交互式的輸入方法實(shí)現(xiàn)自動(dòng)登錄論壇數(shù)據(jù)庫(kù),修改用戶密碼


[root@test1 scripts]# vim input.sh

#!/bin/bash

End=ucenter_members
MYsql=/home/lnmp/mysql/bin/mysql

read -p "Enter a website directory : " webdir
WebPath=/home/WebSer/$webdir/config
echo $WebPath

read -p "Enter dbuser name : " dbuser
echo $dbuser

read -sp "Enter dbuser password : " dbpass

read -p "Enter db name : " dbname
echo $dbname

read -p "Enter db tablepre : " dbtablepre
echo $dbtablepre

Globalphp=`grep "tablepre*" $WebPath/config_global.php |cut -d "'" -f8`
Ucenterphp=`grep "UC_DBTABLEPRE*" $WebPath/config_ucenter.php |cut -d '.' -f2 | awk -F "'" '{print $1}'`

if [ $dbtablepre == $Globalphp ] && [ $dbtablepre == $Ucenterphp ];then

     Start=$dbtablepre
     Pre=`echo $Start$End`

     read -p "Enter you name : " userset
     echo $userset

     Result=`$MYsql -u$dbuser -p$dbpass $dbname -e "select username from $Pre where username='$userset'\G"|cut -d ' ' -f2|tail -1`
     echo $Result
     if [ $userset == $Result ];then
           read -p "Enter your password : " userpass
           passnew=`echo -n $userpass|openssl md5|cut -d ' ' -f2`

           $MYsql -u$dbuser -p$dbpass $dbname -e "update $Pre set password='$passnew' where username='$userset';"
           $MYsql -u$dbuser -p$dbpass $dbname -e "flush privileges;"
     else
           echo "$userset is not right user!"
           exit 1
     fi
else
     exit 2
fi


7、slave_status.sh(檢查mysql主從從結(jié)構(gòu)中從數(shù)據(jù)庫(kù)服務(wù)器的狀態(tài))
1)本機(jī)的數(shù)據(jù)庫(kù)服務(wù)是否正在運(yùn)行
2)能否與主數(shù)據(jù)庫(kù)服務(wù)器正常通信
3)能否使用授權(quán)用戶連接數(shù)據(jù)庫(kù)服務(wù)器
4)本機(jī)的slave_IO進(jìn)程是否處于YES狀態(tài)
      本機(jī)的slave_SQL進(jìn)程是否處于YES狀態(tài)


[root@test1 scripts]# vim test.sh

#!/bin/bash
netstat -tulnp | grep :3306 > /dev/null
if [ $? -eq 0 ];then
echo "服務(wù)正在運(yùn)行" 
else
service mysqld start
fi
ping -c 3 192.168.1.100 &> /dev/null
if [ $? -eq 0 ];then
echo "網(wǎng)絡(luò)連接正常" 
else
echo "網(wǎng)絡(luò)連接失敗"
fi
mysql -h292.168.1.100 -uroot -p123456 &> /dev/null
if [ $? -eq 0 ];then
echo "數(shù)據(jù)庫(kù)連接成功" 
else
echo "數(shù)據(jù)庫(kù)連接失敗"
fi
IO= mysql -uroot -p123 -e "show slave status\G" | grep Slave_IO_Running | awk '{print $2}' > /dev/null
SQL= mysql -uroot -p123 -e "show slave status\G" | grep Slave_SQL_Running | awk '{print $2}' /dev/null
if [ IO==Yes ] && [ SQL==Yes ];then
echo “IO and SQL 連接成功”
else
echo "IO線程和SQL線程連接失敗"
fi



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI