SSH 端口转发

SSH 全称 Secure Shell,是一种加密的网络传输协议,可以在不安全的网络中为网络服务提供安全的传输环境。

几个 ssh 命令的参数

  • C 压缩数据传输
  • -f 后台登录用户名密码,如果省去该参数 ssh 会一直等待
  • -g 允许打开的端口让远程主机访问
  • -N 不执行shell
  • -T 表示不为该连接分配TTY
  • -p 后接端口

本地端口转发

本地端口转发,就是将发送到本地端口的请求,转发到目标主机端口。

ssh -L 本地网络地址:本地端口:目标主机地址:目标端口 root@<主机地址>
ssh -L localhost:3000:localhost:80 root@<ip>  # 将发送到本地3000端口的请求,转发到远程主机80端口
ssh -L 3000:localhost:80 root@<ip>  # 将发送到本地3000端口的请求,转发到远程主机80端口,省略掉本地地址
ssh -p port -C -f -NT -g -L 3000:localhost:80 root@<ip>

远程端口转发

远程端口转发,就是将发送到远程端口的请求,转发到目标端口,一般用来将公网主机端口请求转发到局域网内机器端口以实现外网访问。

ssh -R 远程地址:远程端口:目标地址:目标端口 root@<主机地址>
ssh -R localhost:3000:localhost:80 root@<ip>  # 将远程主机 80 端口的请求转发到本地3000端口
ssh -p port -C -f -NT -g -R 3000:localhost:80 root@<ip>

动态端口转发

动态端口转发,则是绑定一个本地端口,目标地址,目标端口不固定,目标地址和目标端口由发起的请求决定。只有root才能转发特权,支持 Socks 5 本地。

ssh -D 本地地址:本地端口 root@<主机地址>
ssh -D localhost:5000 root@<ip>
ssh -D 5000 root@<ip>           # 省略 localhost,监听本地5000端口
ssh -p port -C -f -NT -g -D 8080 root@<ip>        # Sock监听本地 8080 端口,任何发给 8080 端口的内容都会被转发到远程主机

reference


2018-05-28 ssh , port , forward , linux

每天学习一个命令:netcat 查看网络信息

nc 全称 netcat,是一个强大的网络工具,可以在网络中对 TCP UDP 读写。

监听本地端口

nc -l -p 80   # 开启本机80端口TCP监听
nc -l -p 80 > /tmp/log

机器上运行该命令,端口80会被认为开饭,可以用来欺骗扫描机

扫描端口

扫描端口

nc -zv host.example.com 22 80 443    # 扫描端口
nc -zv host.example.com 20-30        # 扫描一个范围
nc -zv -w 5 host.example.com 22-443  # -w 表示超时等待5秒

作为简单的Web Server

nc -l 8080 < index.html

客户端请求

curl localhost:8080

reference


2018-05-28 netcat , nc , linux , tcp , udp

如何为视频配上合适的背景音乐

电影电视剧配乐一直都是一门学问,我一直很好奇韩剧或者韩综的配乐,如何能做到用音乐去推进故事,用音乐是暗示结局。但其实本文就是罗列了几个收集音乐的好地方,本不求达到那么专业的水平,只求在日常vlog或者短片中找到合适的BGM。

SoundCloud

SoundCloud 是一个在线音乐分享平台,上面有无数的音乐人作品,但是使用的时候请一定遵照版权。

几个账号

icons8

这是 icons8 推出的免费音乐计划,只有在使用的地方标注来源即可免费使用网站上的任何音乐素材。

YouTube

YouTube 是一个视频分享网站,YouTube 自身的版权做得非常健全,如果你使用了盗版的音乐素材极有可能直接被YouTube Content ID 扫描出来而直接屏蔽,所以谨慎使用版权素材,因此 YouTube 也提供了他的免费音乐库,上面也有非常多的选择。

