脚本安装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脚本来完成更为复杂的任务。