分类目录: 实用脚本

介绍一个生产力工具:ntfy

之前为了监控家里的IP地址的变化,写了一个循环任务,每隔几秒钟访问一次ifconfig.io,获取大网IP,当发现IP地址变化时,通过mailgun发邮件到自己邮箱,用这种方式感知到IP地址变化,同时也使用域名提供商的域名解析接口刷新IP地址。这个邮箱通知的方式有点偏重,并且mailgun随时有被墙的风险。最近开始接触虚拟币投资,发现虚拟币的波动大,适合短线交易。合约支持看空和看涨,因此只要有交易量,价格有波动则适合买卖,当然能否踩准加仓和平仓的波峰波谷才是关键。对于我这样每天并不能随时看盘的上班族而言,希望有个后台监控任务,识别已经仓位变化,变化幅度大时通知到手机。全网搜刮,找到了ntfy这个应用,支持自托管,有域名即可。用docker部署了,然后也下载了官方提供的android app,设置app后台常驻,使用方法也相当简单。直接上代码:

class Notify:
    def __init__(self, endpoint, user, password):
        self.auth_header = "Basic " + base64.b64encode(
            (user + ":" + password).encode("ascii")
        ).decode("ascii")
        # Remove trailing slashes
        while endpoint.endswith('/'):
            endpoint = endpoint[:-1]
        self.endpoint = endpoint

    def notify(self, title, msg, subject):
        if len(self.endpoint) == 0:
            return

        hostname = socket.gethostname()
        msg += f" (from {hostname})"
        res = requests.post(self.get_endpoint(subject),
                            data=msg,
                            headers={
                                "Title": title,
                                "Authorization": self.auth_header
                            })
        if not res or res.status_code != 200:
            logging.error(title)
            logging.error(msg)
            logging.error(str(res.status_code) + ":" + str(res.content))

    def get_endpoint(self, subject):
        if subject.startswith('/'):
            return self.endpoint + subject
        else:
            return self.endpoint + "/" + subject

然后就是调用币安的API SDK代码,请求账号的仓位信息,发现仓位变化量达到一定幅度时发通知。区分盈利和亏损,手机app上面分别订阅盈利和亏损的topic,设置不同的提示铃声,随时感知仓位变化信息,必要时进行平仓和加仓。

Screenshot_20241224_215317_ntfy Screenshot_20241224_215323_ntfy

后面基于这个代码继续丰富这个后台任务的逻辑,走上虚拟币量化之路。

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:WEB网络, 数码硬件, 移动互联 | 标签: , , , |

关于父子进程信号传递、Shell进程退出等问题

我们通常都有这样的经历,用shell启动一个业务运行着,在终端界面上按下ctrl+c后,发现还有脚本启动的后台任务仍在运行。或者是出现另外一个方面的问题,本来希望进程安全在后台运行,退出了当前界面后,后台进程也跟着退了。关于这里第2个问题,之前有一篇博客讨论过:让进程在后台可靠运行的几种方法。今天我们探讨第1个问题,怎么让父进程(主shell脚本)退出时子进程(shell脚本中启动的所有后台任务)也退出。

我们知道当子进程退出时,父进程会收到子进程退出时发送的信号,进而做一些处理,如,父进程为守护进程的话,会重新拉起新的子进程。在shell中,我们一般使用wait命令来等待所有当前上下文中启动的后台任务。因此做如下实验脚本。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:软件技术 | 标签: , , , |

HomeNAS IP变化规律

成都电信分配给个人的家用宽带IP地址定期更新,本来是用来快速发现变化后的IP地址的一个任务,解决IP地址变化后需要15分钟才能登录的问题,结果让发现了IP地址变化的规律。每隔6天,在每天中午11点20后的一个小时内更新IP地址。不知道是只针对特定账号的任务还是所有人同一时刻变更。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:WEB网络, 移动互联 | 标签: , , |

WordPress启用HTTPS同时支持WindowsLiveWriter配置

一直都习惯使用WindowsLiveWriter发日志,开启HTTPS后发现WindowsLiveWriter用不了,推测是WLW不支持HTTPS的原因。于是重新审视“.httpaccess”文件,最终使用如下配置支持全站HTTPS和WLW继续使用。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 1票) Loading ... Loading ... | 同时归档在:WEB网络, 建站技术 | 标签: , |

