Linux系统mysql数据库定时备份发送邮箱

一、配置邮箱

这里要配置使用smtp服务,在帐号设置那里一般都有说明SMTP服务器地址。

如果你的Ubuntu没有安装mail模块,则需要执行这条命令来安装邮件模块:

root@name:~# apt-get install mailutils

打开mail配置文件

vim /etc/mail.rc

在结尾部分加上这些设置

set admin@mydns.vip smtp=smtp.mydns.vip set smtp-auth-user=admin@mydns.vip smtp-auth-password=mypassword smtp-auth=login

测试邮件是否发送成功:

echo "test content" | mail -s "mail title" xxx@mydns.vip

解释:test是邮件内容,mail title是邮件标题,xxx@mydns.vip表示你要发送到这个邮箱地址。成功收到邮件,没问题。

二、备份Mysql数据库

备份Mysql使用mysqldump命令,先来熟悉一下,待会再改进

mysqldump -u数据库帐号 -p数据库密码 数据库名 > “/tmp/bak.sql”

执行以上命令,进入/tmp/bak.sql备份文件是否存在,存在就OK了,注意 -p数据库密码之间没有空格。

编写脚本和定时任务

万事俱备,接下来要做自动化工作:建立一个备份脚本,并使用定时任务每天执行它。

在某个目录建立一个SHELL脚本,为了简单说明我直接建在/back_mysql.sh,内容如下

vim /back_mysql.sh

#!/bin/bash #Send the mysql of backup file to email #Author Melon #Version 0.1 #根据日期命名备份文件 filename=`date +%Y-%m-%d`"-blog-bak.sql" path="/tmp/"$filename #执行备份 /usr/bin/mysqldump -u数据库帐号 -p数据库密码 数据库名 > $path #发送邮件 #删除临时文件 echo "邮件内容" | mail -s $filename -a $path 邮箱 rm -f $path

/usr/bin/mysqldump是完整的命令路径,如果你不知道命令的完整路径,可以使用whereis 命令名来查看 使用crontab建立定时任务,每天的0时0分执行

crontab -e 0 0 * * * /bin/sh /back_mysql.sh

你可以设置其它时间段发送,具体crontab的用法请自行搜索。

使用zip命令打包文件并加密

可能会觉得直接发sql文件不够安全,或者还有其它文件比如附件要一起发送,下面我将使用linux zip命令对附件和sql文件一起加密打包,完整代码如下,详细不一一说明了

#!/bin/bash #Send the blog of backup file to email #Author Melon #Version 0.2 #zip文件名 filename=`date +%Y-%m-%d`"-blog-bak.zip" #zip文件路径 path="/tmp/"$filename #sql备份文件路径 mysqlpath="/tmp/blog.sql" #附件备份路径 uploadpath="/tmp/uploads" /usr/bin/mysqldump -u数据库帐号 -p数据库密码 数据库名 > $mysqlpath #创建附件备份(这是我博客的附件位置) cp -r "/www/blog/usr/uploads/" "/tmp/" #加密打包,>/dev/null 2>&1表示信息重定向,方便调试时不输出加密信息,你也可以省略 /usr/bin/zip -P 加密密码 -r $path $mysqlpath $uploadpath >/dev/null 2>&1 echo "邮件内容" | mail -s $filename -a $path 邮箱 #删除备份文件 rm -f $path $mysqlpath
rm -rf $uploadpath

linux 强制中断某个用户ssh连接

[root@ebs-58123 ~]# who
root     pts/0        2019-05-10 09:06 ()
root     pts/1        2019-05-10 09:10 ()
root     pts/2        2019-05-10 09:31 ()
[root@ebs-58123 ~]# pkill -kill -t  pts/0
[root@ebs-58123 ~]# pkill -kill -t  pts/1
[root@ebs-58123 ~]# who
root     pts/2        2019-05-10 09:31 ()

批处理脚本识别网卡名称

批处理脚本识别网卡名称

笔者近期因工作需要,需完成批量添加ipv6地址的脚本。指定网卡名称添加处理已ok ,传到服务器后有2张网卡 ,让用户手工输入外网卡名称不现实,也不智能,就需要进行准备判断,以下是一些思路和实现步骤:

1.怎么查看网卡信息:ipconfig /all

批处理脚本识别网卡名称

2.网卡信息全部显示了,这个时候要判断外网卡特征,255.255.255.0 ,要查找外网卡名称,还需要筛选 以太网适配器

批处理脚本识别网卡名称

3.此时已获取到3条信息,无悬念,以太网 8是外网卡了,怎么标记并获取到呢?继续观察特征,只有3行,找到255.255.255.0的行数,减去1行 获取网卡名称

批处理脚本识别网卡名称

4.255.255.255.0的行号是3 ,外网卡3-1 就的第二行,于是有以上脚本代码:

@echo off&setlocal enabledelayedexpansion ::获取外网卡行数 for /f "tokens=1 delims=:" %%i in ('ipconfig /all ^| findstr "255.255.255.0 以太网适配器" ^| findstr /N "255.255.255.0"') do (set a=%%i) set /a n=%a%-1 ::读取外网卡信息 set/a n-=1 if "%n%"=="0" (set "skip=") else (set "skip=skip=%n%") for /f "%skip% tokens=* delims=" %%i in ('ipconfig /all ^| findstr "255.255.255.0 以太网适配器"') do (set a=%%i&&goto:net) :net for /f "tokens=2,3 delims= " %%a in ("%a%") do (set network=%%a %%b) set network=%network:~0,-1% echo 外网卡是:%network% pause