另外作为数一数二的视频分享网站,YouTube 上面也有无数的音乐人,作曲家自己分享了很多作品,你可以在标明涞源的情况使用他们的音乐,这个就要依靠自己的发觉或者自身的喜好来决定收藏了。

bensound

Bensound 是一个免费的音乐素材网站,有丰富的免费音乐素材

artlist.io

该网站为收费网站, 199 刀 一年,还是很贵的


2018-05-28 music , youtube , soundcloud , sound , bgm , video

搬家整理之术收纳之术

最近要搬家,最初的需求就是快速打包搬走,想要找一些比较好用的搬家神器,搬家神器倒是没找到,不过找到了一些日常收纳整理之术。平时如果注重收纳整理,知道断舍离,其实搬家也远没有那么的痛苦。

可能提到搬家很多人会想到小推车,收纳箱等等用于收纳的物品,当然这些都是日常生活中必不可少的。即使不搬家,在家中使用收纳箱收拾平时不穿的鞋子,衣服等不仅能够防潮,也方便了快速分类整理。下面也不多废话,就直接把我整理过程中觉得比较有用的记录下来。

收纳

想要打包的时候加快速度,那就一定成都上依赖于平时的收纳,我自己平时本没有那么注意收纳,因此在打包时格外的零碎,各种文件,电器,工具分散在房间的各个地方,抽屉,架子,箱子中哪里都是。这可能是我第一要注意的事情,物品分类收纳是平时就需要养成的习惯。说到分类整理,对于我这样常年在外的人来说,收纳箱就必不可少了,虽然可能也有柜子书桌,但是一遇到搬家可能就要挪位置,还不如直接使用收纳箱来整理。

列清单

按照 不常用 - 常用 - 日常用 顺序打包,最后打包日常洗漱用品,杯子、碗筷、枕头、床铺之类

我是这么觉得,如果要出差一周需要打包的东西,比如洗漱用品,换洗衣服,以及必要的电子设备,这些可以放到最后打包,其他剩下的所有东西都可以提前打包好。最后留一个 20 几寸的行李箱装下所有日常装备就行。而其他平时不用的分类整理到收纳箱,或者纸箱中等待运输即可。易碎物品一定要贴上标签,特别注意。

日常用品基本上可以用一个行李箱搞定,剩下的就是平时也会用到的,比如台灯,衣架等等一个礼拜就要用上几次的物品,这类物品可以稍晚一些打包,预留一个比较充裕的纸箱,或者收纳箱,最后在搬家前将这类物品迅速的放到箱中,搬完之后也可以第一时间将这些物品拆出来。

而剩下的不常用的物品,按照物品品类分类打包:

  • 电器,日常大概率使用的电器,比如电磁炉,电饭锅,电水壶,显示器,音响等等可以提前打包好,稍微大一些的电器比如电饭锅等等如果有原包装带泡沫垫是最好的,否则也要做相应的防碰撞措施。
  • 小家电,最好有原包装,没有的话,没用的毛巾衣服就可以派上用场了,用它们或者其他软物报纸等包起来,避免在搬动时碰撞
  • 电源线,所有的家电电源线,能拿下来的,贴好标签装在一个袋子里,不能拿下来的,用胶布贴死在电器上。
  • 被褥,非当季的被褥衣服鞋子等等也可以装入收纳袋,纸箱封存起来,贴上相应的标签方便未来拆箱
  • 衣服,在所有东西里,衣服大概是最好打包的,可以按照存储的地方分类装袋或装箱
  • 鞋子,如果有盒子,可以直接把鞋装在盒子里,用胶布封好,然后用绳子或胶布粘成可以单手拎一次的大小;如果没有盒子,可以用绳子或胶布按双困在一起,放在箱子或袋子里
  • 贵重物品,一般都是要单独携带,以免丢失。数码产品类单反、单反镜头、笔记本电脑等… 证书类:毕业证书、学位证书、各种资格考试证书等等
  • 液体,卫生间和厨房各种洗洁精、洗发水、洗手液等开封的瓶瓶罐罐,扣紧,再用塑料袋封口,加胶带缠一圈,以免散出来
  • 粉状,各种没用完的调料、洗衣粉等开封的袋装物品,都用胶布封好,装箱。在箱子外面贴上”向上”“怕洒”
  • 书籍,等密度高的东西尽量使用小箱子装,或者将书分别放到多个箱底分散重量。放重物的箱子,底部要确实封牢
  • 其他各种不怕摔的零碎可以按照各种方法分类装箱,我习惯于按照平时存放的位置一袋一袋整理,比如抽屉里的东西,按顺序每个抽屉装一袋,拆包时可以就可以直接放回抽屉
  • 食材,一般在搬家前就要尽量减少采购食品原料,如果实在没用完,如米、面、蔬菜等,可以分类装箱,需要的写上“勿压”之类;如果是冰箱里的冷冻食品就只能请家庭成员单独携带了
  • 绿植,如果不太大,可以直接拎过去
  • 编号,打包好了最好编号,可以列个清单大致记一下每个箱子里都有什么,记住箱子和袋子,以免东西丢失而不自知,拆包时找东西也会比较快

