ubuntu Command swager not found

一个go项目迁移后,某天swagger页面提示如下错误:

Errors
Hide
Resolver errorCannot read properties of undefined (reading '1')

回忆一下好像最近改了一些接口,于是想用swag init来重新生成文档,但是提示我 ==Command 'swag' not found==。迁移后swag组件没装。按官网

用SQL批量更新通达OA角色权限

用SQL批量更新通达OA角色权限

备忘

由于给通达OA开发了个新模块,想让该模块某些权限开发给大部分人员。几百个角色,一个个改权限,还是挺麻烦的。于是看看能不能批量处理,让甲方爸爸加快结尾款$的速度。查看通达OA后台有导入导出功能,但导出时权限模块是中文的==显然不太符合常规逻辑==,应该要对应的模块ID才对。

那就改数据库吧,经查其数据库有两个关键表对应这里的功能实现。一个是sys_function,用于存放模块信息;另一个是user_priv,用于保存角色允许访问的模块列表。知道这两个表后,还有啥难度呢,备份当前表,一顿操作猛如虎,一会就搞定了!

image-20231219001147349image-20231219001147349

image-20231219001522874image-20231219001522874

解决vcenter中esxi离线与datastore inaccessible

解决vcenter中esxi离线与datastore inaccessible

一、故障现象

某地数据中心不正常停电,导致vcenter中的esxi服务没正常启动,管理页面打不开,通过service-control --start --all全部启动服务后,能正常进管理页面,但此时esxi全部离线。逐个esxi右键---reConnect主机,基本能正常添加。只有一台死活添加不上,在解决的过程中遇到的一连串无厘头问题(==实际还更多==),下面将重点列几个。

二、处理

  1. 处理datastore遗留问题

添加不上只能手动删除离线的esxi,但再重新添加时提示如下:

Datastore 'datastore_ssd' conflicts with an existing datastore in the datacenter that has the same URL

jumpServer添加自定义服务

jumpServer添加自定义服务

一、需求

项目中为了节省资源并且方便日后统一管理,需要将一些不太重要的服务整合到一起。一个mysql或redis容器同时为多个不同的系统提供服务,加快一些边缘服务的部署。jms本身自带一大堆组件服务,比如redis、mysql、nginx等,基本上全家桶了,开发测试都习贯连到jms的组件服务上。但是,有时候想要的服务在jms上又没有,比如要添加一个rabbit-mq或者caddy,单纯docker run xxx或docker-comose up的话,默认运行的容器网络与已有的jms网络不共存,而且各服务启停要分开管理,不太方便。

为了解决这个问题,开始研究怎么往jumpServer里添加自定义服务。通过分析jms源码,很顺利的实现了,这里以caddy为例做介绍。

用python实现vmware esxi虚拟机断电自动关机

用python实现vmware esxi虚拟机断电自动关机

一、前言

机房服务器一般配备UPS,当市电停掉时,仍然到维持一段时间。但是,如果长时间停电,UPS也撑不了。此时就需要及时关机以确保数据安全。很多年以前用过winpower软件,通过目标系统安装agent,并用winPower连接UPS,当UPS电量低于设置的阈值时,给各个agent下发关机指令,以实现自动关机。这种方式可以充分利用UPS电量,较为精准的判断电池续航情况,并采取相应动作,但是操作起来有点麻烦。

另一种方式是采用自动化脚本的方式,通过循环ping 某个常接市电设备ip,当失败超过一定次数,触发powerOffVMs,最后shutdown esxi系统。这种方式无需与UPS通讯,只要市电断开,超过一段时间就执行关机指令,超作起来比较方便。但是,这种方式可能存在误判,比如交换机挂了,此时ping设备必然失败,最终会触发关机。因此下面介绍一种更为稳妥的方案。

二、实现

  1. 原理

    利用esxcli 来esxcli hardware ipmi sdr list | grep "Power\ Supply\ 1\ Status\|Power\ Supply\ 2\ Status"来检测电源是否正常。当其中一路电源断开或异常时,调用powerOffVms.py关闭各虚拟机,最后再调用poweroff 来关闭esxi。