一、list_sys_status.sh
顯示系統使用的如下信息:
主機名、IP地址、子網掩碼、網關、DNS服務器IP地址信息php
#!/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 '此機IP地址是' $IP
echo '此機子網掩碼是' $ZW
echo '此機網關是' $GW
echo '此機主機名是' $HN
echo '此機DNS是' $DNS
二、mysqlbak.sh備份數據庫目錄腳本mysql
#!/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
三、每週日半夜23點半,對數據庫服務器上的webdb庫作完整備份
每備份文件保存到系統的/mysqlbak目錄裏
用系統日期作備份文件名 webdb-YYYY-mm-dd.sql
每次完整備份後都生成新的binlog日誌
把當前全部的binlog日誌備份到/mysqlbinlog目錄下web
#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.shsql
四、very.ser.sh(檢查任意一個服務的運行狀態)
shell
只檢查服務vsftpd httpd sshd crond、mysql中任意一個服務的狀態數據庫
若是不是這5箇中的服務,就提示用戶可以檢查的服務名並退出腳本
若是服務是運行着的就輸出 "服務名 is running"
若是服務沒有運行就啓動服務vim
方法1:使用read寫腳本
#!/bin/bash
read -p "請輸入你的服務名:" 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 "服務在線"
else
service $service start
fibash
或服務器
方法2:使用位置變量來寫腳本
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網絡
五、pc_noline.sh
輸出192.168.1.0/24網段內在線主機的ip地址
統計不在線主機的臺數,
並把不在線主機的ip地址和不在線時的時間保存到/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 在線的主機有:$ip$i
else
let j++
echo $ip$i >> /tmp/ip.txt
date >> /tmp/ip.txt
fi
done
echo 不在線的主機臺數有 $j
六、一個簡單的網站論壇測試腳本
用交互式的輸入方法實現自動登陸論壇數據庫,修改用戶密碼
[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
七、slave_status.sh(檢查mysql主從從結構中從數據庫服務器的狀態)
1)本機的數據庫服務是否正在運行
2)可否與主數據庫服務器正常通訊
3)可否使用受權用戶鏈接數據庫服務器
4)本機的slave_IO進程是否處於YES狀態
本機的slave_SQL進程是否處於YES狀態
[root@test1 scripts]# vim test.sh
#!/bin/bashnetstat -tulnp | grep :3306 > /dev/nullif [ $? -eq 0 ];thenecho "服務正在運行" elseservice mysqld startfiping -c 3 192.168.1.100 &> /dev/nullif [ $? -eq 0 ];thenecho "網絡鏈接正常" elseecho "網絡鏈接失敗"fimysql -h192.168.1.100 -uroot -p123456 &> /dev/nullif [ $? -eq 0 ];thenecho "數據庫鏈接成功" elseecho "數據庫鏈接失敗"fiIO= mysql -uroot -p123 -e "show slave status\G" | grep Slave_IO_Running | awk '{print $2}' > /dev/nullSQL= mysql -uroot -p123 -e "show slave status\G" | grep Slave_SQL_Running | awk '{print $2}' /dev/nullif [ IO==Yes ] && [ SQL==Yes ];thenecho 「IO and SQL 鏈接成功」elseecho "IO線程和SQL線程鏈接失敗"fi