关键字:AT、指令、TCP
时间:2019年5月

指令

发:AT
收:OK

发:AT+CPIN?
收:+CPIN: READY
收:OK

发:AT+CSQ
收:+CSQ: 15,0
收:OK

发:AT+CGREG?
收:+CGREG: 0,1
收:OK

发:AT+CIPMUX?
收:+CIPMUX: 0
收:OK

发:AT+CIPMUX=1
收:OK

发:AT+CIPMODE?
收:+CIPMODE: 0
收:OK

发:AT+CGATT?
收:+CGATT: 1

发:AT+CGATT=1
收:OK

发:AT+CSTT?
收:+CSTT: "CMNET","",""
收:OK

发:AT+CSTT="CMIOT"
收:OK

发:AT+CIICR
收:OK

发:AT+CIFSR
收:10.113.91.97

发:AT+CIPSTART=1,"TCP","1.2.3.4",9999
收:OK
收:CONNECT OK

发:AT+CIPSEND=1,10
收:> 
发:abcdefhijk
收:1, SEND OK

收:+RECEIVE,1,6:
收:12345

发:AT+CIPCLOSE
收:CLOSE OK

发:AT+CIPSHUT
收:SHUT OK

注:
1、CSTT、CIPMUX、CIPMODE修改都需要在CGATT=1之前,或CIPSHUT之后;
2、CIPSHUT之后需CGATT=1,才能再次CIICR。

关键字:golang、发邮件
时间:2019年5月

代码

package main

import (
	"log"
	"net/smtp"
	"strings"
)

func main() {
	log.Println("start...")

	addr := "smtp.163.com:25"
	a := smtp.PlainAuth("", "user2019", "password", "smtp.163.com")
	from := "user2019@163.com"
	to := []string{"12345678@qq.com"}
	msg := "To: "
	msg = msg + strings.Join(to, ",")
	msg = msg + "\r\nFrom: " + from
	msg = msg + "\r\nSubject: " + "test5"
	msg = msg + "\r\n\r\n" + "This is a test mail."
	err := smtp.SendMail(addr, a, from, to, []byte(msg))
	if err != nil {
		log.Println(err)
		return
	}
}

注:smtp.PlainAuth的第二个参数是账户名,某些邮箱不需要加“@xxx.com”,某些邮箱需要加。

关键字:ssh、局域网、公网、反相连接
时间:2019年5月

原理

原理流程如下:
1、局域网主机先发起一个ssh请求登录公网主机,这个ssh登录不提供命令行输入,而是在登录的主机上打开一个tcp端口进行监听;
2、当有请求访问这个tcp端口时,数据会通过已经建立的连接转发到局域网主机上指定的端口,如果这个局域网主机上指定的端口是22端口,那么就实现了ssh登录到局域网。

准备

主机 IP
公网 1.2.3.4
局域网 192.168.1.100

公网主机

安装ssh服务端和客户端

root@www:~# apt-get install openssl-server
root@www:~# apt-get install openssl-client
root@www:~# adduser user1
...

注:由于会在局域网主机上建立免密登录,为保障公网主机安全,建议添加一个新用户用于远程登录。

局域网主机

只用ssh客户端本身是能够实现这个功能的,单次可以直接使用ssh。如果要长期保持能够远程登录,就需要用到autossh工具。

root@debian:~# apt-get install autossh
root@debian:~# ssh-keygen
...
root@debian:~# ssh-copy-id user1@1.2.3.4
...
root@debian:~# autossh -M 4567 -NR 8022:localhost:22 user1@1.2.3.4

注:
“-M 4567”是autossh监控会用到的一个端口,任意都可以只要不冲突;
“-NR 8022:localhost:22”是指在远端监听8022端口,并且8022端口来的数据转发到“localhost:22”;
“user1@1.2.3.4”是ssh访问的用户和主机

远程访问

在公网主机上

root@debian:~# ssh user1@127.0.0.1 -p 8022
password:

高级用法

主机 IP
公网 1.2.3.4
局域网X主机A 192.168.1.100
局域网Y主机B 192.168.2.110

在局域网主机A上执行脚本

root@hostA:~# autossh -M 4567 -NR 8022:localhost:22 user1@1.2.3.4