对于我,大部分的电器我都留了原始的包装,其中的防碰撞泡沫可以完美的契合物品,除此之外各种零碎物品我都放到抗压的收纳箱中,衣服被褥则放到了收纳袋,然后装到纸箱中。

我个人使用了 50L 的收纳箱,然后有一下规格的收纳袋, 45 * 70 可以放下一个枕头,或者日常春秋外套, 56 * 80 放一些冬季棉衣、羽绒服,80 * 100 放被子等大件。

总结

整理过程中,该丢的一定要丢掉,学会断舍离,然后平时一定要学会分类整理,把规划制定到平时。所以写到这里也就回答了我最初的问题,有没有搬家神器,有,只不过都在平时。


2018-05-26 thought , sort-out , moving , clean-up

rabbitmq

RabbitMQ 消息代理,能够接收并转发消息,可以把他看成邮局。

RabbitMQ is open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP). The RabbitMQ server is written in the Erlang programming language and is built on the Open Telecom Platform framework for clustering and failover. Client libraries to interface with the broker are available for all major programming languages.

安装

各个平台的安装官网都非常详细: https://www.rabbitmq.com/download.html

各个语言的客户端:https://www.rabbitmq.com/devtools.html

apt install rabbitmq-server

Docker 安装

docker pull rabbitmq
docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmq rabbitmq:latest  

rabbitmq 默认的 latest tag 是不带管理页面的如果是要管理页面需要使用 rabbitmq:3-management

docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmq rabbitmq:3-management

启动之后访问 http://ip:15672 就能够访问管理后台

使用

列出当前 RabbitMQ 中的队列

sudo rabbitmqctl list_queues

列出 exchange

sudo rabbitmqctl list_exchanges

各个客户端的教程官方的教程非常详细可以直接参考。

reference


2018-05-25 rabbitmq , message , broker , queue

每天学习一个命令:ip 处理网络管理任务

linux中的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。ifconfig是net-tools中已被废弃使用的一个命令。iproute2 套件里提供了许多增强功能的命令,ip命令即是其中之一。只需一个ip命令,就能很轻松地执行一些网络管理任务。

常见用法

给机器设置一个IP地址

sudo ip addr add 192.168.0.193/24 dev wlan0

列出路由表条目

ip route show

显示网络统计数据

ip -s link

2018-05-22 network , linux , command , ip , ifconfig

斐讯 k3 刷机教程

k3 的折腾记录

降级

我的固件版本 V21.6.12.66

只要两步,WEB直刷,就能降级

  • 第一步,下载提供的 K3_V21.6.11.58P 固件,并在WEB管理页面手动升级处,选择这个固件刷机
  • 第二步, 选择欲降级到的固件 比如 K3_V21.5.37.246,在WEB管理页面手动升级处,选择这个固件刷机,就可以降级到 K3_V21.5.37.246

