shell脚本操作实例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: shell脚本操作实例

脚本安装Apache

首先准备源码包和Apache安装包,打包成一个光盘。

挂载光盘

mount /dev/cdrom /media

编写脚本

1. vim httpd_install.sh
2. 
3. #!/bin/bash
4. systemctl stop firewalld
5. systemctl disable firewalld
6. mount /dev/cdrom /media
7. cd /media
8. rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
9. rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm
10. rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm 
11. rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm 
12. rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm
13. rpm -ivh openldap-devel-2.4.40-13.el7.x86_64.rpm 
14. rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm
15. rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
16. rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm 
17. rpm -ivh pcre-8.32-15.el7_2.1.x86_64.rpm
18. tar zxf httpd-2.4.25.tar.gz -C /usr/src &> /dev/null
19. cd /usr/src/httpd-2.4.25/
20. ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &> /dev/null
21. make &> /dev/null && make install &> /dev/null
22. /usr/local/httpd/bin/apachectl restart

编写完成后设置可执行权限

chmod +x httpd_install.sh

执行脚本,等待安装结束后查看结果

./httpd_install.sh

执行后打开浏览器查看可以访问默认浏览器即完成安装。

实现远程备份mysql服务器的数据库

       准备两台MySQL服务器,分别为A1.100和B1.200,在B服务器上远程备份A数据库,在A上建立数据库benet和accp,两台主机关闭防火墙。

关闭防火墙和selinux并配置IP地址

1. [root@mysql ~]# setenforce 0
2. setenforce: SELinux is disabled
3. [root@mysql ~]# systemctl stop firewalld
4. [root@mysql ~]# systemctl disable firewalld
5. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
6. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

在服务器端A上创建两个数据库

1. mysql> create database benet;
2. Query OK, 1 row affected (0.00 sec)
3. 
4. mysql> create database accp;
5. Query OK, 1 row affected (0.00 sec)

在服务器端A上建立一个专用的数据库用户,这里我使用root账户,授予root账户对可以通过远程主机192.168.1.200连接A

1. mysql>  grant all on *.* to 'root'@'192.168.1.200' identified by '123456';
2. Query OK, 0 rows affected (0.00 sec)

在备份主机B上备份测试,查看是否备份成功。

1. [root@mysql ~]# mysqldump -u root -p123456 -h 192.168.1.100 --databases benet > benet.sql
2. Warning: Using a password on the command line interface can be insecure.

在备份主机B上编写脚本,之前需要创建备份目录 /opt/beifen,然后编写脚本。

1. [root@mysql ~]# mkdir -p /opt/beifen
2. [root@mysql ~]# vim mysqlbak.sh
3. 
4. #!/bin/bash
5. my_user="root"
6. my_pass="123456"
7. my_host="192.168.1.100"
8. my_conn="-u $my_user -p$my_pass -h $my_host"
9. my_db1="benet"
10. my_db2="accp"
11. bf_dir="/opt/beifen"
12. bf_cmd="/usr/local/mysql/bin/mysqldump"
13. bf_time=`date +%Y%m%d-%H%M`
14. name_1="$my_db1-$bf_time"
15. name_2="$my_db2-$bf_time"
16. cd $bf_dir
17. $bf_cmd $my_conn --databases $my_db1 > $name.1.sql
18. $bf_cmd $my_conn --databases $my_db2 > $name.2.sql
19. /bin/tar czf $name_1.tar.gz $name_1.sql --remove &> /dev/null
20. /bin/tar czf $name_2.tar.gz $name_2.sql --remove &> /dev/null

设置文件X权限并执行脚本

1. [root@mysql ~]# chmod +x mysqlbak.sh 
2. [root@mysql ~]# ./mysqlbak.sh 
3. Warning: Using a password on the command line interface can be insecure.
4. Warning: Using a password on the command line interface can be insecure.

查看备份结果

1. [root@mysql ~]# ls -lh /opt/beifen
2. total 8.0K
3. -rw-r--r-- 1 root root 45 May 26 17:54 accp-20220526-1754.tar.gz
4. -rw-r--r-- 1 root root 45 May 26 17:54 benet-20220526-1754.tar.gz

接下来可以按照备份要求设置计划任务,以便自动,定期执行备份操作。

移动脚本到备份目录下,设置计划任务

1. [root@mysql ~]# mv mysqlbak.sh /opt/beifen/
2. [root@mysql ~]# crontab -e
3. 00 22 * * * /opt/beifen/mysqlbak.sh

调整时间为21:59:50秒,查看结果

1. [root@mysql ~]# date -s 21:59:50
2. Thu May 26 21:59:50 CST 2022
3. [root@mysql ~]# ls -lh /opt/beifen
4. total 20K
5. -rw-r--r-- 1 root root  45 May 26 17:54 accp-20220526-1754.tar.gz
6. -rw-r--r-- 1 root root  45 May 26 22:00 accp-20220526-2200.tar.gz
7. -rw-r--r-- 1 root root  45 May 26 17:54 benet-20220526-1754.tar.gz
8. -rw-r--r-- 1 root root  45 May 26 22:00 benet-20220526-2200.tar.gz
9. -rwxr-xr-x 1 root root 522 May 26 17:53 mysqlbak.sh

下面通过ChatGPT告诉我们shell脚本是什么

Shell脚本是一种被广泛应用于Unix、Linux等操作系统中的脚本语言,它可以用于系统管理、编程、快速构建原型和自动化任务等。

下面是一个简单的Shell脚本示例:

1. bash
2. #!/bin/bash
3. # This is a comment
4. 
5. echo "Hello World!"

这个脚本可以输出 "Hello World!" 到标准输出中。

解释:

- 第一行 `#!/bin/bash` 是脚本的解释说明,也就是告诉系统这个脚本需要通过哪一个程序来运行。

- 第二行 `# This is a comment` 是一条注释,会被Shell忽略掉。

- 第三行 `echo "Hello World!"` 是一个简单的命令,用于将字符串 "Hello World!" 输出到标准输出中。其中 `echo` 是一个常用的Shell命令,用于输出字符串或变量的值。

Shell脚本还可以使用变量、字符串处理、条件语句、循环等语法结构,以及调用其他程序和Shell脚本来完成更为复杂的任务。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
58 32
|
4月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
150 1
|
3月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
103 2
6种方法打造出色的Shell脚本
|
3月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
125 1
|
3月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
125 2
|
4月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
84 6
|
3月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
4月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
103 12
|
4月前
|
Shell 应用服务中间件 网络安全
|
4月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
133 2