kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

crontab不再发出告警邮件

http://blog.chinaunix.net/uid-405749-id-2949218.html

在默认情况下,cron程序会向用户的本地信箱中发送邮件,则产生的邮件数量将会很巨大,那么如何禁用邮件报警功能呢,解决方法有如下一些:

不装邮件时 保存到 /var/spool/mail/root

装邮件时 保存到 /root/Maildir/new/

1.将执行命令的信息重定向到

1
cron_command >/dev/null 2>&1

2.将执行命令的信息重定向到

1
cron_command &>/dev/null

3.在crontab设置文件中指定发送到空

1
2
MAILTO=""
cron_command

在crontab设置文件中指定发送到邮件

1
2
MAILTO="1@qq.com"
cron_command

PHPMailer 发送邮件

使用 PHP 自带 mail

https://www.php.net/manual/zh/function.mail.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public function testEmail()
{
	$to = "1@qq.com";
	$subject = "test email";
	$message = "test email msg";
	$headers = array(
		'From' => '2@qq.cn'
	);

	if (mail($to, $subject, $message, $headers)) {
		echo "send ok";
	} else {
		echo "send fail";
	}
}

使用 PHPMailer

https://www.php.cn/faq/545800.html

PHPMailer的安装和配置

使用PHPMailer库前,需要先将其安装到项目中。在命令行中切换到你项目的根目录下,运行下面的命令进行安装:

1
composer require phpmailer

安装完毕后,我们需要在项目中引用PHPMailer类文件。在代码中添加以下语句:

1
2
3
4
require_once "tools/composer/vendor/autoload.php";

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

在以上示例中,我们使用了isSMTP()方法将SMTP协议开启,使用了SMTPDebug调试模式输出SMTP交互信息,设置了SMTP服务器地址、用户名和密码等信息,设置了发件人和收件人的邮箱地址和名称,设置了邮件主题和正文,同时还设置了纯文本形式的邮件正文。

PHPMailer发送附件邮件

发送带附件的邮件,我们需要使用PHPMailer类的addAttachment()方法添加附件。下面我们将举一个例子来演示如何实现加入附件的邮件发送。

1
$mail->addAttachment('path/to/file.pdf');

样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// 不认证
public function testEmail2()
{
	$mail = new PHPMailer();
	$mail->isSMTP();
	$mail->Host = '192.168.100.41';
	$mail->Port = 25;

	$mail->setFrom('2@qq.cn', 'secure');
	$mail->addAddress('1@qq.com', 'kk');
	$mail->Subject = 'Email Subject';
	$mail->Body = 'Email Body';
	$mail->AltBody = 'Email Body in Plain Text';

//    $mail->addAttachment('path/to/file.pdf');

	if(!$mail->send()) {
		echo "error " . $mail->ErrorInfo;
	} else {
		echo "ok";
	}
}

// SASL 认证
public function testEmail3()
{
	$mail = new PHPMailer();
	$mail->isSMTP();
	$mail->Host = '192.168.100.41';
	$mail->Port = 25;
// TODO tls ?
//    $mail->Port = 587;
//    $mail->SMTPSecure = 'tls';

// user 1
	$mail->SMTPAuth = true;
	$mail->Username = '3@qq.cn';
	$mail->Password = '123456';

	$mail->setFrom('2@qq.cn', 'secure');
	$mail->addAddress('1@qq.com', 'kk');
	$mail->Subject = 'Email Subject';
	$mail->Body = 'Email Body';
	$mail->AltBody = 'Email Body in Plain Text';

//    $mail->addAttachment('path/to/file.pdf');

	if(!$mail->send()) {
		echo "error " . $mail->ErrorInfo;
	} else {
		echo "ok";
	}
}

Excel 的列与数字转换

Excel 的列与数字转换

1
2
3
4
十进制   0 1 ... 9 10 11 ... 100 101
按十进制 A B ... Z BA BB ... BAA BAB // Z=26  ZZ=26*26        ZZZ=26*26*26
实际上   A B ... Z AA AB ... AAA AAB // Z=26  ZZ=26*26 + 26   ZZZ=26*26*26 + 26*26 + 26
	//                    转成公式  Z=26  ZZ=(Z)*26 + 26  ZZZ=(ZZ)*26 + 26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function id_to_xls($id)
{
	$k = '';
	while (true) {
		$k = chr($id % 26 + ord('A')) . $k;
		$id -= 26;
		if ($id < 0)
			break;
		$id = (int)($id / 26);
	}
	return $k;
}

function xls_to_id($xlsCol)
{
	$hh = 0;
	for ($i = 0; $i < strlen($xlsCol); $i ++) {    // ZZ = 26*26 + 26
		$hh = $hh * 26;               //      26*26
		$hh += ord($xlsCol[$i]) - ord('A') + 1; //      26
	}
	return $hh - 1;
}


for ($i = 0; $i < 26*26*26 + 26*26 + 26 + 10; $i ++) {
	$k = id_to_xls($i);
	$id = xls_to_id($k);
	echo $i, "\t", $k, "\t", $id, "\n";
}