<address id="thnfp"></address>

    <address id="thnfp"><th id="thnfp"><progress id="thnfp"></progress></th></address>
    <listing id="thnfp"><nobr id="thnfp"><meter id="thnfp"></meter></nobr></listing>
    dvbbs
    收藏本頁
    聯系我們
    論壇幫助
    dvbbs

    >> 電腦專業知識交流
    搜一搜相關精彩主題 
    安易免費財務軟件交流論壇專業知識交流電腦知識交流 → Linux生產服務器Shell腳本分享

    您是本帖的第 909 個閱讀者
    樹形 打印
    標題:
    Linux生產服務器Shell腳本分享
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    樓主
      點擊這里發送電子郵件給炙天

    發貼心情
    Linux生產服務器Shell腳本分享
    作為一名Linux/unix系統管理員,我經常遇到人問這個問題:shell能做什么?PHP這么強大,為什么不用PHP來完成工作呢?其實相對于PHP這些開發語言而言,shell主要用于數據庫備份(SVN備份)、計劃任務(crontab)、服務狀態監控、FTP遠程備份等。對于這些任務,shell的強大是大家都公認的,這也是每一個Linux/unix系統管理員的基本之一。現在在Windows 2008里也出現了PowerShell的身影,十分不錯。

    下面我會用我的線上服務器的shell腳本舉例來讓大家了解shell及其用途。

    【目錄】

    1. MySQL的熱備份腳本
    2. 用FTP同步服務器
    3. Keepalived的監控切換腳本
    4. SVN的版本庫的批量備份
    5. 自動監控ADSL并重拔號
    6. Linux批量生成生成帳戶(10月11日更新
    7. 測試局域網內主機是否alive(10月11日更新

    點擊下方的子頁面標題,進入對應的shell腳本頁面進行閱讀。

    ip地址已設置保密
    2011/1/11 11:29:35
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    2
      點擊這里發送電子郵件給炙天

    發貼心情

    一、MySQL的熱備份腳本

    這是MySQL的備份方式之一,腳本如下:

    #!/bin/bash
    PATH=/usr/local/sbin:/usr/bin:/bin
     
    # The Directory of Backup
    BACKDIR=/usr/mysql_backup
    # The Password of MySQL
    ROOTPASS=password
     
    # Remake the Directory of Backup
    rm -rf $BACKDIR
    mkdir -p $BACKDIR
     
    # Get the Name of Database
    DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
    # 偷瞄了下我同事寫腳本的方式,發現他直接將DBLIST一個個手動敲上去了
    # 數據庫少的情況是可以的,如果數據庫是成百以上呢,呵呵
     
    # Backup with Database
    for dbname in $DBLIST
    do
    mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
    done

    許多系統管理員喜歡用mysqldump --opt來備份數據庫,由于比較簡單,我這里就不重復了。

    ip地址已設置保密
    2011/1/11 11:29:46
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    3
      點擊這里發送電子郵件給炙天

    發貼心情

    二、用FTP同步服務器

    許多系統管理員喜歡用rsync同步二臺服務器之間的數據,但我們更喜歡用FTP來實現,其好處是:

    1. FTP比rsync更能耗盡帶寬,所以它更適合同步數據庫(尤其是幾百G的數據)
    2. 配置起來相當方便,尤其是用pureftpd
    3. rsync的優勢是可以快速海量同步小文件,比如二級目錄或三級目錄下的批量圖片等

    基本上FTP和rsync同步各有優勢,看系統管理員的取舍了。以下是本部分要介紹的FTP同步的shell腳本方式:

    FTPOLDDATE=`date +%Y-%m-%d -d '-60 days'`
    #在FTP定義60天間的日期變量,是為了在FTP端保存60天的數據,逾期刪除。
     
    HOST=192.168.4.199
    FTP_USERNAME=db
    FTP_PASSWORD=password
     
    cd ${BACKDIR}/${DATE}
     
    ftp -i -n -v << !
    open ${HOST}
    user ${FTP_USERNAME} ${FTP_PASSWORD}
    bin
    cd ${FTPOLDDATE}
    mdelete *
    cd ..
    rmdir ${FTPOLDDATE}
    mkdir ${DATE}
    cd ${DATE}
    mput *
    bye
    !


    ip地址已設置保密
    2011/1/11 11:29:57
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    4
      點擊這里發送電子郵件給炙天

    發貼心情

    三、Keepalived的監控切換腳本

    實現功能如下:針對Nginx+Keepalived,編寫nginx監控腳本nginx_pid.sh,放置在后臺一直監控nginx進程;如進程消失,嘗試重啟nginx,如是失敗則立即停掉本機的keepalived服務,讓另一臺負載均衡器接手。此腳本詳細內容如下:

    #!/bin/bash 
    while  : 
    do 
    nginxpid=`ps -C nginx --no-header | wc -l` 
     if [ $nginxpid -eq 0 ];then 
     /usr/local/nginx/sbin/nginx 
     sleep 5 
      if [ $nginxpid -eq 0 ];then 
      /etc/init.d/keepalived stop 
      fi 
     fi 
    sleep 5  
    done

    相關說明可參考我發在組網頻道的《企業級WEB的負載均衡高可用之LVS+Keepalived》一文。

    ip地址已設置保密
    2011/1/11 11:30:08
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    5
      點擊這里發送電子郵件給炙天

    發貼心情

    四、SVN的版本庫的批量備份

    實現其功能蠻簡單,主要是用了svnadmin hotcopy,這東東功能很強大,我經常用于svn的版本庫的轉移(順便說一句,上次不小心誤操作將庫刪光了,很輕松的用svnadmin hotcopy將其恢復過來了)。

    for PROJECT in test project svntest
    do
      cd ${SVNDIR}
      ${SVNADMIN} hotcopy ${PROJECT} ${BACKDIR}/${DATE}/${PROJECT} --clean-logs
     
      cd ${BACKDIR}/${DATE}
      tar zcvf ${PROJECT}_svn_${DATE}.tar.gz ${PROJECT} > /dev/null
      rm -rf ${PROJECT}
     
      echo "Repository: ${PROJECT} backup done into ${BACKDIR}/${DATE}/ Successful!"
     >> ${LogFile}
      /bin/sleep 2
    done


    ip地址已設置保密
    2011/1/11 11:30:21
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    6
      點擊這里發送電子郵件給炙天

    發貼心情

    五、自動監控ADSL并重拔號的shell腳本

    公司辦公室的adsl愛掉線,一掉的話網關的gateway就沒了。因此編寫了下列腳本:

    #!/bin/bash
    while :
    do
    if route | tail -l | grep "0.0.0.0"
    then
    &>/dev/null
    else
    adsl-stop
    adsl-start
    fi
    sleep 10
    done

    執行腳本方法: nuhup sh route.sh &

    注意前面要用上nohup,這樣避免root用戶logout時此腳本也退出生效的問題。

    ip地址已設置保密
    2011/1/11 11:31:04
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    7
      點擊這里發送電子郵件給炙天

    發貼心情

    六、Linux批量生成生成帳戶腳本

    此腳本應用于生產環境下生成帳戶,也可生成成百上千個密碼相同的帳戶。腳本代碼如下:

    #!/bin/bash
    for name in tom jerry joe jane
    do
          useradd $name
          echo redhat | passwd --stdin $name
    done

    自己使用的時候,用自己需要的帳戶名列表替換掉這個代碼范例里的tom jerry joe jane等字段即可。密碼都是redhat,可以讓用戶之后自己更改。

    ip地址已設置保密
    2011/1/11 11:31:24
    炙天
    帥哥喲,離線,有人找我嗎?
    等級:論壇游民
    文章:101
    積分:900
    注冊:2011年1月10日
    8
      點擊這里發送電子郵件給炙天

    發貼心情

    七、測試局域網內主機是否alive的小腳本

    此腳本用于檢查192.168.1.100到192.168.1.200之間的主機是否alive。腳本如下:

    #!/bin/bash
    #Checks to see if hosts 192.168.1.100-192.168.1.200 are alive
    for n in {100..200}; do
             host=192.168.1.$n
             ping -c2 $host &>/dev/null
             if [ $? = 0 ]; then
                          echo "$host is UP"
             else
                          echo "$host is DOWN"
             fi
    done

    ※溫馨小提示:注意$?與=之間必須空格。

    ip地址已設置保密
    2011/1/11 11:31:46

     8   8   1/1頁      1    
    網上貿易 創造奇跡! 阿里巴巴 Alibaba
    北京安易天地軟件有限公司北方論壇
    聯系電話:010-51268244 13611231185 QQ:511102924
    Powered By Dvbbs Version 7.1.0 Sp1
    頁面執行時間 0.15625 秒, 5 次數據查詢
    Channel