7个常用的Sheel脚本

本篇文章为大家分享一下常用的shell脚本,其中包括:检测硬件信息、数据库备份等等。

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 脚本的需求案例,也欢迎在这篇文章进行留言,案例多的话下次就整理个脚本合集给大家分享。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/13514.html

(0)
晴川运维晴川运维
上一篇 2025年9月22日
下一篇 2025年9月22日

相关推荐

  • PowerShell文件夹共享及磁盘映射

    PowerShell是一种功能强大的脚本语言和shell程序框架,主要用于Windows计算机方便管理员进行系统管理并有可能在未来取代Windows上的默认命令提示符,下面为大家详…

    Linux系统 2025年6月4日
  • 通过命令行的方式查找公网动态 IP 地址

    公网IP是运行商给你的IP,是互联网上的一个“门牌号”。内网IP一般是你的局域网IP,比如你家有路由器,就必须有一个内网IP,是内网的一个“门牌号”。“门牌号”是“唯一”的,使别人…

    Linux系统 2025年6月24日
  • Kali Linux安装 SSH 服务具体步骤

    SSH是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信…

    Linux系统 2025年9月24日
  • Linux中mysql定时备份脚本

    在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份,本篇文章重点为大家讲解一下Linux中mysql定时备份脚本。 1. 创建备份脚本 备份脚本: #!/bin…

    Linux系统 2025年6月4日
  • 细说SQLite中表达式

    SQLite是一种C语言库,它实现了一个 小型, 快速, 自包含, 高可靠性, 功能齐全的SQL数据库引擎。SQLite是世界上最常用的数据库引擎。SQLite内置于所有手机和大多…

    Linux系统 2025年6月8日
  • Linux下防御SYN Flood工具

    SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。 如果…

    Linux系统 2025年9月22日
  • Linux下使用php访问sql server

    Linux下如何使用php访问sql server?本篇文章重点为大家讲解一下Linux下使用php访问sql server具体方法,有需要的小伙伴可以参考一下。 安装freeID…

    Linux系统 2025年9月23日
  • Linux下crontab使用方法

    Linux crontab是用来定期执行程序的命令,当安装完成操作系统之后,默认便会启动此任务调度命令,crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自…

    Linux系统 2025年6月8日
  • CentOS 8上安装GCC具体方法

    Linux系统下的gcc(GUN C Complier)是GUN的缩写。 在Linux和Unix下,一般我们使用gcc进行编译 c和c++代码,本篇文章重点为大家讲解一下CentO…

    Linux系统 2025年6月4日
  • 使用Shell脚本的方式监控WEB服务状态

    实际工作中我们需要知道部署在服务器上的应用有没有问题,但是人为的操作太麻烦,最简单的方式就是sehll脚本的方式,下面为大家分享一下使用Shell脚本监控WEB服务状态具体方法。 …

    Linux系统 2025年6月30日

发表回复

登录后才能评论