K3_V21.6.11.58P 下载地址 链接: https://pan.baidu.com/s/1rasSyjq 密码: ksxp

K3_V21.5.37.246 下载地址 链接: https://pan.baidu.com/s/1mjv2jaC 密码: xmrh

激活 Telnet

使用这个教程 激活 Telnet 端口

然后备份路由器

telnet 192.168.2.1

mount  # 查看当前挂载的U盘
cd /tmp/share/sda1/
mkdir backup
cd backup
cat /dev/mtdblock0 > mtdblock0.bin     # 备份CFE
cat /dev/mtdblock5 > mtdblock5.bin     # 备份设备信息
cat /dev/mtdblock6 > mtdblock6.bin     # 备份固件,备份固件时间可能有些长 1min左右

这个几个分区的作用

对于K3官方固件:

mtd0 boot cfe引导分区,建议备份,还包含了部分nvram参数和MAC等信息,不要刷入别人的,也不要随意刷写这个分区。 mtd1 nvram 设置分区,不用备份,保存了路由的所有设置信息,恢复出厂时会格式化然后从cfe和当前固件复制默认参数。 mtd2 nvram_back 从名字看像是nvram的备份,实际固件没有使用,全部空白,不用备份。 mtd3 res_info 没有使用,全部空白,不用备份。 mtd4 pro_info 只有6字节数据,00904C17F234,所有机器都一样,可选备份,就算没备份把这6字节复制过去就恢复了。 mtd5 dev_info 176字节数据,好像是加密的固件的版本一些信息,刷写官方固件版本号发生变化时候这里的数据就变化,可选备份。 mtd6 linux 整个固件分区,平常刷写官方固件或者LEDE都是刷到这里,官方提供固件下载,只要cfe正常随便刷,不用备份。 mtd7 rootfs 动态的,包含在linux分区,mtd6减去当前固件内核部分,是固件的后半部分,而固件是一个整体,当然不用备份。 mtd8 brcmnand 存储分区,日志文件、自己安装的软件保存再这里,固件版本信息变化时系统会格式化,不用备份,也不要恢复。

寻找固件刷入

这里我使用 abccba94 官改固件,在页面下载固件,现在最新的已经到了 k3_v16d ,解压,得到 k3_v16d.bin 文件,复制到 U 盘,如果 U盘还连在路由器,可以使用 \192.168.2.1\ 然后远程将文件拷贝到U盘中。

然后在登录 telnet 192.168.2.1

cd /tmp/share/sda1/
cat k3_v16d.bin > /dev/mtdblock6 && reboot

将该目录下固件刷入,等待重启之后,做一次恢复出厂设置,长按 reset 键5秒。

固件大全

K3 的固件整理大全

  • 官改固件 by abccba94 http://www.right.com.cn/forum/thread-259012-1-1.html
  • 官改 By tianbaoha http://www.right.com.cn/forum/thread-212725-1-1.html
  • 梅林 By 63780223 http://www.right.com.cn/forum/thread-249788-1-1.html
  • 梅林 By laode1987 http://www.right.com.cn/forum/thread-251361-1-1.html
  • LEDE By stones http://koolshare.cn/thread-104733-1-1.html
  • LEDE By XiaoShan http://www.right.com.cn/forum/thread-215164-1-2.html
  • LEDE By ypjalt http://www.right.com.cn/forum/thread-215807-1-4.html
  • LEDE By Lean http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=214087
  • LEDE By updateing http://koolshare.cn/thread-91998-1-1.html

entware 包管理

在管理后台软件中心安装 entware 之后,可以使用命令安装很多扩展。

entware 中的包列表:

http://pkg.entware.net/binaries/armv7/Packages.html

网页终端模拟器

安装 ttyd

opkg install ttyd

