编辑
2023-10-27
运维
00
请注意,本文编写于 453 天前,最后修改于 453 天前,其中某些信息可能已经过时。

目录

起因
需求
远程控制服务
Stream机器人

起因

这两天有一个需求需要用到钉钉机器人,这边打开钉钉开发者后台看到新的推送方式

image.png

好 看起来挺好玩的 所以试一试。

需求

首先我们这边有一个服务是将A的数据同步到B,但是这个过程中如果修改了B的内容将会因为同步机制问题导致我们在B的修改无效,所以这边写一个小机器人给业务那边方便开启和关闭服务(后台的界面不能给 因为数据库的账号密码都是明文)

远程控制服务

这个二开的服务呢是靠windows服务来控制的,首先想是不是可以让开发给个可以控制开关的接口。但是这个开发呢,也是外面请的,有可能太麻烦对方了。所以我这边想到现在反正都可以ssh连设备,就用ssh登录以后使用cmd命令来控制服务的启动和关闭就ok了。

确定了方向那就先写一下功能的部分,ssh连接并执行命令很常见了,去抄一点代码。

python
import paramiko class SCStatus(): def __init__(self,hostname,username,password,port=22) -> None: self.ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.ssh.connect(hostname=hostname, port=port, username=username, password=password) def runCMD(self, com): stdin, stdout, stderr = self.ssh.exec_command(com) stdout = stdout.read() stderr = stderr.read() if stdout: return 1,stdout.decode("GBK") return 0,stderr.decode("GBK")

这边一开始是在win环境下测试的 最后两行写的decode("ansi"),但是要注意,在linux环境中是没有这种编码方式的,需要写成GBK。 具体业务部分就不展示了,无非就是实例化以后调用runCMD来进行命令执行。 ssh连上cmd后控制服务可以通过以下命令实现

cmd
# 确认状态 sc query {服务名} # 启动服务 sc start {服务名} # 关闭服务 sc stop {服务名}

后面就是调用钉钉机器人的部分了

Stream机器人

Github链接 这是官方提供的Python指引,估计是新功能所以也没有其他python文档可以看了。官方功能介绍中都是java的示例。那我就找一个example的改一下用用就好了。

不过官方的说法,这个JDK还是以接收为主。高级的卡片等发送方式还是需要用openAPI进行。

3961c593ca4862989810fbda50bbee63.png