4/07/2018

在LEDE软路由上运行Home Assistant

  1. 环境准备
    运行Home Assistant需要python3.5以上的python环境.软件源里有现成的3.6,直接安装就好

    1
    opkg install python3 python3-pip

    安装虚拟环境

    1
    pip3 install virtualenv
  2. 指定安装位置,python版本
    以 /mnt/sda3/homeassistant 路径为例

    1
    virtualenv /mnt/sda3/homeassistant -p /usr/bin/python3.6

    进虚拟环境

    1
    source /mnt/sda3/homeassistant/bin/activate
  3. 安装Home Assistant
    1
    python3 -m pip install homeassistant
  4. 测试运行一下
    1
    hass --open-ui

    等两分钟初始化 看看能不能打开webui,默认端口8123 路由器ip:8123
    Ctrl + C 中止
    退出虚拟环境

    1
    deactivate
  5. 控制脚本
    建立/etc/init.d/hass-daemon
    贴最下面的脚本,注意改成自己的安装目录

    1
    /etc/init.d/hass-daemon enable

    设置为开机启动

    1
    /etc/init.d/hass-daemon start

    启动

    1
    /etc/init.d/hass-daemon stop

    关闭

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
#!/bin/sh /etc/rc.common

START=99

# /etc/init.d Service Script for Home Assistant
PRE_EXEC="cd /mnt/sda3/homeassistant; source bin/activate;"
# Typically /usr/bin/hass
HASS_BIN="hass"
RUN_AS="root"
PID_DIR="/var/run/hass"
PID_FILE="$PID_DIR/hass.pid"
CONFIG_DIR="/$RUN_AS/.homeassistant"
LOG_DIR="/var/log/homeassistant"
LOG_FILE="$LOG_DIR/home-assistant.log"
FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --log-file $LOG_FILE --daemon"

start() {
  create_piddir
  if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
    echo 'Service already running' >&2
    return 1
  fi
  echo -n 'Starting service… ' >&2
  local CMD="$PRE_EXEC $HASS_BIN $FLAGS;"
  /bin/sh -c "$CMD" $RUN_AS
  if [ $? -ne 0 ]; then
    echo "Failed" >&2
  else
    echo 'Done' >&2
  fi
}

stop() {
  if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
    echo 'Service not running' >&2
    return 1
  fi
  echo -n 'Stopping service… ' >&2
  kill $(cat "$PID_FILE")
  while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
  rm -f $PID_FILE
  echo 'Done' >&2
}


create_piddir() {
  if [ ! -d "$PID_DIR" ]; then
    mkdir -p $PID_DIR
    chown $RUN_AS "$PID_DIR"
  fi
}

3/19/2018

添加免费证书(备忘)

https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

1,安装acme.sh

1
curl https://get.acme.sh | sh

2,将CloudFlare Global API KEY加入临时系统变量

1
2
    export CF_Key="******************"
    export CF_Email="********"

3,获取证书

1
~/.acme.sh/acme.sh --issue -d lingbo.me -d *.lingbo.me --dns dns_cf

ps,
How to get pkcs12(pfx) format

1
acme.sh  --toPkcs  -d <domain>  [--password pfx-password]

1/23/2018

更新Home Assistant

1,停止运行HA

1
sudo systemctl stop home-assistant@homeassistant.service

2,切换用户

1
sudo su -s /bin/bash homeassistant

3,进环境

1
source /srv/homeassistant/bin/activate

4,更新

1
pip3 install --upgrade homeassistant

5,退出
6,运行HA

1
sudo systemctl start home-assistant@homeassistant.service

#备忘手札

11/18/2016

不可扭曲如蛆虫

如果天空总是黑暗的,那就摸黑生存;如果发出声音是危险的,那就保持沉默;如果自觉无力发光,那就蜷伏于墙角。 但不要习惯了黑暗就为黑暗辩护;也不要为自己的苟且而得意;不要嘲讽那些比自己更勇敢的人们。我们可以卑微如尘土,但不可扭曲如蛆虫。

6/22/2016

Shell去除空行的4种方法

节选自http://www.jb51.net/article/57953.htm

1)用tr命令

1
cat 文件名 |tr -s ‘\n'

2)用sed命令

1
cat 文件名 |sed ‘/^$/d'

3)用awk命令