在公网主机上执行脚本

root@www:~# autossh -M 4568 -gNL 8023:localhost:8022 localhost

在局域网主机B上访问公网主机8023端口时,其实访问的是局域网主机A。

root@hostB:~# ssh root@1.2.3.4 -p 8023

关键字:zabbix、监控、股价
时间:2019年5月

一、准备

1、主机

一台Linux操作系统主机,内存1G以上,硬盘20G以上,能够访问Internet。

2、邮箱

a、发件邮箱

一个发件的邮箱,用于Zabbix发送提醒邮件。因为发件邮箱的密码会填写到Zabbix系统中,所以建议使用一个闲置邮箱或新申请一个邮箱作为发件邮箱,从而减少安全隐患。

b、收件邮箱

一个收件的邮件,用于接收Zabbix发送的提醒邮件。建议使用139邮箱作为收件箱,由于139邮箱可配置短信提醒,因此zabbix邮件提醒同时具备了短信提醒功能,并且短信提醒免费。

二、安装Zabbix

在准备的主机上安装Zabbix服务器。详细安装步骤请查阅https://www.zabbix.com,此处不做详细介绍。

三、配置

1、股票实时价格获取脚步

编辑文件/root/getprices.sh

#!/bin/sh
for i in $(wget -qO- http://hq.sinajs.cn/list=sz002008,sh600660|awk '{print $2}')
do
	echo `echo $i | awk -F '[\"]' '{print $2}'` > /tmp/`echo $i | awk -F '[_=]' '{print $3}'`
done

注:此脚本抓取股票实时价格,sz002008和sh600600是股票代码,可以自行添加,逗号隔开即可。此脚本执行后,会在/tmp目录下生成以股票代码为文件名的文件,文件内容即是价格相关数据。

2、定时执行脚本

root@debian:~# crontab -e
# m h  dom mon dow   command
30-59 9 * * 1,2,3,4,5 /bin/sh /root/getprices.sh
0-30 11 * * 1,2,3,4,5 /bin/sh /root/getprices.sh
*/1 10,13,14 * * 1,2,3,4,5 /bin/sh /root/getprices.sh
:wq

注:每周一至五,开盘时间9:30~11:30和13:00~15:00每分钟抓取一次数据。

3、Zabbix Agent采集数据

root@debian:~# vim /etc/zabbix/zabbix_agent.conf
...
UserParameter=stock.price.code[*],awk -F ',' '{print $$4}' /tmp/$1
UserParameter=stock.chg.code[*],awk -F ',' '{print 100*($$4-$$3)/$$3}' /tmp/$1
...
:wq
root@debian:~# systemctl restart zabbix-agent

4、Zabbix服务器配置监控项

* 打开zabbix的web页面,http://192.168.1.100/zabbix,用户名Admin,密码zabbix。
* 点击Configuration(配置)-> Hosts(主机)-> Zabbix Server/Items -> Create Item
* 主要参数
Name: 600660 price
Key: stock.price.code[sh600660]
Type of information: Numeric(float)
Update interval: 60s
注意:Key需要和UserParameter对应起来。

* 点击“`Add“`按钮

5、Zabbix服务器配置触发器

* 打开zabbix的web页面
* 点击Configuration(配置)-> Hosts(主机)-> Zabbix Server/Items -> Create trigger
* 主要参数
Name: sh600660 price > 23.00
Problem expression: {Zabbix server:stock.price.code[sh600660].last(#1)}>23.00
* 点击“`Add“`按钮

6、Zabbix服务器配置邮件提醒

a、配置发件邮箱

* 依次点击Administration(管理)-> Media types(媒介)-> Email
* 填写邮箱相关信息
* 点击“`Update“`按钮

b、配置发邮件动作

* 依次点击Configuration(配置)-> Actions(动作)-> Report problems to Zabbix administrators
* Enable打勾
* 点击“`Update“`按钮

c、配置管理员账户邮箱

* 依次点击Administration(管理)-> Users(用户) -> Admin
* 点击“`Media“`标签页
* 点击“`Add“`链接,添加邮箱
* 点击“`Update“`按钮保存

结束

整个配置已经完成,当600660的价格高于23元时,你就会收到邮件了。

关键字:sim800c、eat、串口、下载、升级
时间:2019年4月

关于SIM800C下载

SIM800C支持USB下载和UART下载两种方式。

UART下载

硬件链接

1、SIM800C有两个UART接口,下载使用UART1接口,UART1的RXD、TXD分辨接USB的TXD、RXD;
2、SIM800C的5V和GND与串口5V和GND相连;
3、SIM800C的PWRKEY已接开关或直接接GND。

下载步骤

1、断开SIM800C的5V供电;
2、打开Simcom Series download Tools Customer v1.19
3、依次选择SIM800C、UART、COM3(选自己串口号)、115200
4、点击Image Folder,选择文件cfg文件,例如:1418B06SIM800C24.cfg
5、点击Start Download
6、按住PWRKEY或保持PWRKEY接地
7、接通SIM800C的+5V
8、松开PWRKEY或断开PWRKEY接地
9、等待下载完成

注意

必须先点击Start Download,再接通SIM800C电源,并保证接通时PWRKEY处于下拉状态,发否无法下载。

关键字:sim800、sim900、simcom、eat、sdk
时间:2019年4月

SIM800与SIM900

SIM900已经停产,由SIM800系列相关型号代替

SIM800系列

2G产品

产品型号:SIM800、SIM800A、SIM800L、SIM800C、SIM800F、SIM800H等
SIM800x所有型号主要功能相同,封装不同,接口也有一定差异(蓝牙、PWM、SD卡等)

2G+定位产品

产品型号:SIM808、SIM868、SIM868E等

开发

方式一,外接串口

通过串口,外接单片机或者PC,使用AT指令进行编程。

方式二,Embedded AT(EAT)

不需要外接单片机或PC,直接使用C语言进行编程,使用SIMCom提供的工具进行编译和下载,程序直接运行在SIM800系列上。

关键字:巴菲特、索罗斯、投资、习惯
时间:2019年4月

制胜习惯一

保住资本永远是第一位的

制胜习惯二

努力回避风险

制胜习惯三

发展你自己的投资哲学

制胜习惯四

开发你自己的个性化选择、购买和抛售投资系统

制胜习惯五

分散化是荒唐可笑的

制胜习惯六

注重税后收益

制胜习惯七

只投资于你懂的领域

制胜习惯八

不做不符合你标准的投资

制胜习惯九

自己去调查

制胜习惯十

有无限的耐心

制胜习惯十一

即刻行动

制胜习惯十二

持有赢利的投资,直到事先确定的退出条件成立

制胜习惯十三

坚定地遵守你的系统

制胜习惯十四

承认你的错误,立即纠正它们

制胜习惯十五

把错误转化为经验

制胜习惯十六

“交学费”是必要的

制胜习惯十七

永不谈论你正在做的事

制胜习惯十八

知道如何识人

制胜习惯十九

生活节俭

制胜习惯二十

工作与钱无关

制胜习惯二十一

爱你所做的事,不要爱你所拥有的东西

制胜习惯二十二

24小时不离投资

制胜习惯二十三

投入你的资产

注:本文内容摘自《巴菲特与索罗斯的投资习惯》

时间:2019年4月
关键字:股票、实时、数据、接口

接口

请求1

http://qt.gtimg.cn/q=sh600660

响应1

v_sh600660="1~福耀玻璃~600660~25.07~24.63~24.54~332231~174739~157415~25.07~336~25.06~2005~25.05~792~25.04~510~25.03~1003~25.08~1349~25.09~1914~25.10~3121~25.11~1092~25.12~667~15:00:03/25.07/4375/S/10967123/59873|14:57:03/25.05/14/S/35070/59109|14:56:59/25.05/14/S/35070/59094|14:56:56/25.05/1182/B/2962156/59081|14:56:52/25.04/262/S/656048/59070|14:56:48/25.04/57/S/142728/59055~20190403153003~0.44~1.79~25.11~24.46~25.07/332231/827605389~332231~82761~1.66~15.26~~25.11~24.46~2.64~502.15~628.91~3.11~27.09~22.17~1.88~-3497~24.91~15.26~15.26~~~0.81";

请求2

http://qt.gtimg.cn/q=sz002008

响应2

v_sz002008="51~大族激光~002008~43.85~44.59~43.96~247923~114601~133217~43.85~1208~43.84~502~43.83~417~43.82~50~43.81~18~43.86~37~43.87~222~43.88~127~43.89~63~43.90~216~15:00:04/43.85/2745/S/12039938/15946|14:57:01/43.87/59/S/258833/15804|14:56:57/43.87/26/B/114067/15799|14:56:54/43.87/113/B/495700/15796|14:56:51/43.87/146/B/640497/15792|14:56:48/43.87/188/B/824619/15788~20190403153004~-0.74~-1.66~44.48~43.10~43.85/247923/1086162000~247923~108616~2.50~25.72~~44.48~43.10~3.09~435.60~467.91~5.71~49.05~40.13~0.77~1530~43.81~21.18~28.10~~~1.36";

请求3

http://qt.gtimg.cn/q=sh600660,sz002008

响应3

v_sh600660="1~福耀玻璃~600660~25.07~24.63~24.54~332231~174739~157415~25.07~336~25.06~2005~25.05~792~25.04~510~25.03~1003~25.08~1349~25.09~1914~25.10~3121~25.11~1092~25.12~667~15:00:03/25.07/4375/S/10967123/59873|14:57:03/25.05/14/S/35070/59109|14:56:59/25.05/14/S/35070/59094|14:56:56/25.05/1182/B/2962156/59081|14:56:52/25.04/262/S/656048/59070|14:56:48/25.04/57/S/142728/59055~20190403153003~0.44~1.79~25.11~24.46~25.07/332231/827605389~332231~82761~1.66~15.26~~25.11~24.46~2.64~502.15~628.91~3.11~27.09~22.17~1.88~-3497~24.91~15.26~15.26~~~0.81"; v_sz002008="51~大族激光~002008~43.85~44.59~43.96~247923~114601~133217~43.85~1208~43.84~502~43.83~417~43.82~50~43.81~18~43.86~37~43.87~222~43.88~127~43.89~63~43.90~216~15:00:04/43.85/2745/S/12039938/15946|14:57:01/43.87/59/S/258833/15804|14:56:57/43.87/26/B/114067/15799|14:56:54/43.87/113/B/495700/15796|14:56:51/43.87/146/B/640497/15792|14:56:48/43.87/188/B/824619/15788~20190403153004~-0.74~-1.66~44.48~43.10~43.85/247923/1086162000~247923~108616~2.50~25.72~~44.48~43.10~3.09~435.60~467.91~5.71~49.05~40.13~0.77~1530~43.81~21.18~28.10~~~1.36"; 

数据说明

以“~”为分割符进行字符串分割后,字段如下:
[0] 证券所
[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] 市盈率(TTM)
[40]
[41] 最高
[42] 最低
[43] 振幅
[44] 流通市值
[45] 总市值
[46] 市净率
[47] 涨停价
[48] 跌停价
[49] 量比
[50]
[51] 均价
[52] 市盈率(动)
[53] 市盈率(静)
[54]
[55]
[56]

时间:2019年3月
关键字:linux、分辨率、字太小、桌面、虚拟机

适用范围

此方法适用于Gnome桌面。此方法适用了gsettings命令,该命令可以修改gnome的各种参数。

方法

设置分辨率

settings应用程序 -> Displays -> 显示器 -> Resolution: 2560×1600

设置scaling-factor参数

user1@debian:~# gsettings set org.gnome.desktop.interface scaling-factor 2
user1@debian:~# gsettings set org.gnome.desktop.interface scaling-factor 1

注:该参数值为整形。

设置text-scaling-factor参数

user1@debian:~# gsettings set org.gnome.desktop.interface text-scaling-factor 2.0
user1@debian:~# gsettings set org.gnome.desktop.interface text-scaling-factor 1.5

注:该参数值支持小数。

举例

分辨率 scaling-factor text-scaling-factor
2560×1600 2 1.0
1920×1200 1 1.5

时间:2019年3月
关键字:linux、批量、修改、文件名、前缀

脚本

批量加前缀

#!/bin/sh
for file in `ls *.txt`; do
  mv $file 'prefix-'$file
done

有序文件名

#!/bin/sh
i=0
for file in `ls *.txt`; do
  mv $file $i'.txt'
  i=`expr $i+1`
done