惠州网站建设技术托管,网站开发最好,51网址还有吗,百度云搜索引擎入口盘搜搜适用场景#xff1a;远程服务器上的 MySQL 不允许远程访问#xff0c;此时我们需要先登录服务器#xff0c;备份数据库后#xff0c;将备份文件拉取到本机。源码 mysqlDumpRemote2Local.sh#!/bin/bash################################################# TODO: 登录远程服务…适用场景远程服务器上的 MySQL 不允许远程访问此时我们需要先登录服务器备份数据库后将备份文件拉取到本机。源码 mysqlDumpRemote2Local.sh#!/bin/bash################################################# TODO: 登录远程服务器备份指定数据库并下载到本地# 示例# ./mysqlDumpRemote2Local.sh## Author: whoru.S.Q # Link: https://github.com/whorusq/linux-learning/blob/master/shell/mysqlDumpRemote2Local.sh# Version: 1.0################################################# 待操作待服务器列表# 格式描述,数据库名,数据库用户名,数据库密码,数据库端口号,SSH登录用户名,SSH服务器IP,SSH登录密码,SSH端口号HOSTS(test,db_demo,root,pwd123456,3306,root,192.168.1.127,pwd3333,22)HOSTS_LENecho ${#HOSTS[*]}HOST_KEY# 服务器上备份文件的存放目录DB_BACKUP_PATH/opt/backup# 当前脚本所处目录BASE_PATH$(cd $(dirname $0);pwd)# 入口function main {#检查基础设置if [ $HOST_LEN 0 ]; thenecho 您还没有配置待操作的服务器参数exit 1fi# 显示菜单MENU\nINDEX1for host in ${HOSTS[*]}dolocal host_nameecho $host | awk -F , { print $1 $2}MENU$MENU\t$INDEX. $host_name\nINDEXexpr $INDEX 1doneecho -en $MENU\n# 检查选择checkChoice# 开始导出操作doDump}function checkChoice {read -p 请输入序号选择待备份的数据库 HOST_NUMlenecho $HOST_NUM|sed s/[1-9]//gif [ -n $len ]; thenifGoon 输入有误只支持1-9的数字是否重新输入[y/n]elseKEYexpr $HOST_NUM - 1if [ $KEY -le $HOSTS_LEN ]; thenHOST_KEY$KEYelseifGoon 未知的序号是否重新输入[y/n]fifi}function ifGoon {echo -en \033[32m\033[0m read -p $1 GOONif [ $GOON y ]; thencheckChoiceelseexit 0fi}function doDump {if [ -n $SERVER_KEY ]; thenecho 未知的序号exit 0fi# 从对应的配置中解析数据库和 SSH 参数HOST${HOSTS[$HOST_KEY]}HOST_NAMEecho $HOST | awk -F , { print $1 }DB_NAMEecho $HOST | awk -F , { print $2 }DB_USERecho $HOST | awk -F , { print $3 }DB_PWDecho $HOST | awk -F , { print $4 }DB_PORTecho $HOST | awk -F , { print $5 }SSH_USERecho $HOST | awk -F , { print $6 }SSH_IPecho $HOST | awk -F , { print $7 }SSH_PWDecho $HOST | awk -F , { print $8 }SSH_PORTecho $HOST | awk -F , { print $9 }# 备份文件名DUMP_FILENAME$HOST_NAME_date %Y%m%d%H%M%Secho -e \n\033[32m\033[0m 操作开始 sleep 1echo -e \n\033[32m\033[0m 登录 ${HOST_NAME} 正式服务器备份数据库sleep 1expect -c spawn ssh ${SSH_USER}${SSH_IP} -p ${SSH_PORT}expect {\yes/no\ {send \yes\n\; exp_continue;}\*assword\ { send \${SSH_PWD}\r\n\; exp_continue ; sleep 3; }\Last*\ { send_user \\n 登录成功 \n\;}}expect \*]#\send \ls ${DB_BACKUP_PATH} /dev/null cd ${DB_BACKUP_PATH} || mkdir -p ${DB_BACKUP_PATH} cd ${DB_BACKUP_PATH} \r\send \mysqldump -u${DB_USER} -p${DB_PWD} -P ${DB_PORT} ${DB_NAME} ${DUMP_FILENAME}.sql \r\send \tar -zcvf ${DUMP_FILENAME}.tar.gz ${DUMP_FILENAME}.sql \r\send \exit \r\interactecho -e \n\033[32m\033[0m 退出 ${HOST_NAME} 正式服务器 \nsleep 1echo -e \n\033[32m\033[0m 将备份文件拉取到本机 \nsleep 1expect -c spawn scp -P $SSH_PORT $SSH_USER$SSH_IP:$DB_BACKUP_PATH/$DUMP_FILENAME.tar.gz $BASE_PATHexpect {\*assword\ { send \${SSH_PWD}\r\n\; exp_continue ; }}echo -e \n\033[32m\033[0m 操作结束文件位置$BASE_PATH/$DUMP_FILENAME.tar.gz \n}# 运行main使用示例➜ ./mysqlDumpRemote2Local.sh1. test db_demo请输入序号选择待备份的数据库1 操作开始 登录 test 正式服务器备份数据库spawn ssh root192.168.1.127 -p 22root192.168.1.127s password:Last login: Tue Nov 13 13:43:53 2018 from xxxxxxxxx登录成功[root test ~]# ls /opt/backup /dev/null cd /opt/backup || mkdir -p /opt/backup cd /opt/backup[root test backup]# mysqldump -uroot -ppwd123456 -P 3306 db_demo test_20181113135359.sqlWarning: Using a password on the command line interface can be insecure.[rootdbhs backup]# tar -zcvf test_20181113135359.tar.gz test_20181113135359.sqltest_20181113135359.sql[rootdbhs backup]# exitlogoutConnection to 192.168.1.127 closed. 退出 test 正式服务器 将备份文件拉取到本机spawn scp -P 22 root192.168.1.127:/opt/backup/test_20181113135359.tar.gz /Users/xxxxx/mydev/linux-learning/shellroot218.29.103.28s password:test_20181113135359.tar.gz 100% 66KB 941.5KB/s 00:00 操作结束文件位置/Users/xxxxx/mydev/linux-learning/shell/test_20181113135359.tar.gz