1
cat 文件名 |awk ‘{if($0!=”")print}'
1
cat 文件名 |awk ‘{if(length !=0) print $0}'

4)用grep命令

grep -v “^$” 文件名

配置dnsmasq和ipset

节选 自 https://kyonli.com/p/18

2、配置dnsmasq和ipset

为了防止 DNS 污染和把被认证域名解析到的 IP 存放到 ipset 中,我们要把需要通过代理访问的站点域名交由 dnsmasq 处理,域名列表可以自己收集也可以从 gfwlist 导出,最简单的方法就是使用 gfwlist2pac ,从生成的 pac 文件中提取出域名列表再进行加工即可用于 dnsmasq

首先使用 ipset 新建一个名为 redir 的 set 用于存放列表中的域名对应的 IP

1
ipset -N redir iphash

修改

1
/etc/dnsmasq.conf

在最后加入

1
conf-dir=/etc/dnsmasq.d

,新建并进入目录

1
/etc/dnsmasq.d

,新建一个名为 redir.conf 的配置文件,内容如下:

[output]#使用非标准端口的opendns避免DNS污染
server=/google.com/208.67.220.220#443
#将解析出来的IP保存到名为redir的ipset表中
ipset=/google.com/redir[/output]

完整的由 gfwlist 生成的域名配置文件从 这里 下载,最后将以下内容加入到防火墙自定义规则中即可实现开机自动代理

[output]ipset -N redir iphash
iptables -t nat -A PREROUTING -p tcp -m set –match-set redir dst -j REDIRECT –to-port 1080[/output]

至此智能透明代理部分配置完成

6/08/2016

知乎问答:魔兽电影上映时,联盟太嚣张怎么办?

【魔兽电影上映时,联盟太嚣张怎么办?】转身反杀:“来者可是,部… http://www.zhihu.com/question/45650792/answer/99480291?f3fb8ead20=304b1738f01d0b155ea21c15b8d857ec (分享自知乎网)

“来者可是,
部落猪。”

“正是。
你是联盟狗。”

“嗯。公既知天命,识时务,奈何要兴无名之师,来到我们联盟主场影院装逼?”

“我凭票入场,何谓无名?”

“魔兽电影主场,当归有德之人。”

“联盟狗作恶多端,多行不义,何谓有德之人?”

“我太祖莱恩国王,守暴风城,威名远扬,百姓倾心,四方仰德,此非以权势取之,乃天命所归也!我世祖瓦里安国王,扫清六合,席卷八荒,斩奥尼科西亚,清西部荒野,攻寒冰王座,破奥格瑞玛,功勋卓著,千古未有!汝等部落,自黑手、奥格瑞姆以来,作恶多端,后更有地狱咆哮,为祸潘达利亚,搞的生灵涂炭,民不聊生。量尔等宵小,为虎作伥,恶名远扬,如何敌得过我暴风城的神兵天将?我看你相貌堂堂,器宇不凡,不如删号,来我联盟重新练级,岂不美哉?”

“额呵呵呵呵呵呵。………我原以为,你身为暴雪老粉丝,来到电影院里,面对几百玩家,必有高论。没想到,竟说出如此粗鄙之语!我有一言,请诸位静听。

魔兽世界,之所以鹤立鸡群,与众不同,全赖联盟部落,阵营对立,兽人人类,大相径庭。我观众多游戏,玩家只能扮演人类,大谈正义,老套不已。唯有魔兽世界,玩家可反其道而行之,故大有乐趣,人人爱之。

联盟部落,虽对战多年,积怨已久,但此乃阵营归属,乐趣所在。正所谓,恨之深,爱之切!若一服务器,全是联盟,没有部落,乐趣何在?!部落猪,联盟狗,看似粗俗,其实早已是爱称!汝连这都无法看出,竟敢要我删号,投奔联盟,亏你说的出口!”

“部落猪……,你敢!!”

“住口!无耻狗贼。自当年dota兴起以来,MOBA类游戏日益风行,MMORPG类游戏逐渐式微。后又逢LOL横空出世,腾讯助威,全球流行,魔兽世界更是乏人问津。虽有85级大灾变、90级潘达利亚助威,怎奈大势所趋,不可逆也。后逢德拉诺之王,剧情扯淡,要塞困人,玩家怨声载道,人心涣散,6.2便匆匆结束。值此国难之际,你身为艾泽拉斯一员,却在魔兽电影上映之时,大谈阵营归属,联盟部落,在我们魔兽玩家里大搞分裂,你何异于助纣为虐!”

“我…我……”

“你枉称为魔兽玩家!我,从未见过有如此,厚颜无耻之人!!”

“啊………!!!”

甲骨文云ubuntu系统关防火墙

  6、Ubuntu系统 开放所有端口 iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F Ubuntu镜像默认设置了Iptable规则,关闭它, ap...