溫馨提示×

溫馨提示×

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

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

常用的Sheel腳本有哪些

發(fā)布時(shí)間:2022-02-19 10:46:04 來源:億速云 閱讀:132 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)常用的Sheel腳本有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。


1、list_sys_status.sh

顯示系統(tǒng)使用的以下信息:

主機(jī)名、IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS服務(wù)器IP地址信息

#!/bin/bashIP=`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地址是' $IPecho '此機(jī)子網(wǎng)掩碼是' $ZWecho '此機(jī)網(wǎng)關(guān)是' $GWecho '此機(jī)主機(jī)名是' $HNecho '此機(jī)DNS是' $DNS

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

#!/bin/bashDAY=`date +%Y%m%d`
SIZE=`du -sh /var/lib/mysql`echo "Date: $DAY" >> /tmp/dbinfo.txtecho "Data Size: $SIZE" >> /tmp/dbinfo.txtcd /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-e55 23 */3 * * /opt/dbbak/dbbak.sh

3、每周日半夜23點(diǎn)半,對(duì)數(shù)據(jù)庫服務(wù)器上的webdb庫做完整備份

每備份文件保存到系統(tǒng)的/mysqlbak目錄里

用系統(tǒng)日期做備份文件名 webdb-YYYY-mm-dd.sql

每次完整備份后都生成新的binlog日志

把當(dāng)前所有的binlog日志備份到/mysqlbinlog目錄下

#mkdir /mysqlbak#mkdir /mysqlbinlog#service mysqld startcd /shell#vi webdb.sh#!/bin/bashday=`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 -e30 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ù)沒有運(yùn)行就啟動(dòng)服務(wù)

方法1:使用read寫腳本
#!/bin/bashread -p "請輸入你的服務(wù)名:" serviceif [ $service != 'crond' -a $service != 'httpd' -a $service != 'sshd' -a $service != 'mysqld' -a $service != 'vsftpd' ];thenecho "只能夠檢查'vsftpd,httpd,crond,mysqld,sshd"exit 5fiservice $service status &> /dev/nullif [ $? -eq 0 ];thhenecho "服務(wù)在線"elseservice $service startfi
方法2:使用位置變量來寫腳本
if [ -z $1 ];thenecho "You mast specify a servername!"echo "Usage: `basename$0` servername"exit 2fiif [ $1 == "crond" ] || [ $1 == "mysql" ] || [ $1 == "sshd" ] || [ $1 == "httpd" ] || [ $1 == "vsftpd" ];thenservice $1 status &> /dev/nullif [ $? -eq 0 ];thenecho "$1 is running"elseservice $1 startfielseecho "Usage:`basename $0` server name"echo "But only check for vsftpd httpd sshd crond mysqld" && exit2fi

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/baship=192.168.1.
j=0for i in `seq 10 12`doping -c 3 $ip$i &> /dev/nullif [ $? -eq 0 ];thenecho 在線的主機(jī)有:$ip$ielselet j++echo $ip$i >> /tmp/ip.txt
date >> /tmp/ip.txtfidoneecho 不在線的主機(jī)臺(tái)數(shù)有 $j

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

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

[root@test1 scripts]# vim input.sh#!/bin/bashEnd=ucenter_members
MYsql=/home/lnmp/mysql/bin/mysqlread -p "Enter a website directory : " webdir
WebPath=/home/WebSer/$webdir/configecho $WebPathread -p "Enter dbuser name : " dbuserecho $dbuserread -sp "Enter dbuser password : " dbpassread -p "Enter db name : " dbnameecho $dbnameread -p "Enter db tablepre : " dbtablepreecho $dbtablepreGlobalphp=`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
    fielse    exit 2fi

7、slave_status.sh(檢查mysql主從從結(jié)構(gòu)中從數(shù)據(jù)庫服務(wù)器的狀態(tài))

1)本機(jī)的數(shù)據(jù)庫服務(wù)是否正在運(yùn)行

2)能否與主數(shù)據(jù)庫服務(wù)器正常通信

3)能否使用授權(quán)用戶連接數(shù)據(jù)庫服務(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/bashnetstat -tulnp | grep :3306 > /dev/nullif [ $? -eq 0 ];thenecho "服務(wù)正在運(yùn)行"elseservice mysqld startfiping -c 3 192.168.1.100 &> /dev/nullif [ $? -eq 0 ];thenecho "網(wǎng)絡(luò)連接正常"elseecho "網(wǎng)絡(luò)連接失敗"fimysql -h292.168.1.100 -uroot -p123456 &> /dev/nullif [ $? -eq 0 ];thenecho "數(shù)據(jù)庫連接成功"elseecho "數(shù)據(jù)庫連接失敗"fiIO= 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/nullif [ IO==Yes ] && [ SQL==Yes ];thenecho “IO and SQL 連接成功”elseecho "IO線程和SQL線程連接失敗"fi


感謝各位的閱讀!關(guān)于“常用的Sheel腳本有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

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

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

AI