7个日常实用的Shell拿来就用脚本实例-《shell脚本》

admin 2025-11-06 14:34:00 系统网络 来源:ZONE.CI 全球网 0 阅读模式
  • 1、list_sys_status.sh
  • 2、mysqlbak.sh备份数据库目录脚本
  • 3、每周日半夜23点半,对数据库服务器上的webdb库做完整备份
  • 4、very.ser.sh(检查任意一个服务的运行状态)
    • 方法1:使用read写脚本
    • 方法2:使用位置变量来写脚本
  • 5、pc_noline.sh
  • 6、一个简单的网站论坛测试脚本
  • 7、slave_status.sh(检查mysql主从从结构中从数据库服务器的状态)

    1、list_sys_status.sh

    显示系统使用的以下信息:主机名、IP地址、子网掩码、网关、DNS服务器IP地址信息

    1. #!/bin/bash
    2. IP=`ifconfig eth0 | head -2 | tail -1 | awk '{print $2}' | awk -F":" '{print $2}'`
    3. ZW=` ifconfig eth0 | head -2 | tail -1 | awk '{print $3}' | awk -F":" '{print $2}'`
    4. GW=`route -n | tail -1 | awk '{print $2}'`
    5. HN=`hostname`
    6. DNS=`head -1 /etc/resolv.conf | awk '{print $2}'`
    7. echo '此机IP地址是' $IP
    8. echo '此机子网掩码是' $ZW
    9. echo '此机网关是' $GW
    10. echo '此机主机名是' $HN
    11. echo '此机DNS是' $DNS

    2、mysqlbak.sh备份数据库目录脚本

    1. #!/bin/bash
    2. DAY=`date +%Y%m%d`
    3. SIZE=`du -sh /var/lib/mysql`
    4. echo "Date: $DAY" >> /tmp/dbinfo.txt
    5. echo "Data Size: $SIZE" >> /tmp/dbinfo.txt
    6. cd /opt/dbbak &> /dev/null || mkdir /opt/dbbak
    7. tar zcf /opt/dbbak/mysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt &> /dev/null
    8. rm -f /tmp/dbinfo.txt
    9. crontab-e
    10. 55 23 */3 * * /opt/dbbak/dbbak.sh

    3、每周日半夜23点半,对数据库服务器上的webdb库做完整备份

    每备份文件保存到系统的/mysqlbak目录里用系统日期做备份文件名 webdb-YYYY-mm-dd.sql每次完整备份后都生成新的binlog日志把当前所有的binlog日志备份到/mysqlbinlog目录下

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

    4、very.ser.sh(检查任意一个服务的运行状态)

    只检查服务vsftpd httpd sshd crond、mysql中任意一个服务的状态如果不是这5个中的服务,就提示用户能够检查的服务名并退出脚本如果服务是运行着的就输出 “服务名 is running”如果服务没有运行就启动服务

    方法1:使用read写脚本

    1. #!/bin/bash
    2. read -p "请输入你的服务名:" service
    3. if [ $service != 'crond' -a $service != 'httpd' -a $service != 'sshd' -a $service != 'mysqld' -a $service != 'vsftpd' ];then
    4. echo "只能够检查'vsftpd,httpd,crond,mysqld,sshd"
    5. exit 5
    6. fi
    7. service $service status &> /dev/null
    8. if [ $? -eq 0 ];thhen
    9. echo "服务在线"
    10. else
    11. service $service start
    12. fi

    方法2:使用位置变量来写脚本

    1. if [ -z $1 ];then
    2. echo "You mast specify a servername!"
    3. echo "Usage: `basename$0` servername"
    4. exit 2
    5. fi
    6. if [ $1 == "crond" ] || [ $1 == "mysql" ] || [ $1 == "sshd" ] || [ $1 == "httpd" ] || [ $1 == "vsftpd" ];then
    7. service $1 status &> /dev/null
    8. if [ $? -eq 0 ];then
    9. echo "$1 is running"
    10. else
    11. service $1 start
    12. fi
    13. else
    14. echo "Usage:`basename $0` server name"
    15. echo "But only check for vsftpd httpd sshd crond mysqld" && exit2
    16. fi

    5、pc_noline.sh

    输出192.168.1.0/24网段内在线主机的ip地址统计不在线主机的台数,并把不在线主机的ip地址和不在线时的时间保存到/tmp/ip.txt文件里

    1. #!/bin/bash
    2. ip=192.168.1.
    3. j=0
    4. for i in `seq 10 12`
    5. do
    6. ping -c 3 $ip$i &> /dev/null
    7. if [ $? -eq 0 ];then
    8. echo 在线的主机有:$ip$i
    9. else
    10. let j++
    11. echo $ip$i >> /tmp/ip.txt
    12. date >> /tmp/ip.txt
    13. fi
    14. done
    15. echo 不在线的主机台数有 $j

    6、一个简单的网站论坛测试脚本

    用交互式的输入方法实现自动登录论坛数据库,修改用户密码

    1. [root@test1 scripts]# vim input.sh
    2. #!/bin/bash
    3. End=ucenter_members
    4. MYsql=/home/lnmp/mysql/bin/mysql
    5. read -p "Enter a website directory : " webdir
    6. WebPath=/home/WebSer/$webdir/config
    7. echo $WebPath
    8. read -p "Enter dbuser name : " dbuser
    9. echo $dbuser
    10. read -sp "Enter dbuser password : " dbpass
    11. read -p "Enter db name : " dbname
    12. echo $dbname
    13. read -p "Enter db tablepre : " dbtablepre
    14. echo $dbtablepre
    15. Globalphp=`grep "tablepre*" $WebPath/config_global.php |cut -d "'" -f8`
    16. Ucenterphp=`grep "UC_DBTABLEPRE*" $WebPath/config_ucenter.php |cut -d '.' -f2 | awk -F "'" '{print $1}'`
    17. if [ $dbtablepre == $Globalphp ] && [ $dbtablepre == $Ucenterphp ];then
    18. Start=$dbtablepre
    19. Pre=`echo $Start$End`
    20. read -p "Enter you name : " userset
    21. echo $userset
    22. Result=`$MYsql -u$dbuser -p$dbpass $dbname -e "select username from $Pre where username='$userset'\G"|cut -d ' ' -f2|tail -1`
    23. echo $Result
    24. if [ $userset == $Result ];then
    25. read -p "Enter your password : " userpass
    26. passnew=`echo -n $userpass|openssl md5|cut -d ' ' -f2`
    27. $MYsql -u$dbuser -p$dbpass $dbname -e "update $Pre set password='$passnew' where username='$userset';"
    28. $MYsql -u$dbuser -p$dbpass $dbname -e "flush privileges;"
    29. else
    30. echo "$userset is not right user!"
    31. exit 1
    32. fi
    33. else
    34. exit 2
    35. fi

    7、slave_status.sh(检查mysql主从从结构中从数据库服务器的状态)

    1)本机的数据库服务是否正在运行2)能否与主数据库服务器正常通信3)能否使用授权用户连接数据库服务器4)本机的slave_IO进程是否处于YES状态本机的slave_SQL进程是否处于YES状态

    1. [root@test1 scripts]# vim test.sh
    2. #!/bin/bash
    3. netstat -tulnp | grep :3306 > /dev/null
    4. if [ $? -eq 0 ];then
    5. echo "服务正在运行"
    6. else
    7. service mysqld start
    8. fi
    9. ping -c 3 192.168.1.100 &> /dev/null
    10. if [ $? -eq 0 ];then
    11. echo "网络连接正常"
    12. else
    13. echo "网络连接失败"
    14. fi
    15. mysql -h192.168.1.100 -uroot -p123456 &> /dev/null
    16. if [ $? -eq 0 ];then
    17. echo "数据库连接成功"
    18. else
    19. echo "数据库连接失败"
    20. fi
    21. IO= mysql -uroot -p123 -e "show slave status\G" | grep Slave_IO_Running | awk '{print $2}' > /dev/null
    22. SQL= mysql -uroot -p123 -e "show slave status\G" | grep Slave_SQL_Running | awk '{print $2}' /dev/null
    23. if [ IO==Yes ] && [ SQL==Yes ];then
    24. echo “IO and SQL 连接成功”
    25. else
    26. echo "IO线程和SQL线程连接失败"
    27. fi
    01-shell脚本介绍-《shell脚本》 系统网络

    01-shell脚本介绍-《shell脚本》

    一、shell脚本是什么二、为什么要学shell,而不是其他计算机语言三、学习这门课程的优势四、学了能干什么五、学习什么内容六、学习的技巧七、成长路径八、学习环
    评论:0   参与:  11