LINGBO.ME

知道越多,语言越少。明白一点真理就看到太多虚妄。

分类: geeker

  • freenas 查找删除文件

    找空文件夹

    1
    find . -empty

    删除空文件夹

    1
    find . -empty -exec rm -rf {} ;

    查找文件并删除

    1
    find . -name "*.png" -exec rm {} ;

    查找小于100M的文件

    1
    find . -type f -size -100M

    https://www.freebsd.org/cgi/man.cgi?find(1)

  • 在openwrt上开启快速漫游

    1,设置AP模式
    参考官方wiki:https://wiki.openwrt.org/doc/recipes/dumbap
    2,替换wpad-mini

    1
    2
    3
    opkg update
    opkg remove wpad-mini
    opkg install wpad

    3,开启并配置802.11r
    参考:https://www.reddit.com/r/openwrt/comments/515oea/finally_got_80211r_roaming_working/

  • 在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
    }

  • freenas进jail

    1
    2
    jls
    jexec 1 /bin/tcsh
  • 添加免费证书(备忘)

    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]
  • 更新Home Assistant

    1,停止运行HA

    1
    sudo systemctl stop [email protected]

    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 [email protected]

    #备忘手札

  • 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]

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

  • openwrt显示Rejected request from RFC1918 IP to public server address

    openwrt显示Rejected request from RFC1918 IP to public server address

    编辑/etc/config/uhttpd 将option rfc1918_filter 1改为option rfc1918_filter 0