分享一个树莓派延时摄影和视频制作代码

心血来潮,想着做一个阳台花草生长的延时视频。阳台上正好有个树莓派,只需要一个摄像头即可。说做就做,500万像素的树莓派摄像头,包邮只需要30元。基本够够用了。接好线,固定好摄像头位置。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 同时归档在:数码硬件, 软件应用 | 标签: , , , |

使用ffmpeg工具转换mov、avi格式为mp4

iPhone拍摄的视频备份到Home-NAS后,文件类型是mov,无法在网页上直接呈现,因此需要对视频编码进行转换。本想找一个批量转换的工具。无奈,从几个下载网站上面找了多款工具都不能完美实现,要么需要购买,要么转换后的视频效果极差。考虑使用ffmpeg工具,直接使用命令行转换,最终使用如下脚本实现了格式转换和元数据信息的拷贝。

set indir=%1

for %%a in (%indir%\*.mov) do ffmpeg -i "%%a" -map_metadata:s:a 0:s:a -map_metadata 0:g -map_metadata:s:v 0:s:v -vcodec copy -acodec copy "%%a.mp4"

for %%b in (%indir%\*.avi) do ffmpeg -i "%%b" -map_metadata:s:a 0:s:a -map_metadata 0:g -map_metadata:s:v 0:s:v -vcodec copy -acodec copy "%%b.mp4"

将如上代码保存为bat文件,将存放有mov和avi格式文件的目录拖拽到bat文件上面执行即可实现转换。

| 1 分2 分3 分4 分5 分 (5.00- 3票) Loading ... Loading ... | 同时归档在:软件应用, 软件技术 | 标签: , , |

一些有用的Linux工具和命令

1、查看进程树:ps aufx,可以看到进程的派生关系、运行用户、启动时间、耗时和内存CPU等进程状态。

阅读全文 »

| 1 分2 分3 分4 分5 分 (5.00- 4票) Loading ... Loading ... | 同时归档在:软件技术 | 标签: , , , , , , |

利用nc工具高效创建TCP/UDP协议的连接

研究网络技术或者验证某个协议传输机制时,经常需要创建一个TCP Server或者Client,必须时经常需要即时写一个。找到一个比较好用的工具,nc,NetCat。可以满足上述需求,只需要一行命令即可创建一个TCP服务端,实现最简单的收取网络数据的功能。

这里有工具的命令详解:Linux nc命令详解。简单用法:

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.90- 10票) Loading ... Loading ... | 同时归档在:IO编程, WEB网络 | 标签: , , |

技术文章收集

1、Ceph vs Swift – 架构剖析
2、12个进程管理相关命令
3、关于Ceph现状和未来的一些思考
4、Swift特性研究

| 1 分2 分3 分4 分5 分 (3.86- 7票) Loading ... Loading ... | 同时归档在:Ceph, Swift | 标签: |

2014年9月曝出的Bash ShellShock漏洞简析

昨天,Bash曝出在调用环境变量设置命令或者接口时,可以任意执行Bash命令语句,绕过用户权限的限制。基本原理是:

$ env x='() { :;}; echo vulnerable'

如上bash脚本,本来只是定义一个环境变量x,但是其后面的内容全部都会被当作语句来执行,这也就是当以函数的形式来对环境变量来进行赋值时,会导致函数后面的命令被执行。即,env命令在执行赋值语句时未检查函数的边界,导致函数之后的内容也被执行。运行如上代码,屏幕如果显示“vulnearable”,那么系统的bash就存在该问题。目前确知的是,4.3版本之前的bash都存在该问题。该漏洞的代码为:CVE-2014-6271。

这个本身好像并没有多可怕的,因为一般能拿到shell,那么就有了整个环境的操纵权限,也不需要去用命令注入的方式来攻击了。但是存在一些场景允许远程执行Bash命令,正好又会在命令中调用环境变量设置函数。如CGI、DHCP等。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.92- 12票) Loading ... Loading ... | 同时归档在:WEB网络 | 标签: , , , |