7 個日常實用的 Shell 拿來就用指令碼例項!
導讀 | 今天來給大家分享 7 個日常實用 ; |
1、list_sys_status.sh
顯示系統使用的以下資訊:
主機名、IP地址、子網掩碼、閘道器、DNS伺服器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 '此機IP地址是' $IP echo '此機子網掩碼是' $ZW echo '此機閘道器是' $GW echo '此機主機名是' $HN echo '此機DNS是' $DNS
2、mysqlbak.sh備份資料庫目錄
#!/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點半,對資料庫伺服器上的webdb庫做完整備份
每備份檔案儲存到系統的/mysqlbak目錄裡
用系統日期做備份檔名 webdb-YYYY-mm-dd.sql
每次完整備份後都生成新的binlog日誌
把當前所有的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(檢查任意一個服務的執行狀態)
只檢查服務vsftpd httpd sshd crond、mysql中任意一個服務的狀態
如果不是這5箇中的服務,就提示使用者能夠檢查的服務名並退出指令碼
如果服務是執行著的就輸出 "服務名 is running"
如果服務沒有執行就啟動服務
方法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 fi
方法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
5、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
6、一個簡單的網站論壇測試指令碼
用互動式的輸入方法實現自動登入論壇資料庫,修改使用者密碼
[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主從從結構中從資料庫伺服器的狀態)
1)本機的資料庫服務是否正在執行
2)能否與主資料庫伺服器正常通訊
3)能否使用授權使用者連線資料庫伺服器
4)本機的slave_IO程式是否處於YES狀態
本機的slave_SQL程式是否處於YES狀態
[root@test1 scripts]# vim test.sh #!/bin/bash netstat -tulnp | grep :3306 > /dev/null if [ $? -eq 0 ];then echo "服務正在執行" else service mysqld start fi ping -c 3 192.168.1.100 &> /dev/null if [ $? -eq 0 ];then echo "網路連線正常" else echo "網路連線失敗" fi mysql -h192.168.1.100 -uroot -p123456 &> /dev/null if [ $? -eq 0 ];then echo "資料庫連線成功" else echo "資料庫連線失敗" 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
以上就是今天分享的全部內容;
對了,如果大家有 Shell 指令碼的需求案例,也歡迎在這篇文章進行留言,案例多的話下次就整理個指令碼合集給大家分享。
原文來自: :
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2778500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 14 個 SQL 拿來就用語句例項!SQL
- shell指令碼例項指令碼
- 幾例實用的Shell指令碼指令碼
- shell指令碼例項(2)指令碼
- 一個shell 指令碼用來同步表用的指令碼
- 9個實用shell指令碼指令碼
- 分享兩個實用的shell指令碼指令碼
- 日常實用指令碼整理指令碼
- Bash Shell指令碼中的陣列使用例項指令碼陣列
- 3個例項介紹shell指令碼中幾個特殊引數的用法指令碼
- shell指令碼舉例指令碼
- 直接拿來用 九個超實用的PHP程式碼片段(二)PHP
- 馬哥分享的25段shell指令碼程式碼,日常工作基本夠用指令碼
- 用shell指令碼來給mysql加索引指令碼MySql索引
- Shell指令碼應用兩個例子指令碼
- shell 指令碼注意事項指令碼
- 7個Python實戰專案(附原始碼),拿走就用Python原始碼
- [shell例項]——用指令碼實現向多臺伺服器批量複製檔案(nmap、scp)指令碼伺服器
- 直接拿來用 10個PHP程式碼片段PHP
- 【SHELL】Linux系統 Oracle例項監控、重啟 簡易Shell指令碼LinuxOracle指令碼
- 可以直接拿來用的15個jQuery程式碼片段jQuery
- [指令碼例項]——統計系統資訊指令碼指令碼
- LINUX Shell指令碼程式設計例項詳解(一)上Linux指令碼程式設計
- 博主日常工作中使用的shell指令碼分享指令碼
- 10個Python指令碼來自動化你的日常任務Python指令碼
- 7.shell指令碼程式設計指令碼程式設計
- Shell指令碼應用(三)指令碼
- crontab呼叫oracle的shell指令碼注意事項Oracle指令碼
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- shell入門--第一個shell指令碼指令碼
- Shell指令碼最佳實踐指令碼
- MySQL實時計算QPS,TPS的SHELL指令碼兩例MySql指令碼
- 輕鬆使用“Explain Shell”指令碼來理解 Shell 命令AI指令碼
- 一個比較好的shell指令碼指令碼
- 有點用的linux shell 指令碼Linux指令碼
- 用shell指令碼合併多個檔案內容指令碼
- Shell在日常工作中的應用實踐
- jQuery實現的動態載入指令碼檔案程式碼例項jQuery指令碼