测试结果:

批处理脚本识别网卡名称

初步测试正常,验证思路是否正确,改名外网卡名称继续测试

批处理脚本识别网卡名称

测试没有问题,大功告成。如果自己网卡子网掩码有变动,调整成对应即可,如本地电脑内网划分过,255.255.248.0 ,替换后测试正常 。另转载请注意说明出处。

IP段后面的数字是什么意思 /24 /32 /27

IPV4地址一共4段   /24 数字表示的是子网掩码

/24 意思就是24个1  8个0

写为子网掩码就是/24就可以写成子网掩码是:11111111 11111111 11111111 00000000

这个是二进制换算成十进制就是  255.255.255.0

/24  包含的IP数: 32-24=8  2的8次方就是256  (除去第一个一般是网关,最后一个不用)

 

扩展资料:

子网掩码的用法

子网掩码是一个32位地址,对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。

curl命令常用用法

-v 显示请求详细信息

示例:curl www.jobman.top -v

-X 指定请求方式

GET请求

curl -X GET www.jobman.top

POST请求

curl -X POST -d “data=1&key=2” http://localhost:8090/test -v

-d 将使用Content-type:application/x-www-form-urlencoded方式发送数据。

如果想使用JSON形式post数据,可以使用-H指定头部类型

curl -H “Content-Type:application/json” -d ‘{“data”:”1″,”key”:”2″}’ http://localhost:8090/test -v

要使用Cookie

curl -H “Cookie:username=XXX” {URL}

-H增加头部信息

示例:curl -H “Content-Type:application/json” URL

Cookie相关

-c 存储cookie到文件

curl -d”name=test&password=1″ http://localhost:8090/login -c ./cookie1

使用用户名和密码登录系统,并将cookie信息存储在当前目录的cookie文件中

-b 携带cookie文件

curl http://localhost:8090/login -b ./cookie

‘-cookie’直接指定cookie

curl –cookie “name=test” http://localhost:8090/login

-I 输出请求header信息和状态码

示例:curl -I www.baidu.com

-x 指定网址的ip

示例:curl www.baidu.com -x 1.2.3.4:80   将网址ip指向1.2.3.4的80来返回数据

wordpress文章页顶部添加过时提醒 文章顶部显示自定义信息

效果图


切换到主题目录,打开 functions.php 文件,加入以下代码:

function old_content_message($content) {
	$modified = get_the_modified_time('U'); 
	$current = current_time('timestamp');
	$diffTime = ($current - $modified) / (60*60*24); 
	if($diffTime > 365 ){
		$content = '<div class="old-message">本文最后更新于'.get_the_modified_time('Y年n月j日').',已超过 1 年没有更新,如果文章内容失效,请反馈给我们,谢谢!</div>'.$content;
	}
	return $content;
}
add_filter( 'the_content', 'old_content_message' );


以上代码的第 3 行使用了 get_the_modified_time() 函数来获取该篇文章的最后修订时间,如果您的文章在发布后进行过修改,比如修改标签、内容等都会更新时间。第 6 行的 365 是天数,第 7 行 是自定义信息,请根据您自己的需要进行修改。

如果您只想在特定的分类显示提示,比如只在 ID 为 10 的分类的文章显示提示信息,可以将第 6 行代码修改为:in_category(10)

在CSS里面添加样式

.old-message{padding:10px;color: #DB7C22;font-size: 16px;background: #FFFCEF;border: solid 1px #FFBB76;border-radius: 2px;box-shadow: 0 0 3px #ddd;margin:10px;}

样式尺寸可以根据自己需要调整,完成以后就是上面的图片效果,如果有什么问题可以给站长留言

其他:

如果只想在特定的分类显示提示,比如只在 ID 为 8 的分类的文章显示提示信息,可以将if判断语句修改为:

if($days_old > 365 && in_category(8) ){

是多个分类,比如在 ID 为 7、8、9的分类文章显示提示信息,可以使用数组形式:

if($days_old > 365 && in_category(array(7,8,9)) ){

如果要排除某些分类,比如在 ID 为 7、8、9以外的分类文章显示提示信息,可在 in_category 前添加“!”

{

if($days_old > 365 && !in_category(array(7,8,9)) )

vi 命令

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:

  • 命令模式 

    此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。
  • 输入模式

      在命令模式下按下i就进入了输入模式。

     在输入模式中,可以使用以下按键:

    • 字符按键以及Shift组合,输入字符
    • ENTER,回车键,换行
    • BACK SPACE,退格键,删除光标前一个字符
    • DEL,删除键,删除光标后一个字符
    • 方向键,在文本中移动光标
    • HOME/END,移动光标到行首/行尾
    • Page Up/Page Down,上/下翻页
    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC,退出输入模式,切换到命令模式


  • 底线命令模式

        在命令模式下按下:(英文冒号)就进入了底线命令模式。

        底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

        在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序
    • w 保存文件