然后在 webshell 中设置开启网页管理,那么直接访问 http://ip:7681 ,输入用户名和密码就能够在网页中管理路由器。

ttyd 开源在GitHub,使用C语言,websocket通信。

更多有趣的包可以查看这里

手机移动端SSH工具:

IOSTermiusPrompt 2
AndroidJuiceSSHConnectBotTermius

reference


2018-05-19 斐讯 , phicomm , k3 , 刷机 , router

个人非常喜欢的几个icon 主题

我一直用的是 Cinnamon 的桌面环境,使用 icon 主题也比较方便,这里就做个记录。

Papirus icon

地址:

安装

sudo add-apt-repository ppa:papirus/papirus
sudo apt-get update
sudo apt-get install papirus-icon-theme

Ultra flat icon

地址

安装

sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install ultra-flat-icons

更多的ICON主题可以看


2018-05-19 linux , icon-theme , unity , theme

yourls 相关工具和API调用

自己的 yourls 已经搭建完毕 ,重要的就是如何高效的用起来了, yourls 自身提供了很不错的快速访问工具,安装完毕之后直接浏览

https://域名/admin/tools.php

可以得到书签栏中的快速访问工具,直接拖拽到浏览器的地址栏就可以快速的将当前的页面地址缩短。这个工具也就不多介绍了,这篇文章主要摸索一下 yourls 的API调用,以及如何在PC,和移动端快速的使用短链接服务。

API 访问

yourls 提供了丰富的API,使用自身的API可以实现

  • 产生或者获取短链接
  • 获取短链接的统计信息,包括点击最高的链接,最后一次点击的链接,或者新产生的链接等等
  • 可以以 JSON, XML 或者纯文本输出
  • 通过用户名密码或者安全的无密码token机制授权

请求的地址

https://域名/yourls-api.php

通过 GET 或者 POST 请求(GET请求需要URL Encode)

参数

两种方式获得授权,一种是使用 username / password 对发送请求,但是这种方式不安全,可能导致用户名密码在传输过程中被截取泄露;另一种方式是使用不需要密码的 token 机制,在 admin/tools.php 页面会产生当前用户的验证 token。

动作 action 参数有很多个选项

  • shorturl 获取链接的短链接

    在使用了值之后,另外两个参数

      - `url` 用来缩短的原始链接
      - `keyword` 或者 `title` 可选参数,用来自定义短链接
    
  • expand 获取短链接的原始长链接

    将短链接展开

      - `shorturl` 值可以为 `abc` 或者完整的短链接
    
  • url-stats 获取短链接的信息

    短链接的统计信息

      - `shorturl` 值可以为 `abc` 或者完整的短链接
    
  • stats 获取链接的信息

    获取链接的信息

      - `filter` 值可以为 `top`, `bottom`, `rand`, `last`
      - `limit` 返回的数量
    
  • db-stats 获取全局的链接和点击数

输出格式 format 参数用来指定API输出的格式,有如下值

  • jsonp
  • json
  • xml
  • simple

举例

请求缩短链接

curl -X POST \
  https://gtk.pw/yourls-api.php \
  -F signature=xxxxxx \
  -F action=shorturl \
  -F url=https://gtk.pw/readme.html \
  -F format=json

返回结果

因为之前已经请求过,所以报了fail,不过结果依然能够从 shorturl 中拿到

{
    "status": "fail",
    "code": "error:url",
    "url": {
        "keyword": "OStH3",
        "url": "https://gtk.pw/readme.html",
        "title": "YOURLS: Your Own URL Shortener",
        "date": "2018-05-18 03:27:36",
        "ip": "123.123.123.7",
        "clicks": "0"
    },
    "message": "https://gtk.pw/readme.html already exists in database",
    "title": "YOURLS: Your Own URL Shortener",
    "shorturl": "https://gtk.pw/OStH3",
    "statusCode": 200
}

其他几个API同理,返回结果结构稍有差异不过都类似。

iOS 移动平台快速获取短链接

