关键字: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

时间:2019年3月
关键字:vue、npm、nodejs、理解、安装、使用

1. 基本概念

1.1. Node.js

Node.js本身不是一种编程语言,它是一个基于Chrome V8 引擎的JS运行环境。有了Node.js,JavaScript不再仅限于前端开发,也可以进行服务端开发。

1.2. npm

npm是Node.js的包管理工具,它与Python的`pip`、Golang的`go get`等类似。npm不仅用于包管理,它还被用于运行代码(`npm run dev`)、打包版本(`npm run build`)等。

1.3. Vue.js

a、狭义的理解

可以把Vue.js理解为一个JavaScript库。你可以在html中直接引入并使用。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="http://static.runoob.com/assets/vue/1.0.11/vue.min.js"></script>
</head>
<body>
<div id="app">
 {{ message }}
</div>
<!-- JavaScript 代码需要放在尾部(指定的HTML元素之后) -->
<script>
new Vue({
 el:'#app',
 data: {
 message:'Hello World!'
 }
});
</script>
</body>
</html>

Vue.js通过标签和数据的绑定,实现了页面显示和数据变量之间的自动同步。

b、广义的理解

vue不仅仅是一个JS库,它延伸出了模板(`*.vue`)、路由(vue-router)等概念。

1.4. vue-cli

vue-cli,如果理解cli就很好理解vue-cli了。CLI,command-line interface,就是命令行界面的意思。vue-cli提供创建vue项目等命令。

1.5. Vue.js和Node.js的关系

Vue.js本身只是一个JS库,可以通过npm进行管理。Node.js可以提供vue开发过程中需要用到的初始化工程、打包等工具。

2. 安装

2.1. Node.js及npm

root@debian:~# apt-get update
root@debian:~# apt-get install apt-transport-https
root@debian:~# curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
root@debian:~# echo 'deb https://deb.nodesource.com/node_11.x stretch main' > /etc/apt/sources.list.d/nodesource.list
root@debian:~# apt-get update
root@debian:~# apt-get install nodejs
root@debian:~# node -v
v11.11.0
root@debian:~# npm -v
6.7.0

注:node_11.x可替换为node_10.x等,stretch可替换为jessie或buster。

2.2. 安装vue-cli

root@debian:~# npm install --global vue-cli
root@debian:~# vue -V
2.9.6

注:1、vue-cli安装的是shell命令,所以需要使用`–global`参数。
2、由于shell命令是安装到系统目录,所以安装过程需要root权限。

3. 创建vue工程

user1@debian:~# vue init webpack vue-demo
user1@debian:~# cd vue-demo
user1@debian:~/vue-demo# npm run dev

浏览器输入地址`http://localhost:8080/`

4. 工程目录说明

4.1. package.json文件

{
  ...
  "scripts": {
    "dev": ".."
    "start": "..."
    "unit": "..."
    "e2e": "..."
    "test": "..."
    "lint": "..."
    "build": "..."
  }
}

scripts下的key与命令`npm run dev`和`npm run build`等一一对应

4.2. src目录

编写代码的地方

4.3. 理解代码的线索

依次阅读`index.html`、`src/main.js`、`src/App.vue`、`src/router/index.js`等文件

重点关注`<div id=”app”>`、`<router-view/>`等关键字。

5. 写代码

src/App.vue

<template>
 <div id="app">
 <img src="./assets/logo.png">
 <router-link to="/first">First</router-link>
 <router-link to="/second">Second</router-link>
 <router-view/>
 </div>
</template>
...

router/indes.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import First from '@/components/First'
import Second from '@/components/Second'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/first',
      name: 'First',
      component: First
    },
    {
      path: '/second',
      name: 'Second',
      component: Second
    }
  ]
}]

src/components/first.vue

<template>
 <h1>{{msg}}</h1>
</template>

<script>
export default {
  name: 'First',
    data () {
    return {
      msg: 'Welcom to First'
    }
  }
}

src/components/second.vue

<template>
 <h1>{{msg}}</h1>
</template>

<script>
export default {
    name: 'Second',
    data () {
      return {
      msg: 'Welcom to Second'
    }
  }
}

运行代码

执行脚本

root@debian:~/vue-demo# npm run dev

打开页面

http://localhost:8080/

参考

* https://deb.nodesource.com/setup_11.x
* http://www.runoob.com/try/try.php?filename=vue_intro

时间:2019年3月
关键字:nodejs、npm、debian、安装

安装脚本

root@debian:~# apt-get install apt-transport-https
root@debian:~# curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
root@debian:~# echo 'deb https://deb.nodesource.com/node_11.x stretch main' > /etc/apt/sources.list.d/nodesource.list
root@debian:~# apt-get update
root@debian:~# apt-get install nodejs
root@debian:~# node -v
v11.11.0
root@debian:~# npm -v
6.7.0

注:node_11.x可替换为node_10.x等,stretch可替换为jessie或buster。