iOS 上可以借助 Workflow 快速实现,主要的步骤

  • Get Clipboard
  • Get URLs from Input
  • URL -> API地址 https://域名/yourls-api.php
  • Get Contents of URL -> 构造参数
  • Get Dictionart Value -> shorturl
  • Copy to Clipboard

然后每一次将链接复制到粘贴板,然后运行该 workflow ,短链接就在 Clipboard 中了。

第二中方法,是直接在浏览器中,在链接前面加上,yourls 的域名,比如

https://blog.einverne.info

加入yourls 的域名是 https://gtk.pw

那么在链接前加上 gtk.pw,yourls 会跳转到 admin 页面并添加该链接

gtk.pw/https://blog.einverne.info

其他平台同理,不过需要登录 admin 略麻烦。


2018-05-18 yourls , url-shorten , api , domain , linux

chevereto 备份及恢复记录

之前安装 Chevereto 时还没有折腾 Docker,后来发现 Docker 安装 实在太方便了,所以现在就将数据迁移到 Docker 中,备份和恢复的方式主要可以参考之前写的文章

备份

对于 Chevereto 这样的程序主要备份的就是数据库和文件,mysql 备份没啥说的,文件也直接打包即可。

恢复

这里主要展开下恢复,一方面在 docker-compose.yml 文件中,我映射列两个 volumes,

volumes:
  - chevereto:/var/www/html/images
  - chevereto_content:/var/www/html/content

这两个文件路径,images 主要存放的是上传的图片,而 content 目录一开始的时候我们并没有加上,导致一些系统的logo还有用户的头像消失了,我对比了下目录中存放的文件,发现 Chevereto 将这些资源文件存放在了 content 目录中,映射出来,然后恢复的时候将之前备份的内容恢复到这两个目录即可。

数据库恢复也比较容易

sudo cat backup.sql | sudo docker exec -i chevereto_db /usr/bin/mysql -u root --password=password chevereto

然后文件恢复时直接恢复到 volumes 的目录,sudo docker volume inspect volume_name 然后查看 volume 的位置,将文件解压到该目录下。

然后 chown www-data:www-data * 来改变权限即可。

这个备份和恢复的操作同理可以应用到任何类似 WordPress,Chevereto 这样的PHP应用上。


2018-05-16 chevereto , photo , backup , docker , docker-compose

电子书

Google+

最近文章

  • 使用 alembic 迁移数据库结构 Alembic 是一个处理数据库更改的工具,它利用 SQLAlchemy 来实现形成迁移。 因为 SQLAlchemy 只会在我们使用时根据 metadata create_all 方法来创建缺少的表 ,它不会根据我们对代码的修改而更新数据库表中的列。它也不会自动帮助我们删除表。 Alembic 提供了一种更新 / 删除表,更改列名和添加新约束的方法。因为 Alembic 使用 SQLAlchemy 执行迁移,它们可用于各种后端数据库。
  • 每天学习一个命令:iotop 查看 Linux 下每个进程 IO 占用 iotop 是一个用来监控磁盘 I/O 的类似 top 的工具,Linux 下 IO 统计工具,比如 iostat, nmon 等只能统计到每个设备的读写情况,如果想要知道哪一个进程占用比较高的 IO 就要使用 iotop。 iotop 使用 Python 语言编写,要求 Python >= 2.5,Linux Kernel >= 2.6.20.
  • 修正关于 HTTP Header 的错误认识 HTTP 请求的 Header 是不区分大小写的!,一直以为 HTTP 请求的请求头是有区分大小的,知道今天调试发现 Spring 将 header 全部处理成小写,然后有人提了 Bug 58464 然后看到 Stackoverflow 上面有人回答。
  • 解决 failed to create bus connection no such file or directory 错误 今天在修改 hostname 使用 sudo hostnamectl set-hostname ds 命令时遇到问题:
  • Vim 的颜色主题 Retro groove color scheme for Vim