工作简介(内部)

  • 形成规则

  • 建立流程

  • IT平台固化

    最终形成团队

企业管理三角

愿景:一切皆数据,行为可度量。

信息化关键指标:

  • 目标(管理):
    • 打通各系统之间信息的壁垒(个人主页一览多业务系统)(人为定义使系统割裂)
    • 有电脑的办公人员使用okr目标自我管理
    • 自由流程新业务跨部门协同
  • 目标(生产)
    • 模块可对接
    • 生产虚拟调试(仿真)simpy
  • 目标(后勤)
    • it运作自动化可视化

数字化管理+数据BI

自己动手,丰衣足食

部门文化: 持续改善【提升,复制】

(人-事-物)都在系统中

精益生产:质量+时间+成本

类型特点方向
信息化人管机器工具的延伸
数字化机器管人能力的拓展
数造化数据管机器由人设计,无人制造

精神:说到、做到、看到、得到

【模块化 +通信规范 】

服务器

编号设备名位置内存存储连接地址备注
1dell R440机房2号机柜32GB4T+480g192.168.0.1231U
2dell R740机房2号机柜128GB8T+480g192.168.0.482U
3dell R740+机房2号机柜128GB4T+480g192.168.0.452U (旧)
4台式机机房2号机柜(下)164T192.168.0.121
5台式机机房2号机柜(下)16128G192.168.11.122

功能服务与vm虚拟化

服务名称访问地址包含服务备注
金蝶云192.168.0.48金蝶云
k3WISE192.168.0.45k3WISE+mes(1.0)
oa192.168.0.107OA恒有
网盘192.168.0.48生产部门网盘
pve虚拟化192.168.14.126pev8006端口
qemu虚拟化192.168.0.121备份,it网盘
dns服务192.168.0.121dns 域名劫持
docker192.168.0.121sql service 2019, 测速,smaba
软路由192.168.0.1route路由
pve服务192.168.11.1448006端口
火绒后台192.168.0.121:8080杀毒软件企业版本地部署 用户: admin前端89端口
h3cAC控制台192.168.26.1新厂房wifi
ipkvm192.168.14.20连接pve集群
pve2192.168.14.126only office / nas8006
pve1192.168.0.126openwrt / nas.12216G 500G*2
only office192.168.14.2208080端口
nginx代理192.168.0.121:81数据转发

网络设备

编号位置管理地址包含服务型号
0机房192.168.0.1软路由
1机房192.168.0.3企业路由器h3c 5560
2机房192.168.0.2企业核心交换机(老)华为S3700-28TP
3机房192.168.11.200部分接入,分担核心锐捷万兆 RuiJie nbs5552xg
47号楼192.168.11.202POE交换机接入摄像头+办公电脑S1850V2-28P-HPWR
53号楼192.168.11.203POE交换机接入摄像头+办公电脑S1850V2-28P-HPWR
69号楼192.168.11.205本楼层监控和办公室S1850V2-28P-HPWR
710号楼本楼层
85号楼本楼层
91号楼本楼层
1011号楼本楼层
11服装电商本楼层
12门卫

无线接入

接入ip设备位置备注
wsf-vip访客网络-访客网络 密码wsf12345678
left2lou192.168.11.1二楼机房覆盖范围:二楼会议室,设计办公室
wsf-lou192.168.25.8一楼大办公室覆盖范围:大厅,小会议,大办公室,行政办公室
sale_true192.168.15.140财务室覆盖范围:财务室,总经理办公室
left2lou访客接待室

网络扫描报告

图文加载中...请稍后....

订单-评审工作流程

外贸工作流程图

graph TB;

sell(1.外贸业务员)
pmc(2.生产pmc)
acc(2.财务)
ceo(3.总经理)
e((完结))
code{成品代码}
bill>销售订单]
bom(王飞)
sell -->code --有-->bill
code --无-->bom
bill  --> pmc ;
bill  -->  acc  --> ceo;
ceo -->e;
pmc -->ceo;

 

销售订单--标准销售订单(外贸)

步骤所属职位所属人备注
1外贸业务员根据单据类型走不同的工作流程来审批
2财务
2PMC
3总经理
4结束

内贸工作流程

graph TB;

sell(1.内销业务员)
pmc(3.生产pmc)
acc(3.财务)
ceo(4总经理)
e((完结))
code{成品代码}
bill>销售订单]
bom(王飞)
sellm(2.内销总监)
sell -->code --有-->bill
code --无-->bom
bill -->sellm
sellm--> pmc ;
sellm -->  acc  --> ceo;
ceo -->e;
pmc -->ceo;

 

销售订单--现销订单(内销)

步骤所属职位所属人备注
1内销业务员根据单据类型走不同的工作流程来审批
2营销总监
3.1PMC
3.2财务部
4总经理
5结束

发货--工作流程图

步骤所属职位所属人备注
1外贸业务员根据单据类型走不同的工作流程来审批
2财务
2PMC
3总经理
4结束

价格变更触发



图文加载中...请稍后....

标准业务流

标准销售流程

销售--主流程

graph TB;
外贸销售[外贸销售]
电商销售[电商销售]
渠道非标[定制类销售]
现货销售[渠道销售]
预测订单[预测订单]

外贸销售-->销售订单
现货销售-->销售订单
电商销售-->销售订单
渠道非标-->销售订单

销售订单-->采购订单
销售订单-->生产订单
销售订单-->委外订单
销售订单-->发货通知单
subgraph 财务部
收款单
应收单-->收款单
end
subgraph 生产部
生产订单
end
subgraph 仓库
发货通知单-->销售出库单 
销售出库单--自动-->应收单
end


 

变更订单

业务操作--订单变更--生效

周边流程

graph TB;
销售出库单-->退货通知单 --> 退货单
图文加载中...请稍后....

采购业务流

采购--业务流程 (bpmn)

采购属于进产销存中的前端

graph LR;

申请采购-->标准采购
申请采购-->直运采购
申请采购-->资产采购
申请采购-->费用采购

标准采购-->采购单
直运采购-->采购单
资产采购-->采购单
费用采购-->采购单

采购单-->入库单
采购单-->应付单

主流程

graph TB;
 

采购申请单--> 采购申请列表

subgraph 采购角色
采购申请列表 -->选择新采购申请--下推-->采购订单
采购申请列表 -->管理价目表


end
subgraph 仓库角色
采购订单--下推-->收料通知单
采购订单--下推-->采购入库单

收料通知单-->采购入库单
采购入库单-->检验单
end
subgraph 财务角色
采购入库单--下推-->应付单
采购订单--下推-->付款申请单
付款申请单--下推-->应付单--下推-->付款单
end
 

周边流程

graph TB;
采购订单--下推-->采购订单变更单--关联下查-->生效
采购订单--下推-->退料申请--下推-->采购退料单
图文加载中...请稍后....

生产制造

graph TB;

主计划(1.主计划)
拌料(拌料)
车间计划(2.车间计划-分解合并)
烘料(烘料)
机台n(机台n)
人员排班(人员排班)
齐套(齐套)
模具(模具)
开工((开工))

主计划==排单计划==>车间计划==分解计划==>机台n==>模具==>齐套
车间计划==日计划==>拌料==>烘料==>齐套
车间计划==日计划==>人员排班==>齐套==>开工
 

常见进度

gantt
    title 排产计划
    dateFormat  DD HH:mm
    axisFormat  %H:%M
    excludes weekends
    
section 拌料
    602底盖           :a1, 01 08:00, 1h
    602主体           :a2,after a1, 1h
    602按手           :a3,after a2,   1h

section 烘料
    602底盖           :b1,after a1, 2h
    602主体           :b2,after a2, 2h
    602按手           :b3,after a3,   2h
    
section 机台n1
    上模具      :n1 ,after a2 , 2h
    做主体      :n1-1,after n1, 10h
    换模具      :n1-2 , after n1-1 , 1h
section 机台n2
    上模具      :n2 ,after a1 , 1h
    做底盖      :n2-1,after n2, 6h
    换模具      :n2-2 , after n2-1 , 1h

section 机台n3
    上模具      :n3 , after a3 , 1h
    做按手      :n3-1,after n3, 4h
    换模具      :n3-2 , after n3-1 , 1h

图文加载中...请稍后....

勤假

勤假管理

补卡

次月工资结算日之前完成

步骤所属职位所属人备注
1申请人
2上级领导
flowchart TB;
发起人(需求申请人)
上级[直属上级]
完成(完成)
发起人==>上级==>完成

请假

步骤所属职位所属人备注
1申请人
2上级领导
3总经理如果请假超过7天
需要此步
flowchart TB;
发起人(需求申请人)
上级[直属上级]
总经理[总经理]
完成(完成)
发起人==>上级==未超过7天==>完成
上级==7天以上==>总经理==>完成
图文加载中...请稍后....

办公采购

flowchart TB;
发起人(需求申请人)
后勤[咨询相关后勤]
上级[上级主管签字]
部门级别[部门负责人签字]
总经理
采购[财务-彭--]
完成(等待接收)
发起人-.是否有库存/合适的型号.->后勤

后勤==填写申请单==>上级==总价小于2000==>采购
上级==总价高于2000==>部门级别
部门级别==>采购==>完成
部门级别==价格超过1万==>总经理==>采购

生产辅材采购

生产辅材、机物料

flowchart TB;
发起人(班组长/部门主管)
后勤[咨询相关后勤]
上级[上级主管签字]
部门级别[生产总监]

采购[财务-钱--]
完成(等待接收)
发起人-.是否有库存/合适的型号.->后勤

后勤==填写申请单==>上级
上级==>部门级别
部门级别==按单采购==>采购==>完成

精益与敏捷

开发难就是成本高。

持续改善

精益思想,敏捷组织,ork方法 。专注价值,紧盯目标,结果导向。

想法到行动

事在人为,一切的实现都是人。

人是一切之首

千里马常有, 伯乐不常有

要成大事必有人心聚集,管好一片天地必要点燃一片人心。

绝对的平等,就是绝对的不公平。应该在制度是区别对待,让先富带动后富,让榜样带动平庸。充分利用人性中的弱点。

问题到此为止

只要有人的地方就有问题,而一层层网外最终客户可不爱听问题。

每一个部门单元应该有能力处理自己的问题。一个部门的问题处理不了,这个部门将会成为公司的问题。

精益定义

持续改进 (更适合第二产业)

个人理解

就是减肥。通过锻炼不断聚焦最高价值,减去非必要环节。零库存,不流转问题,单件流,少搬运,人机合作, 高效的制具。

练习

  • 正确的数量
  • 正确的质量
  • 正确的时间

实践

一个优秀的系统建立绝非短期完成要有长期主义。 从内到外的逐渐优化。

分而治之将复杂问题3步化 (变成小团队解耦合)。复杂系统由很多简单构成,合理拆分就可化繁为简

  • 你来做

  • 我来做

  • 合并合作

    分解·划分·协作

工具方法

PDCA(迭代),人机料法环(分解阻力),碰头会(协作),关键指标持续改善。

总结

不管是精益还是敏捷 都注重目视化/可视化。利用人性中眼不见心不烦 。

敏捷定义

专注目标灵活应对 (更适合第三产业)

紧盯任务,小步快跑。高效透明 灵活应对。

个人理解

从敏捷宣言中窥探一二,简单而灵活(计划没有变化快)。用原型设计代替冗长文档。把精力和时间投入重要的事,实现精兵作战。

由于简单灵活的特别可以快速适应变化,但是绝不可以没有目标,所以更适合okr的自我管理。

实践

敏捷最大的特点是工具。

  • 任务看板 (非精益中的拉动看板) 快速燃尽

  • 迭代(非精益中的PDCA) 重点是快速调整

  • 日站会 (昨天的困难,今天的行动 目录会)

  • 专注(当事当做)

  • 透明化(和okr共享目标不谋而合)

工具

最适合结合okr来结合自管理组织,单任务不能超过3天,超就继续拆分。

角色

敏捷教练:帮团队清除障碍,仆人式领导 ,庆祝鼓励,准备环境

缺点

容易陷入东忙西忙无法聚焦目标

使用不当变成计划外应对变化(被牵着鼻子走)

杂谈

人影响环境,环境响人。那个更方便?(不存在人的问题) 人挪活。

改革就搅动死水,结冰的水改革就要先破冰。

三角团队,做大事要培养团队。

没资源创造资源,没需求激发需求

目标管理

管理就是做对的事。管理最稀缺的资源事高质量决策(眼界/认知)。

解决问题的阻力无非来自于:人机料法环

要去哪,如何才能到达哪。(路径转换公里可衡量) 灵魂支配肉体, 思想支配行动 。(技术和管理分开 ,党指挥枪)

要去哪如何:能达成指标(可测量)
北京坐动车距离1387公里(完成xx%)
让美国再次强大制造业回流500强大中的制造业50%在美国设厂
保证交货没有到期未完成商检前3天入成品仓

目标执行管理

结合工具

ogsm工具 层层分解 (适合集团公司分级执行)

(目目策测+链式结构) 上级的目标就是下级的愿景,层层翻译逐层分解

等级目的(愿景)目标(战略)策略(自主决策)测量(有数字)
决策保证交货没有到期未完成提早完工入库商检前3天入成品仓
中层(质检)没有到期未完成不能有大面积返工每批开工做首检1批1张签字首检单
中层 (生管)没有到期未完成快速补数绿色通道提供专线每组线安排2人灵活线
执行提供专线把工单做优先级区分区分高价值和高优先级1比n的方式分配高价值和高优先级

okr 工具 重执行 (适合部门内部扁平管理)

目标(高度概括)方法行动指标(自主决策)结果指标进度/时限
一切皆数据,行为可度量
打通个系统之间数据关联建立核心表数据字典,连接到至少2个系统通过一个标识能在全系统中读取所有相关数据
运维数据可视化-数据公开完成2个(人员管理和机器管理)数据接入人机问题都能当日得到处理
工单执行和计划对少数据跟踪完成2个车间目标与实际执行的数据管理计划和实际执行达到100%
我要减肥
运动下班跑步800米、骑车5千米体重小于120斤
少吃不买1斤零食,不吃一根棒冰体脂率下降到35%

从用户/客户视角制定愿景

注意:在规定期限内可完成。重点关注核心营收目标 。讨论期间可以加入信心指数

战略对应组织

战略思维就是增长,组织符合战略跑的更快。组织让发展更快而不是要企业更臃肿。

战略的变化一定有减员增员和调整,拖后包袱前进只会破坏战屡优势。

没有为战略做准备的组织 "有地没人种,有人没地种"

smart原则

具体·能测量·可实现·相关性·有期限,实际就变成n个问句。

做还是不做? (相关性)

做什么?(具体)

做到什么程度(可测量)

什么时候干完(有期限)

有没有把握(可实现)

运用

smart原则就是汇报时具体的问答。这周在做什么,做到什么程度了,月底前能干完。这都是上下级经常的沟通。

当实际执行开始相关性就变成了动机有一个强烈的动机,困难就变小了。当动机不够困难就成了大山。成功率高的行动需要等待机会,需要心心念念一个吃饱饭拍脑袋的目标往往不了了之。

闭环激励

激励设计

当有难度的目标被超预期的完成,是否在制度上能得到报激励和奖励。

说到,做到,得到。成为榜样,通过okr评分卡区别开优秀员工与平庸

考核结果作为升职奖金的依据,发周月度奖金代替年终奖。

落地

人分三六九等:自燃型、点燃型和阻燃型的三种类型 。先试点通过创新扩散模型,报名参与给与冒险奖。

文化决定思维。(标杆的人事物来树立文化) <<沙因文化变革>>

引入新人旧地图没有新大陆。

总结

人心齐泰山移

忘掉概念灵活应用。目标执行过程也可以开站会,也用上看板 也可以用燃尽图。

ogsm更像上下问,最终达到组织上一下一心

okr更像总分总,目标过程结果,结果就是目标过程自主决策。

团队管理

机制激活生产力 ,说到、做到、看到、得到 。

科斯定理 : 最低成本断绝问题 (成本最优)

激励相容:利于个人又利于企业

第一性原理:解构重构,从源头重建

组织管理

组织管理:灵活的流程实现端到端管理。并被看见和监督。

建立合作制度,并建立预算来推动制度持续运行。

点到点管理

朋友圈:远在国外的朋友在做什么都能知道,但是公司内部眼皮地下发生的事情要等开会再能知道。
同事圈:工作处理过程流转,转化成朋友圈的方式展示公开,一起监督围观。创建一个自由不固定的流程破除固化系统的不灵活。 引力入点赞评论打赏等来激发做事的动力。

建立团队

管理就两种: 管资源 、管人

管人就两种: 脑力劳动,体力劳动

好问题

教练式管理:思想不是推着人走,而是问要去那里。

选人

star询问法则 4d测试法 (领导者-喜欢接受挑战)

最近一年做的项目 (碰到了什么困难) (使用了什么新工具)

最近碰到挑战 (如何处理) (面对面沟通,腿解决沟通问题)

三要素

言行一致

沟通反馈

知人善用

影响力

沟通影响计划表

计划复盘改进
对人表达尊重
展现同理
传递善意
对事确定目的
提出建议
达成共识

目标同频

企业文化和故事主义,一种公认的动机形成愿景和使命。

确定共同目标确立目标用smart原则
确立价值观倡导什么
拒绝什么
确定职责规范确立规范日常
沟通,会议,决策,冲突解决
明确职责主要工作,责任人

权责分配

RACI神器

执行人R、负责人A、咨询人C、知情人I

任务\人员会计出纳成本采购主办主管跨部门
记录费用R执A负C咨
开票R执C咨A负
报价R执A负C咨
倒置RACI权责表
任务\职责R-执行人A-负责人C-咨询人I-知情人
开发小张老徐蔡工王总
测试小王老赵
部署小明老孙蔡工

授权矩阵

新手---老手,简单---复杂 ,授权游刃有余,成事+育人。小兵放手成干将

简单复杂
新手授权+帮助跟学+辅助
老手授权授权+帮助

发展需要:能力 ,动力, 余力 。新人鼓励,老人激励

决策

  • 界定问题

  • 挖掘本质

  • 做取舍(短期-长期)

  • 改变方案

  • 共同决定

合作整合

先利他后利己

先小后大求助

树IP多分享

避免

帕金森定律

自我管理

好的公司不是老板很勤奋,而是员工很勤奋

高处时渡人,低谷时渡心,迷茫时渡己

100个思维模型(升级自己)

工具作用
7张纸to do如何行动(看板)
woop跨越障碍
四象限分轻重缓急
费曼学习主动学习(输出倒逼输入)
思维导图建立结构化思维(拆解大为小)
乔哈里视窗避免沟通盲区

商业问题终结者

BABOK : 商业分析体系框架 CBAP认证

四步走

  • 识别问题
  • 推荐方案
  • 推动变革
  • 带来价值(可衡量)

变革全貌

  • 需求 (痛点/机会/动机)
  • 方案 (匹配需求)
  • 相关方 (受变更影的人)
  • 价值 (投入产出)
  • 环境(可行性)

流程框架

公司可以按照这些流程模块检查现有做法

  1. 识别现状:在“采购订单管理”中,公司当前的采购订单响应时间较长。
  2. 基准分析:将自己的采购订单管理流程与APQC中的流程进行对比,看哪些步骤存在改进空间。
  3. 改进优化:根据最佳实践建议,调整采购流程,比如实施自动化审批系统,减少人为延迟。

如何开会

首先要分区楚会议类型,不通过的会议有不同的氛围和流程。

  • 决策型 (项目评审会危机处理会)[主决议 ]
  • 同步型 (每日站会周例会)[不讨论]
  • 共创型 (头脑风暴会,设计冲刺会) [不点评]

会议原则

最常见的会议

  • 会而必议
  • 议而必决
  • 决而必行
  • 行而必果

领导最后发布观点

有效沟通

33法则

最多讲三个点

三个阐述角度

  • 观点
  • 原因
  • 案例

三个结构维度

弱电网络

Moi 3D设计 / arkoai / veras渲染

sd图生图

3d图设计工具

(在线3d草图设计)(https://app.sketchup.com/app)

简易结构

拓扑图

接线详情

访问控制

目的地访问来源备注
财务任何地址不可访问
人事内网地址可访问
生产同网段可访问
服务器区制定端口能访问

需求

  • 布线部分

    • 每一层按通用按距离留面板再结合实际添加,保证后续布局调整可用
    • 网线超5类即可
    • 水晶头绿联超5类3u镀金头
    • 楼于楼间光纤建议用8型以上并用SC配线架
    • 机房到面板每条线表上便签
  • 设备部分

    • 交换机超过8口使用管理型交换机

    • 每个5-6米一个网络面板

    • 10人以上办公室配置一个管理交换机

    • ap覆盖需要使用支持漫游kvr设备

    • 摄像头使用海康,室内全用带旋转平台摄像头

    • GPD POCKET 3带串口的移动管理笔记本

  • 其他

    • 服务器搬迁费用
    • 摄像头搬迁费用

ip地址规划

IP范围用户备注
1-25固定设备基础设备使用 单数1为主,双数2为辅
25-100无线dhcp通过设置可以放大1-25的区域
100-200有线设备有线不够可以借用小于100的dhcp从25开始
200-254保留/测试虚拟化区域

vlan规划

以10为单位分割区域 成双的vlan保留例如11,22,33,44,55,66

vlan id用户备注
2-10管理网使用/服务器/设备
11-20办公每一个业务办公室一个vlan id
21-30非办公区域
31-40生产车间
81-90监控/安防
200-220虚拟化区域ovs

网口1接上行,网口2接下行

调整建议(网段)

vlan 1 作为默认,建议不使用

用途调整前调整后备注
1楼大办公室192.168.16.0192.168.16.0统一划入办公区端
行政192.168.16.0192.168.16.0统一划入办公区端
部分监控(门卫)192.168.88.0不变
财务192.168.15.0192.168.15.0统一划入办公区端
内外销售192.168.14.0192.168.14.0统一划入办公区端
技术/设计192.168.19.0192.168.19.0统一划入办公区端
仓库192.168.34.0192.168.34.0办公区
注塑车间192.168.34.0192.168.31.0工厂车间
焊接192.168.34.0192.168.32.0工厂车间
点火枪192.168.34.0192.168.33.0工厂车间
独立电商192.168.24.0192.168.24.0划入驻外办公区
AP无线192.168.22.0无线ap

备注:需要采购管理型交换机,监控部分独立划区域

IP地址使用规划

开始ip结束ip用途备注
192.168.0.0192.168.10.0保留0段已用于服务器区域
192.168.11.0192.168.20.255办公使用11段用于网络设备,12-19用于测试,20-29办公大楼,30-39工厂车间 其他空余
192.168.21.0192.168.30.255无线网络45段办公无线 ,49段访客无线 (使用dhcp)
192.168.41.255192.168.50.255办公使用未来扩建使用/新网络接入点
192.168.81.0192.168.90.0用于安防81用于安抚网络主控 85-89用于安防设备(独立分割)
192.168.100.0192.168.200.0不适用留给未来规划
192.168.200.0192.168.250.0保留暂时不使用

设备选型

路由防火墙
华三SecPath F1000-AI-25(双电源)含原厂部署服务1原厂三年质保
华三LIS-F1000-AI-25-IPS3-3Y1入侵检测,可选功能
华三LIS-F1000-AI-25-AV-3Y1网络防病毒,可选功能

行为管理
华三SecPath ACG1000-AI-30(含1年特征库授权)1原厂三年质保
华三LIS-ACG1000-AI-30-APP&URL-1Y2

核心
华三S5560X-34S-EI1原厂五年质保建议更换为独立电源设备,通常电源故障概率高。

汇聚
华三LS-5570S-28S-EI(双电源)4原厂五年质保1号楼、2号楼、监控
接入
华三S5130S-28P-EI10原厂五年质保每楼层+办公室隔间

监控交换机
华三S5130S-28P-HPWR-EI-AC9每楼层、室外

监控设备
DS-2CD2T46F筒型0
DS-2DE3C140M-DE球机0
DS-2SC3Q140MY-TE球机40
DS-7916N-R4录像机1
DS-8864N-R8录像机2
32寸监控电视4

核心端口现状

端口对端网段备注
p1010号,9号.34核心
p11二层交换机.34
p127号.34串联到5,3,1楼
p13前门卫.6
p15后门.6
p9内销2楼.20
p8人事部.17
p5财务2楼.15

监控IP端规划

楼层ip范围备注
1#1L20-60每层预留40IP地址
1#2L60-100
1#3L100-140
1#4L140-180
外围和楼梯180-220

服务器规划

规划免于混乱

硬件虚拟化规划

调整前

名称ip位置备注
vm192.168.0.121机房2机柜 台式机linux kvm系统 云桌面
vm2192.168.0.122机房2机柜 台式机linux kvm系统 测试和云桌面
Edge-R440192.168.0.123机房2机柜 1U用于 OA
R740xd192.168.0.124机房2机柜 4U用于k3wis

调整后

pve8集群

宿主机容器名称ip备注
pve 01共享文件192.168.0.122
pve 01oa192.168.0.107
pve 03backupserver192.168.0.121备份服务器

数字化(树枝)工厂

数字化

开放互通 ,同心+信任 。数字化约等于去人化。流程改造不破不立

物料:从那里来,到那里去,提高经营水平

战略分解-数字化

分类代表工具备注
办公数字化office
业务数字化erp
生产数字化mes
仓储数字化wms
管理数字化oa
数据数字化bi
it数字化cloud
研发数字化plm

业务结构简化

企业数字规划(来之CIO)

规划是面,项目是线,需求是点

超级功能表格

excel变成数据呈现客户端,xlwings加载项借助python api调用

云api提供服务处理

宏调用

通过按钮执行py脚本 (插入/形状/指定宏)实现美观的按钮

Sub 中文函数名()
    RunPython ("import 功能包; 功能包.读取订单()")
End Sub

脚本通过caller得到当前excel

def 读取订单():
    wb = xw.Book.caller()
    sht = wb.sheets[0]

当前选中范围

当前选中范围

wb.selection
wb.selection.row
wb.selection.column

选中内容的值

wb.selection.value  

当前使用范围

rowNum = sheet.used_range.last_cell.row
rankNum = sheet.used_range.last_cell.column

基础配置

建议用office 2013 / Anaconda3-2020.11-Windows-x86_64.exe / xlwings version: 0.20.8

office 2016(32位) / win10

office 2013(32位)/ win7

参考

安装扩展

pip install xlwings
pip install pywin32

excel加载

开发工具 excel加载项

xlwings.xlam

D:\programs\Anaconda3\pkgs\xlwings-0.20.8-py38_0\Lib\site-packages\xlwings\addin
xlwings addin install

文件>选项>信任中心>信任中心设置>宏设置

选择“启用所有并勾选”

并勾选“对VBA对象模型的信任访问

创建例子

quickstart

cd /d D:\jack\xecxel
xlwings quickstart myproject

xlsm文件和py文件同名即可

设置 xlwings插件

conda  项目目录
"CONDA PATH":"D:\programs\Anaconda3"
"CONDA ENV":"base"
"PYTHONPATH": "D:\programs\Anaconda3"

_conda --version
conda 4.9.0

代替vba

vba转python 导入import 通过按钮调用 函数

Sub 读取未关闭销售订单()
    RunPython ("import runfun; runfun.读取未关闭销售订单()")
End Sub

注册函数

@xw.func
def xxxoo

第行返回

ctrl+shift+enter 来实现多行返回

""" 
返回类型  一个二维表
@xw.ret(expand='table')
"""
import xlwings as xw
import pandas as pd

@xw.func
@xw.arg('data', pd.DataFrame,header=True)
@xw.ret(expand='table',header=False,index=False)
def jkxCopyDf(data):
    """ 拷贝df """
    return data

py打开excel

app=xw.App(visible=True,add_book=False)
filepath=r'C:\Users\Administrator\ipynb\一键excel.xlsm'
wb=app.books.open(filepath)

excel大屏

Ctrl+Shift + f1

宏定时器
Sub MyStartTimer()

Sheet1.Cells(1, 2) = Sheet1.Cells(1, 2) + 1

Application.OnTime Now + TimeValue("00:00:01"), "MyStartTimer"

End Sub

数据中台-介绍(图文-无技术门槛)

概览图

打破信息孤岛

企业信息化过程在会不会有一个一个的系统部署到经营业务的各个方面,大部分系统都有自己的用户系统,同一个员工在个业务系统中都发生业务。当需要明晰的透视企业细节与全貌做分析\做成本碰到,需要平台有能力汇总相关数据做。又方便集成到其他地方例如低代码平台,excel等。

实现1(访问简单)

面向应用侧需要简单方便,通过积木叠加实现复杂业务场景的适用。数据库直接查询是一个很好的东西但是门槛实在是高了点。

用一种简单直观的方法来从各个业务系统中取数是一种很妙的体验

'itpro/电脑台账':{
    "@column": '用户,处理器名称,内存大小,系统版本,系统名称' ,
} 

这个将获取所有公司电脑系统的配置情况,根据未来的预算按顺序替换和更新设备。

实现2(业务关联)

有时需要了解某个同事领用了那些公司的资产或设备但是问题来了 ,用户和附加信息可能在人事系统,而设备领用或使用的电脑设备信息在另外一个系统如何做跨系统关联呢?

先找信息方便联系到这个同事,需要他的邮箱和联系电话。

'oa/T_USER@用户信息':{
    "@column": "NAME.名称,EMAIL.电子邮箱,TELEPHONE.手机号码 ",
    "@limit":1
     "NAME":"朱磊磊",
}

能不能把上面的信息和电脑台账做一个关联尽管这些信息可能存在不同的服务器上。

'oa/T_USER@用户信息':{
    "@column": "NAME.名称,EMAIL.电子邮箱,TELEPHONE.手机号码 ",
    "@limit":1
     "NAME":"朱磊磊",
},
'itpro/电脑台账':{
    "@column": '用户,处理器名称,内存大小,系统版本,系统名称' ,
    "用户|" :'oa/T_USER@用户信息.名称'
} 

这里通过一句话来说明这两个表的数据关系

 "用户|" :'oa/T_USER@用户信息.名称'

实现3(集成融合)

在工作中最方便直观处理企业数据的可能还是excel,当然公司有实力建立自主业务中台哪是更好的。

生产型企业做计划排产时需要灵活自主时,可能会从erp或mes系统取得当前进度和需求做出近期的生产计划,如果能用excel直接取数可以方便工作。

二级查询

查询做下钻查询的

业务融合

当信息孤岛不再时问题(已有数据中台),企业信息化将插上翅膀来到业务中台的时代。再未实现业务中台之前企业总是会受限于使用的系统,系统没有的功能企业无法实现。系统有的功能未必贴合企业个性化需求。面对快速发展的企业既要面对外部变化带来的挑战,又要解决内部问题带来的变革,问题和决策有时基于数据,数据的收集处理都依赖一个称心如意业务系统。

薪资计算基础数据(demo)

可以通过业务中台得到计时工资计算的基础数据,做一个计算规则可完成自动薪资。

工作流效率收集

低代码

W

自定义简单业务

低代码业务构建

简单教程

  • 登入系统
  • 创色号与配方
  • 订单使用对应色号

登入界面

点击登入

配方登记

配方列表

查看创建的配方

配方关联到订单

创建拌料需求

hass工控

home assistant (用haos占内存少)

下载地址 https://github.com/home-assistant/operating-system/releases

下载 haos_generic-aarch64-14.0.qcow2.xz 解压后导入kvm/pve虚拟机运行

虚拟机部署

haos需要uefi方式启动

haos_generic-x86-64-14.0.img
导入镜像 

qm importdisk 201 /home/jack/upfile/haos_generic-x86-64-14.0.img local  --format=qcow2

修改IP

login  #进入终端

nano /etc/NetworkManager/NetworkManager.conf  # 配置管理的网卡
ls -l /etc/NetworkManager/system-connections/*.nmconnection  #配置网卡的IP设置
nmcli dev status    # NetworkManager 命令行工具
nmcli con show  #查看网口
nmcli dev   #查看网口

空配置

nmcli con add type ethernet ifname enp6s18 con-name static-enp6s18 ipv4.addresses 192.168.11.118/24 ipv4.gateway 192.168.11.111 ipv4.dns 114.114.114.114 ipv4.method manual

排除故障

nmcli con delete static-enp6s18 
nmcli device set enp6s18 managed yes
nmcli con modify static-enp6s18 connection.interface-name enp6s18
nmcli con up static-enp6s18

配置

nmcli con edit "Supervisor enp0s18"
print ipv4
set ipv4.dns 8.8.8.8
set ipv4.addresses 192.168.11.221/24
set ipv4.gateway 192.168.11.1 

  save 
  quit

生效


systemctl restart  NetworkManager #重启系统生效
systemctl disable   systemd-networkd  #免得互相抢网卡
systemctl enable  NetworkManager #重启系统生效  

注解掉 /etc/network/interfaces  #内网卡占用


ping 192.168.11.1
fping -lt 1000 192.168.11.1

http://192.168.11.221:8123/

Supervisor部署

haio 必须使用debian12 不可以lxc容器部署

不建议装 portainer 管理docker

timedatectl set-timezone Asia/Shanghai

hostname --ip-address


apt install apparmor apparmor-utils cifs-utils wget curl dbus jq libglib2.0-bin \
lsb-release network-manager nfs-common systemd-journal-remote \
systemd-resolved udisks2 avahi-daemon dbus software-properties-common  -y
ls -lh /etc/NetworkManager/system-connections/
systemctl restart networking.service

sup实现包

  • os-agent 与主机系统通信
  • homeassistant-supervised 协调docker安装其他服务
https://github.com/home-assistant/os-agent/releases/latest   #下载deb包

https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_x86_64.deb

dpkg -i os-agent_1.6.0_linux_x86_64.deb

gdbus introspect --system --dest io.hass.os --object-path /io/hass/os  #检查安装成功与否
wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb

mv homeassistant-supervised.deb /mnt/homeassistant-supervised.deb
chmod 777 /mnt/homeassistant-supervised.deb
apt install   /mnt/homeassistant-supervised.deb   #自动安装器

 systemctl status hassio-supervisor  #开始部署docker应用
timedatectl 

curl 127.0.0.1:8123 -v

打开hass

检查

aa-status
ha supervisor info | grep healthy 
ha jobs options --ignore-conditions healthy  # 忽略健康检查
ha jobs options --ignore-conditions none     # 恢复
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="splash verbose apparmor=1 security=apparmor"
update-grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=boot

查看启动项

lsblk -f
efibootmgr --create --disk /dev/sda --part 1 --label "haos" --loader "\EFI\DEBIAN\GRUBX64.EFI"
efibootmgr --create --disk /dev/sda --part 1 --label "deb12" --loader "\EFI\DEBIAN\SHIMX64.EFI"
efibootmgr -v

设置IP

网卡会被修改成 "Supervisor ens18"

立马生效

nmcli con modify "Supervisor ens18" +ipv4.addresses 192.168.11.118/24
nmcli con modify "Supervisor ens18" +ipv4.dns 8.8.8.8
nmcli con show "Supervisor enp0s18" 

nmcli con down "Supervisor enp0s18"
nmcli con up "Supervisor enp0s18"

ha命令

ha info
ha addons install core_ssh  # Terminal & SSH

总配置文件

/config/configuration.yaml

HACS商店

在线装

wget -O - https://get.hacs.xyz | bash -

下载2.0.1

docker exec -it  hass /bin/bash

mkdir -p www
mkdir -p custom_components/hacs

unzip hacs.zip -d  /opt/hass/config/custom_components/hacs
开发者工具.重启
配置.设备与服务  
输入 hacs
git 设备认证

加载项

本质是docker服务

需要魔法环境很多安装 需要访问 registry-1.docker.io,可以借助旁路由

建议开启高级模式

重启:设置.右上角三个点.重启ha

Mosquitto网关

Mosquitto broker
配置.加载项.Mosquitto

加载项+集成都有 mqtt相关



设置中Logins

- username: umqtt
  password: passwd

  • File editor

  • Terminal & SSH

samba

设置用户名,密码

Node-RED

配置中设置账号密码,再启动

设置 ssl为否

集成📦

智能家居

涂鸦

集成中  搜 tuya

小米

xiaomi_home  搜github  安装到smb//xxx/config/custom_components

Node-RED Companion

在hacs商店集成 Release v3.1.7

hacs->Node-RED Companion 功能 打通hass与nodeRed

通过企微群机器人
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4485185b-9a03-42ad-8c69-a5dbb9e69fa0
例如 post请求发信息到群里

MQTT集成

需要配置 连接上加载项上的Mosquitto broker服务

MQTT 设置->重新配置 MQTT (一般默认即可监听收到消息)

代理 127.0.0.1
端口 1883
用户名 umqtt
密码 passwd

mqtt

apt install mosquitto-clients
#//当前连接数
mosquitto_sub -h mqtt02.oq.17121.top -p 1883 -u mqtt -P pass -v -t \$SYS/broker/clients/connected

mosquitto_sub -h mqtt02.oq.17121.top -p 1883 -u mqtt -P pass -v -t \$SYS/broker/subscriptions/count

ESP

ESPHome

ha内构建.烧入到设备.集成中添加

通过 ip:6053管理

加入mqtt

mqtt web客户端

# MQTT 配置
mqtt:
  broker: 192.168.11.221
  port: 1883
  username: mqtt
  password: passwd
  discovery: true
  discovery_prefix: homeassistant

在集成mqtt模块中发现实体

编译参数

# GPIO2 LED 配置
light:
  - platform: monochromatic
    name: "Board LED"
    output: led_output

output:
  - platform: ledc
    pin: GPIO2
    id: led_output
    frequency: 1000 Hz

二次可用ota云升级

写入固件

建议web方式写入

下载bin
到: https://web.esphome.io/
选中文件
开始  Erasing 擦写

连入wifi设置 192.168.4.1

tasmota固件

tasmota + node-red

 

通过web https://tasmota.github.io/install/
写入bin文件

终端开启发现

setOption19 0

设置功能

设置.模块.GPIO02=Relay  #//即开关

分类型

固件名称适用场景
tasmota32.bin通用版本,适用于大多数 ESP32 开发板,提供基本 WiFi 和 MQTT 功能。
tasmota32-sensors.bin包含更多传感器支持(如温湿度、光照、气体传感器等),适合需要额外传感器集成的应用。
tasmota32-bluetooth.bin添加了蓝牙支持(BLE),适用于需要蓝牙功能的场景。
tasmota32-knx.bin支持 KNX 协议,适合特定智能家居系统的需求。
tasmota32-display.bin包含显示屏支持(如 OLED、TFT 显示屏),适用于带屏幕的项目。

编译环境

https://tasmota.github.io/docs/Gitpod/

Master Release: https://gitpod.io#https://github.com/arendst/Tasmota/tree/master

micropython

Thonny菜单.运行.配置解释器.选micropython解释器.安装和更新micropython
选串口和文件(*.factory.bin).安装

模拟器 https://wokwi.com/projects/305568836183130690

传感器外设

G -- GND ;  接地
V -- VCC ;  供电
S -- I/O口   信号

opc-ua网关

python-opcua

node-red-contrib-opcua

本地访问

涂鸦

播放声音

apt  install alsa-utils alsa-tools     -y

aplay -l
arecord -l
cat /proc/asound/cards
lsmod | grep snd
lspci -nn | grep Audio
ls -l /dev/snd/*
 fuser --all --verbose /dev/snd/*
 
speaker-test -c 8
apt install   mopidy-mpd mopidy-http
version: '3.8'

services:
  mopidy:
    image: mopidy/mopidy:latest
    container_name: mopidy
    volumes:
      - ./config:/var/lib/mopidy/config
      - ./media:/var/lib/mopidy/media
      - ./data:/var/lib/mopidy/cache
    ports:
      - "6680:6680"  # Web 界面端口
      - "6600:6600"  # MPD 端口
    environment:
      - PULSE_SERVER=unix:/run/user/1000/pulse/native
    restart: always

重置密码

ha authentication reset --username "JohnDoe" --password "123SuperSecret!"
ESP32-S3-cam开发板跟ESP32-S3核心板资料包
链接:https://pan.baidu.com/s/1Vid5yvQBuNgaCaKLUE0yEA 
提取码:Qj97 

micropython教程:https://blog.csdn.net/m0_60853221/article/details/143649019

扩展板资料:https://pan.baidu.com/s/1YjGtnvHj3FrLQnUXJPRyxg?pwd=64N1 
提取码:64N1 

最丝滑的AI实时语音 听声辨人 多人互动 (开源ESP32)
https://www.bilibili.com/video/BV1G4pweCERX

ESP32-S3-WROOM-1-N16R8  内置sram512K,内置ROM384K,模组外挂16M字节的SPI Flash,外挂8M psram(psram需要程序配置启用)

Emoji

瘦客户机

pve+QXL+virt-viewer + win10(1607)

固件准备

u盘烧入器

rufus-4.5.exe

固件Armbian_24.11.0_amlogic_s905x3_jammy_6.1.112_server_2024.10.02 写入后

修改配置uEnv.txt

 名称: meson-sm1-hk1box-vontar-x3.dtb


Armbian_24.11.0_amlogic_s905l3a_jammy_6.1.112_server_2024.10.02.img

meson-g12a-s905l3a-cm311.dtb   

首启优化

中文设置

apt install language-pack-zh-hant language-pack-zh-hans ttf-wqy-zenhei fonts-wqy-zenhei xfonts-intl-chinese #中文字体ok

sudo apt install locales
sudo dpkg-reconfigure locales

ntpdate pool.ntp.org 

remote-viewer  spice://192.168.0.121:5901  #//直接连接 

dpkg-reconfigure locales

装软件

sed -i 's|ports.ubuntu.com|mirrors.tuna.tsinghua.edu.cn/ubuntu-ports|g' /etc/apt/sources.list


apt install xorg xinit
apt install sddm
dpkg-reconfigure  sddm   #自动登入

apt install  xfce4  xterm 
apt install  virt-viewer  #// remote-viewer

apt install chromium

自动登入

nano /etc/sddm.conf

[Autologin]
User=jack
Session=xfce.desktop

nano /etc/lxdm/lxdm.conf

[base]
## 自动登录用户
autologin=jack
[display]
## 指定桌面会话文件,一般 XFCE 的会话文件名为 xfce.desktop
session=/usr/share/xsessions/xfce.desktop

~/.xprofile #被dm调用了


/usr/bin/remote-viewer -f spice://192.168.0.123:5904 &

自启动

mkdir -p ~/.config/autostart

nano ~/.config/autostart/remoteview.desktop

[Desktop Entry]
Type=Application
Name=remoteview
Exec=/usr/bin/remote-viewer -f spice://192.168.0.123:5904
 

nano ~/Desktop/x11chromium.desktop

[Desktop Entry]
Type=Application
Name=chromium
Exec=/usr/bin/chromium --ozone-platform=x11
 

vv文件

[virt-viewer]
type=spice
delete-this-file=0
host=192.168.0.123
port=5906
title=xiao-shou01
enable-usbredir=1
fullscreen=1

共享打印机

apt install cups ghostscript  

netstat -ln|grep 631

nano  /etc/cups/cupsd.conf 

通usb

显卡QXL

xml配置文件加入

vi /etc/libvirt/qemu/win7-xx01.xml

usb转发器 

<redirdev bus='usb' type='spicevmc'/>
<redirdev bus='usb' type='spicevmc'/>
<redirdev bus='usb' type='spicevmc'/>
<redirdev bus='usb' type='spicevmc'/>

vv配置文件

enable-usbredir=1
fullscreen=1

usb重定向错误 WIN未必支持

operation not supported or unimplemented on this platform -12

entity not found -5

rdp终端

FreeRDP 用户只有一个会话时会复用

apt install freerdp2-x11

xfreerdp /v:192.168.14.24 

wfreerdp /v:192.168.17.199 /u:wsf /p:wsf /d:WORKGROUP /app-cmd:"cmd.exe /k tscon 40  /password:wsf  "

wfreerdp /v:192.168.17.199 /u:administrator /p:wsfa /app-cmd:"  tscon 40  /password:wsf /dest:console "


xfreerdp /v:192.168.17.199 /u:wsf /p:wsf  /app-cmd:"  cmd.exe /k tscon 1  /password:wsf  "
wfreerdp /v:192.168.17.199 /u:administrator /p:wsfa /dynamic-resolution 




query session 
tscon 40  /password:wsf  


远程禁止关机

gpedit.msc
计算机配置.Windows设置.安全设置.本地策略.用户权利指派
右侧双击 关闭系统 移除用户
用户配置.管理模板.开始菜单和任务栏.删除并阻止访问关机重启 = 启用

关机命令

shutdown  /s

桌面

apt install kde-plasma-desktop

TOGAF

原生 开放式组织分层架构,也是企业架构方法论(Togaf),规划做的好,事情成一半。

其中核型是ADM的8步走,围绕需求管理

架构规划重点侧重设计,后期更需要PMP项目管理理念知识

结构化思维 + 细水长流 (孩子不是一天长大的)

规划分层

系统级规划方法论

4A分层:业务架构、应用架构、数据架构、技术架构

实现步骤:理解、分析、设计、构建、集成、扩展、运行 (借鉴了ADM)

1.理解

理解阶段也叫需求分析 。了解情况是规格设计的第一步

概念上要了解层次,业务需求->角色需求->功能需求

各行各业都有自己的独特需求,但是总离不开以上三个层面

需求边界管理上也要分 刚性需求、基本需求、期望需求、次要需求

有明确边界项目才能合理的规划,用精益的思想把更多的资源放在核心的刚需之上。

识别需求

理解需求和期望,从而明确项目目标和边界。

2.分析

分析承上启下 上游是需求下游是技术。需要结构化工具和UML图。

众多功能需要一个结构化的归类以便后期评估,将每个功能点优先级排序,并分配需要的资源和时间也方便取舍并做到互相解耦合。

UML图:包含两类

  • 面向业务图 :用例图、协作图(通讯图)、活动图(泳道图/流程图)/BPMN图
  • 面向技术图:时序图、类图、er图、包图
图例适用对象呈现内容
用例图用户视角一个用户/角色能做什么(权限)
协作图(通信图)/交互图用户视角工作1234步骤主线
活动图(泳道图/流程图)/BPMN图用户视角对象交互(逻辑)
时序图(泳道图)工程师视角对象调用(逻辑)
类图工程师视角对象的描述
er图工程师视角对象/数据关系
部署图用户/工程师视角实际结构/存放对接关系

其中活动图时序图为业务到技术层转换。

3.设计

分为功能实现与用户交互,在分析阶段已经完成需求到功能的转换。

  • 用户交互界面设计:设计的重点在于合理化使用体验可以做原设计。

  • 功能实现设计:在于将抽象成对象并提供调用接口API

4.构建

项目真正开始从规划设计到执行阶段,此阶段重点是管理异常情况和需求的变更。

敏捷看板和甘特图来管理每一步实施进度。

5.集成

集成的关键在于系统边界的开发,开放的通信协议,操作接口。

以及前期的设备选型,技术选型。早期软件类集成可以通过rpa(智能自动化技术)

设备间集成:如opcua等聚合协议或通过x转mqtt

6 运行、扩展

运行或运营重点在与培训和反馈,并根据反馈扩展现改进现有系统中的不足。或升级设计新系统。完成PDCA的新一轮循环。

过程管理

规划后期阶段关键在于过程管理和变更管理 需要更过借助pmp项目管理技能

我最推荐使用敏捷理念来管理项目

ADM架构8步走

愿景,业务,系统,技术,方案,迁移,实施,变更

软件技术图参考

协同办公初体验

登入

nextcloud通过管理员分配的账号密码进入系统

登入后

初设置

新建文档

协同

多人共同编辑一个文件通过 分享的方式来实现

本版

编辑后还可以查看之前的版本

ai自动化办公

充当人和机器的翻译官。

http://localhost:5678/ n8n工作流程可视化 (灵活度高,可嵌入代码)

mail: jack2nb@qq.com
password: Wsf.100200300

高的天气

b530287dd777899a99e418a5e643ac15

https://restapi.amap.com/v3/weather/weatherInfo
curl --location --request GET 'https://restapi.amap.com/v3/weather/weatherInfo?key=b530287dd777899a99e418a5e643ac15&city=330200'

企微群机器人

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4485185b-9a03-42ad-8c69-a5dbb9e69fa0

可参考 apifox文档

curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \
   -H 'Content-Type: application/json' \
   -d '
   {
    	"msgtype": "text",
    	"text": {
        	"content": "hello world"
    	}
   }'

流程调用python

import micropip
await micropip.install('pandas')
import pandas as pd


data = [item['json'] for item in _input.all()]
df =  pd.DataFrame(data)

#df['created']= pd.to_datetime(df['created'], format.'%Y-%m-%d')
#df['created_str'] =  df['created'].dt.strftime('%Y-%m')
#df = df[['id', 'name','created_str']]
#df['first_id']= _input.first()['json']['id']

df['_today'] = _today
df['_pnode'] = _prevNode.name
df["_env"] = _env
df["_eid"] = _execution.id
df['_emode'] = _execution.mode
df['_eurl'] = _execution.resumeUrl
df["_wactive"] = _workflow.active
df["_wid"] = _workflow.id
df["_wname"] = _workflow.nane
outv = df.to_dict(orient="records")
print(outv)
return outv
return _input.all()

打通企业微信

wechatpy

pip install wechatpy

打通个人微信

pip install  wxauto==3.9.11.17.5

简单发送信息

from wxauto import WeChat
wx = WeChat()
wx.SendMsg(msg="你好呀",who="文件传输助手")

api服务

前端Kong访问控制

ai集成office

不坑盒子 简单集成

本地部署ai模型

LM Studio 简单

Ollama + Open WebUI 最灵活

基座

OLLAMA_HOST=0.0.0.0

ollama

ollama  list
ollama  ps

ollama pull xxx
ollama run xxx
ollama  show xxx

web查看api服务

http://localhost:11434/

webui

测试连通性

curl http://192.168.20.199:11434/

本地部署

docker run -d \
  --name open-webui \
  -p 3000:8080 \
  -e OLLAMA_API_BASE_URL=http://192.168.20.199:11434 \
  ghcr.io/open-webui/open-webui:main

搭建流程

RAG知识库

RAGFlow / LangChain


ai接口管理

apifox


ai通用接口mcp

模型->mcp客户端->mcp服务->工具集

类似于翻译

工具集合资源

  • 工具
  • 资源
  • 提示模板
  • 反向请求
  • 资源根路径

mcp常用

官方集成的mcp server

热门 三方mcp server

mcp国内市场

调用工具

vscode + cline

首次登入

新账号会有一个初始密码,在第一次登入时系统会提示修改密码。

通过预留的手机号码获得验证码,根据自己的喜好设置独有密码。

操作如图:

收藏常用菜单

通过菜单和搜索使用系统

条件查单据

通过自定条件 和 通用条件快速查找单据

帮助中心

显示设置

显示隐藏列

审批工作

审批0

bom查看

通过物料清单正查来查看完整bom

工作流模拟

模拟测试工作审批

工作流程图

模拟测试工作审批-图

业务员分组

业务员分组

erp常用菜单

销售管理--基础资料--客户列表

销售管理--价格管理--销售价目列表

基础管理--基础资料--公共资料--业务员列表

基础管理--基础资料--主数据--物料列表

基础管理--基础资料--主数据--物料列表

基础管理--基础资料---公共资料--物料单位换算列表

供应链--库存管理--库存查询--即时库存

生产制造--工程数据管理--物料清单--物料清单列表

仓库管理--杂收杂发--其他入口单

供应链--销售管理--价格管理--销售调价方案

供应链--销售管理--可销控制--【客户-物料】


供应链--采购管理

采购管理--货源与价格管理

采购管理--采购管理系统参数--价格管理

财务会计--应付款管理--应付单列表

财务会计--出纳管理--日常处理--付款申请单

立账类型 :【 暂估应付,财务应付】(?立账类型 不等于 暂估应付)

amdin常用菜单

基础管理--基础资料--主数据--员工列表

基础管理--基础资料--主数据--物料

基础管理--基础资料--单价类型-单价类型列表

审批流程查看

明细流程图

物料代码规则

编码规则 一物一码 ,颜色用版本来实现 编码段同文件夹 ,总体遵守mece原则

段位含义维度
一级代码1原材料2购件3包材4半成品5成品属性
二级代码1.1非金属 1.2金属,
2.1螺丝 2.2弹簧 ,
3.1外包装 3.2内包装
5.1普机 5.1防风
品类
三级代码1.1.1 粉料,1.1.2 颗粒 ,规格
四级代码可不用
流水号1.1.1.001编号
图文加载中...请稍后....

成本核算

分步发成本法,标准成本法,作业成本法,计划成本法 实际成本法

设计成本,生成成本

[TOC]

流程概念

从成本中心开始(将料工费计算到产品)

graph TB;
 

subgraph 存货流程
启用存货核算-->期初存货单价录入-->结束-存货核算初始
end
subgraph 产品流程
启用产品成本核算-->期初订单-->期初在产品金额录入-->结束-产品成本核算初始化
end
subgraph 主线流程
成本中心-->费用分配规则-->成本分配标准-->仓库关账-->成本计算
end

成本中心

image-20230719220948501

参数设置

共耗设置

image-20230719222202714

成本为0处理

image-20230719222400396

费用分配

成本项目

image-20230720092110952

成本项目匹配

image-20230719224939268

定额因子

作业活动

只有辅助生产部门需要设置,比如供电,供水

这里先忽略

启用和初始化

基础

会计政策

【基础管理】--【基础资料】--【财务会计】--【会计政策】

image-20230720093319737

启用核算范围

【成本管理】--【存货核算】--【基础资料】

这个先要启用才能到存货核算系统

image-20230720085916244

启用存货核算系统(1)

【成本管理】--【存货核算】--【初始化】--【启用存货核算系统】

image-20230720085457603

所有相关库存数据要【已审核】

通过启用出存货核算

image-20230720091402451

存货核算初始化(结束)

【成本管理】--【存货核算】--【初始化】--【存货核算初始】

image-20230720094323516

组织(100[培训账套])核算体系(KJHSTX01_SYS[财务会计核算体系])会计政策(KJZC01_SYS[中国准则会计政策])
仓库核对初始核算数据中物料数量与初始库存中物料数量不一致,
请使用初始核算数据维护功能进行处理

初始核算数据录入

【成本管理】--【存货核算】--【初始化】--【初始核算数据录入】

image-20230720095356227

必须填入价格

关联【库存数量价格】到【出库成本单价】

存货核算初始化结束

【成本管理】--【存货核算】--【初始化】--【存货核算初始化】

image-20230720103954261

启用产品成本核算(2)

【成本管理】--【产品成本核算】--【初始化】--【启用产品成本核算】

image-20230720093751504

先要完成 存货初始化

通过启用产品成本

image-20230720104344489

(处理)期初在产品成本

【期初在产品】来自于基于【期初生产订单】 ,根据开工日期确定是否为期初

image-20230720133313960

引出引入在产品成本

image-20230720115404160

引入为空问题

订单计划开工日期和执行下单日期要小于启用月份。需要手动执行下达

如果无法下达 【存货核算期末关账】反关账一下(反关账要符合 2反2启)

image-20230720153634001

引入错误

成本项目

编码为【CBXM00003_SYS】的成本项目不存在或未在成本项目匹配方案中设置!

完成引入

image-20230720141848540

产品成本核算初始化(结束)

【成本管理】--【产品成本核算】--【初始化】--【产品成本核算初始化】

image-20230720142051412

加入没有引入【期初在产品成本】就会提示

组织(100[培训账套])核算体系(KJHSTX01_SYS[财务会计核算体系])
会计政策(KJZC01_SYS[中国准则会计政策])存在订单未完成成本系统初始化,
请通过菜单【期初在产品成本录入-选项-引出-下载期初在产订单数据】
下载期初订单,并维护在产品数量和金额,
然后通过菜单【选项-引入-外部引入】把期初订单引入到成本系统。
下面是具体的未完成初始化的订单(仅显示前100行订单)。

费用分配标准设置

费用项目(系统自带)

image-20230720091930479

制造费用分配及取值科目:分配标准公式=标准工时*完工入库数量;

费用公式

【成本管理】--【产品成本核算】--【基础资料】--【费用分配标准】

image-20230719223956590

费用分配标准

image-20230720145046672

费用分配标准设置

【成本管理】--【产品成本核算】--【分配标准设置】--【费用分配标准设置】

image-20230720151103281

产品分配标准设置

【成本管理】--【产品成本核算]--【分配标准设置】--【在产品分配标准设置】

image-20230720154152283

费用引入方案

【成本管理】--【产品成本核算】--[费用归集】--【费用引入方案】

成本计算

【成本管理】--【产品成本核算】--【产品成本核算】--【成本计算】

image-20230720160808041

执行结果

image-20230720160948548

原因明细

image-20230720161205414

去 【产品分配标准设置】为其他车间设置分配标准

委外成本不做计算

image-20230720163104073

完成成本计算

image-20230720165757996

处理警告

入库成本维护

【成本管理】--【存货核算】--【存货核算】--【入库成本维护】

选择成本批量维护,1.要产品成本核算【反初始】 2.产品成本核算【反启用】

image-20230720170622899

选用一种价格填充方式

image-20230720171252666

组织(100[培训账套])核算体系(KJHSTX01_SYS[财务会计核算体系])
会计政策(KJZC01_SYS[中国准则会计政策])工单编号【MO000007】,行号【3】未完成成本系统初始化。

过程需要返工,所以2启2结之前提前检查。

完成成本计算

image-20230720163431958

查看相关明细

成本计算单(以不同角度展示)

【成本管理】--【产品成本核算】--【报表分析】--【成本计算单】

image-20230719225231486

列表

image-20230720182709561

横向

image-20230720183003234

成本性能诊断报告

image-20230720183540913

总账报表

流程逻辑

graph TB;
 
 
subgraph 凭证模板
业务分类--映射-->财务科目
end

subgraph 报表
配置报表方案-->通过报表对账 -->达到平衡

end

过账后不能反过账

基础配置

凭证模板

凭证生成

财务会计--智能会计平台--账务处理--凭证生成

很多菜单内都由【凭证生成】只有【智能会计平台】内可以生成各种凭证

image-20230720191950975

业务单据到业务凭证

image-20230720214503805

凭证生成错误

凭证生成失败,请检查凭证模版074设置:
1、凭证模板设置的凭证日期是否在账簿所选期间对应的日期范围,
2、凭证模板设置的来源组织在会计核算体系下的核算组织是否和账簿的核算组织一致,
3、若单据上的会计核算体系不为空,是否和账簿的会计核算体系一致。


总账管理参数

可以做未来的配置

image-20230720214028548

批量生成单据

image-20230720214857916

生成错误
模版编码030第1行业务分类下第16行分录科目的核算维度取不到
    (可能原因:
    1.核算维度未指定;
    2.基础资料未分配;
    3.基础资料或辅助资料被删除或被禁用;
    4.单据上对应字段值为空。)
  • 根据提示:第1行业务分类--第16行分录科目
银行==付款单明细.我方银行账号.开户银行
银行账号==付款单明细.我方银行账号

生成异常
模版编码030第1行业务分类下第6行分录取不到对应的科目,
    详情可点击菜单【凭证生成异常检查指引】。
  • 第1行业务分类--第6行分录 : 科目不存在


模版编码030第1行业务分类下第16行分录取不到对应的科目,
	详情可点击菜单【凭证生成异常检查指引】。
  • 承兑票据--背书
科目取值--新增行
结算方式 等于 '应收票据背书'

模版编码007第1行业务分类下第1行分录科目的核算维度与凭证模版
设置不一致,请检查科目或凭证模版设置

凭证查询

凭证过账

凭证整理

自动转账(凭证)

期末调汇

业务报表对账方案

业务报表对账

【财务会计】--【只能会计平台】--【对账管理】--【业务报表对账】

未审核的单据也参与对账,让未过账的单据参与对账

业务单据对账方案

核查明细账(2级)

其他查询

科目余额表

image-20230720204514434

核算维度余额表

image-20230720205214214

总分类账

image-20230720205423159

相关设置

会计政策

基础管理--基础资料--财务会计--会计政策

存货核算按费用项目明细核算

总账初始化(结束)

image-20230720204813869

账簿

账簿可以有多个,来符合业务对应多套财务准则

【财务会计】--【总账】--【基本资料】--【账簿】

image-20230720204546515

科目初始数据录入

比如期初余额

image-20230720204733653

审批业务参考

动画演示

image-20230816110525671

1.进入金蝶云

公司内部请使用:http://192.168.0.48/K3Cloud ,如果有客户端可以直接打开客户端。

登入

要审批首先先要进入系统才可以操作

image-20230816110525671

2.查看审批

进入系统可以看到左上角有两个图标,点击房子图案来到首页

image-20230816111317160

点击代办任务的标题进入审批处理

3.处理审批

审批可以看到单据的相关信息,最后做出判断是否同意还是驳回要求修改等。

image-20230816112017013

4.查看审批进度

进入流程图

再审批处理中点击 查看流程图进入流程图查看

image-20230816112838153

查看完成流程

image-20230816112531448

销售出库对账

操作流程

  • 联系客户核对收货数量
  • 修改对应单据添加对账附件
  • 完成对账流程

01.进入对应应单据

收到客户的收货确认来到对应的单据,打开已经审核的单据进行修改在附件中新增对账的图片或文件。

./供应链流程-img/出库单00.jpg

02.来到对应代办任务

销售出库单有对应的代办任务,需要和客户确认后进行数量确认并录入系统。

在这里的附件只能查看添加新附件或证据图片需要在列表里点击此单据修改

0.3 查看完整流程

发货数量确认分为【发货与客户收货相同、发货与客户收货不同】最后由财务接收对账资料调整应收等

前倒冲领料

批量修改物料

bom物料清单

批量修改(发料方式)

注意

只修改倒冲物料,其他不变

领料方式

总仓(配件仓)和车间仓分别下推领料单

如有异常删除条目

原调拨物料正常调拨

生产管理

直接生产流程

生产订单

【生产制造】--【生产管理】--【生产订单】

image-20230717204702313

生产领料

通过【生产订单】下推

image-20230717204820189

image-20230717205054504

生产补料

通过【生产订单】下推

image-20230717205832745

生产订单变更

通过【生产订单】下推

image-20230717205408072

用料清单变更

通过【用料清单】下推

image-20230717210702877

返工业务流程

【生产制造】--【生产管理】--【生产订单】

单据类型==直接入库-返工生产

image-20230717211256764

查看返工物料清单

image-20230717211054301

通过【业务查询】--【用料清单查询】 添加新物料来返工

不良品管理

通过【用料清单】下推

image-20230717211641654

来料不良

image-20230717211803548

余料退料

同上

生产入库

通过【生产订单】下推

image-20230717212055225

生产结案

通过【 生产订单列表】【行执行】操作

image-20230717212428868

生产订单用料明细++

image-20230717222414777

工序报工入库

前提配置

管理工序控制码

image-20230717213101060

创建作业

【生产制造】--【车间管理】--【工艺建模】--【作业列表】

image-20230717213411491

创建工艺

image-20230717213715185

工序汇报入库

【生产制造】--【车间管理】--【工艺建模】--【工序控制码列表】

汇报入库单

image-20230717212744501

选用工艺

image-20230718082223419

开工

image-20230717215020845

生成工序计划

image-20230717215218321

工序计划

【生成制造】--【车间管理】--【车间作业计划】--【工序计划列表】

image-20230717215541458

逐级完成汇报

通过【列表选中】下推

image-20230717215825817

汇报入库

通过最后一个工序【汇报单】下推

image-20230717220613820

工序汇报委外

汇报后转移(主组织-供应商)

image-20230717221144352

加工完毕后转入

委外提前设置

image-20230717221404441

工艺委外费用

image-20230717221750448

工序单流程

graph TB;
确认2[工序确认]
下达2[下达]
开工2[开工]
subgraph 生产订单
生产订单-直接入库
生产订单-汇报入库
end 
生产订单-直接入库-->确认
生产订单-汇报入库-->生产工序计划-->确认
确认-->下达-->开工 -->领料
开工-->确认2
subgraph 直接生产
领料 
end 
领料--订单下推-->入库
subgraph 汇报流程
确认2-->下达2-->开工2
end
subgraph 汇报+委外
开工2-->1工序汇报-->1汇报转移-->2工序转移
end 
开工2 --> 工序汇报
subgraph 汇报+质检
工序汇报--下推-->质量
end 
质量-->下一个工序
2工序转移-->下一个工序-->工序汇报单-->入库



单据类型设置

【基础管理】--【基础资料】--【单据类型】

工序计划

image-20230717214312669

工序汇报入库单

image-20230717214556487

监控方案

流程

流程01

规则设置

流程001

监控条件

流程02

采购价格管控

思路

(项目🔶-任务🟥-工作🔺)

  • 🔶通过下推财务应付控制采购价格。发票价格等于采购价格。如果不同需要修改采购订单

    • 🟥采购订单创建时 管理价格

      • 使用价目表
      • 没有价目表 单价可修改
    • 🟥应付单时管理价格 (单据页)

      • 保存后可获取采购订单价格

        • 🔺制作 单据页获取价格按钮
          • 🔺 捕获事件 执行修改数据并刷新
      • 🔺价格和应付价格不相等可以保存,但是不能提交

        • 🔺通过插件拦截提交,除非价格和应付一样
    • 🟥应付单时管理价格 (单据页)

      • 批量获取

建议用插件实现,不用实体规则


目标通过 对指定物料开启 价格管控来

  • 确保发票价格=采购价格

首先选出2个物料代码,一个启用价格管控(3.02.01.0008),一个没有启用价格管控(3.99.01.0035)

有管控物料编码

3.02.01.0008
  • 带管控
  • 有价目表


无管控物料编码
3.99.01.0035
  • 不管控
  • 无价目表


价目表

被管控物料 必须有价目表

采购下单

可手动修改


自动获取价目表 (无法修改)

价格变更

参数【已关闭订单可以变更】未勾选,订单已关闭不能变更。

【 供应链 】->【 采购管理】->【采购管理系统参数】

临时改价

通过新变更单

  • 新变更单要求能改价格

永久改价

通过价目表


应付对价


bos设置




插件模式

通过列表插件 / 表单插件来完成。

菜单点击事件

通过插件来处理数据建立以一个无操作按钮

通过表单点击菜单 判断点击按钮表示 如: “XJPT_tbButton_2” 来执行内容

简单处理

import clr

#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#clr.AddReference('Kingdee.BOS.KDSReportEntity')
#clr.AddReference('Kingdee.BOS.App.KDSService')
clr.AddReference('Newtonsoft.Json')


def BarItemClick(e):
    key=e.BarItemKey;
    this.View.ShowMessage("欢迎回来 {0} ".format (key));
 

修改数据并刷新

import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import * 
from Newtonsoft.Json import JsonConvert

from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *

def getDt():
    """  获取事件 """
    current_date = System.DateTime.Now
    date_string = current_date.ToString("MM-dd HH:mm:ss")
    return date_string
    
def myLog(msg):
    """ 写日志到文件 """
    current_date = System.DateTime.Now
    # 格式化输出(例如:2023-11-20)
    date_string = current_date.ToString("yyyy-MM-dd")
    logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
    # 重定向到文件
    original_out = System.Console.Out
    System.Console.SetOut(logWriter)
    # 4. 使用Console.WriteLine输出(会被重定向到文件)
    System.Console.WriteLine(msg)
    # 恢复并关闭
    System.Console.SetOut(original_out)
    logWriter.Close()

def showObj(obj):
    """ 显示对象内容  """
    
    myLog("{0} {1} dir( obj ) {1} {2}\t".format(getDt(),  '-'*10,  type(obj).__name__))
    for i in dir(obj):
        try:
            cobj = getattr(obj,i,None)
        except Exception as e:
            myLog("Error: {}".format(e))
        myLog("  {0} , type = {1} value = {2} ".format(i ,  type(cobj).__name__, cobj      ))
      


def BarItemClick(e):
    key=e.BarItemKey;
    if(key !="XJPT_tbButton_2" ): 
        return 
    
    showObj(e)
    showObj(this.View.Model.DataObject)

    iD = this.View.Model.DataObject.Id  
    if(iD <= 0  ): 
        this.View.ShowMessage("未保存单据不能获取 {} ".format (  ''  ));
    else:
        fsql="/*dialect*/ exec z_fxfph  {0}".format(iD);
        DBUtils.Execute(this.Context,fsql);

    this.View.ShowMessage("完成操作 {0} ".format ( "" ));
    this.View.InvokeFormOperation("Refresh")
    
    
    myLog("  this.View.Model.DataObject.Id =={0} ".format(this.View.Model.DataObject.Id      ))
    
def OnLoad(e):
    return
    #---------
    myLog("{0}OnLoad e {0} {1}\t".format('-'*10, type(e).__name__))
    for i in dir(e):
        myLog("\t{}".format(i))

提交判断提示

表单数据路径 this.View.Model.DataObject.表单名ENTRY ,其中AP_PAYABLE应付单

this.View.Model.DataObject.AP_PAYABLEENTRY 

导出数据模型

文件》数据模型》查找》导出 ,参考表格中的实体属性一列 ,非表格字段标识

采购订单含税单价==含税单价  and 采购订单单价==单价
F_XJPT_Price==TaxPrice and F_XJPT_Price1==FPrice
import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import * 
from Newtonsoft.Json import JsonConvert

from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *

pName = "保存和提交时检查价格是否相同"

def getDt():
    """  获取时间 """
    current_date = System.DateTime.Now
    date_string = current_date.ToString("MM-dd HH:mm:ss")
    return date_string
    
def myLog(msg):
    """ 写日志到文件 """
    current_date = System.DateTime.Now
    # 格式化输出(例如:2023-11-20)
    date_string = current_date.ToString("yyyy-MM-dd")
    logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
    # 重定向到文件
    original_out = System.Console.Out
    System.Console.SetOut(logWriter)
    # 4. 使用Console.WriteLine输出(会被重定向到文件)
    System.Console.WriteLine(msg)
    # 恢复并关闭
    System.Console.SetOut(original_out)
    logWriter.Close()

def showObj(obj):
    """ 显示对象内容 到log文件  """
    
    myLog("{0} {1} dir( obj ) {1} {2}\t".format(getDt(),  '-'*10,  type(obj).__name__))
    for i in dir(obj):
        try:
            cobj = getattr(obj,i,None)
        except Exception as e:
            myLog("Error: {}".format(e))
        myLog("  {0} , type = {1} value = {2} ".format(i ,  type(cobj).__name__, cobj      ))
      
#-----------------
def BeforeDoOperation(e):
    """ 捕获所以操作事件 """
    showObj(e)
    tmp = "myLog:str(e.Operation) {0} , type = {1} value = {2} "
    tmp = tmp.format(str(e.Operation) ,  type(e.Operation).__name__ ,  e.Operation    )
    myLog(tmp)
    # 判断是否为提交操作
    if  type(e.Operation).__name__ == "Submit":
        提交操作(e)
        return 

    
def 提交操作(e):
    """  提交操作  """
    #this.View.Model.DataObject
    #showObj(this.View.Model.DataObject)
    entry_list = this.View.Model.DataObject.AP_PAYABLEENTRY
    for ir in entry_list:
        # 打印条目
        #msg = "{}\n".format(JsonConvert.SerializeObject( ir )) 
        #myLog(msg)

        tmp = "myLog:F_XJPT_Price= {0} , FTaxPrice = {1}  F_XJPT_Price1 = {2}  FPrice = {3}"
        tmp = tmp.format( ir["F_XJPT_Price"] ,  ir["TaxPrice"] , ir["F_XJPT_Price1"] ,   ir["FPrice"] )
        myLog(tmp)
    
        if ir.F_XJPT_Price==ir.TaxPrice and ir.F_XJPT_Price1==ir.FPrice:
        # 采购订单含税单价==含税单价  and 采购订单单价==单价
            return 
    # 禁止提交
    e.Cancel=True # 取消当前操作
    raise Exception("采购价格和应付价格不同,请上下查单据的价格!")
    #key=e.BarItemKey;
    #this.View.ShowMessage("完成操作 {0} ".format ( 123 ));

def BeforeSave(e):
    showObj(e)
    #e.Cancel=True # 这个怎么写 
    #raise Exception("采购价格和应付价格不同,请上下查单据的价格!")
    #key=e.BarItemKey;
    #this.View.ShowMessage("完成操作 {0} ".format ( 123 ));
     

通用事件处理

import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import * 
from Newtonsoft.Json import JsonConvert

from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *

def getDt():
    """  获取事件 """
    current_date = System.DateTime.Now
    date_string = current_date.ToString("MM-dd HH:mm:ss")
    return date_string
    
def myLog(msg):
    """ 写日志到文件 """
    current_date = System.DateTime.Now
    # 格式化输出(例如:2023-11-20)
    date_string = current_date.ToString("yyyy-MM-dd")
    logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
    # 重定向到文件
    original_out = System.Console.Out
    System.Console.SetOut(logWriter)
    # 4. 使用Console.WriteLine输出(会被重定向到文件)
    System.Console.WriteLine(msg)
    # 恢复并关闭
    System.Console.SetOut(original_out)
    logWriter.Close()

def showObj(obj):
    """ 显示对象内容  """
    
    myLog("{0} {1} dir( obj ) {1} {2}\t".format(getDt(),  '-'*10,  type(obj).__name__))
    for i in dir(obj):
        try:
            cobj = getattr(obj,i,None)
        except Exception as e:
            myLog("Error: {}".format(e))
        myLog("  {0} , type = {1} value = {2} ".format(i ,  type(cobj).__name__, cobj      ))
      
#-----------------
def BeforeDoOperation(e):
    showObj(e)
    
    myLog("myLog:str(e.Operation) {0} , type = {1} value = {2} ".format(str(e.Operation),  type(e.Operation).__name__, e.Operation    ))
    # 判断是否为提交操作
    if  type(e.Operation).__name__ != "Submit":
        return 
    
    
    e.Cancel=True # 这个怎么写 
    raise Exception("采购价格和应付价格不同,请上下查单据的价格!")
    #key=e.BarItemKey;
    #this.View.ShowMessage("完成操作 {0} ".format ( 123 ));
    
def BeforeSave(e):
    showObj(e)
    #e.Cancel=True # 这个怎么写 
    #raise Exception("采购价格和应付价格不同,请上下查单据的价格!")
    #key=e.BarItemKey;
    #this.View.ShowMessage("完成操作 {0} ".format ( 123 ));
     

空操作技术(不推荐)

  • 配置前端点击事件
  • 通过点击事件空操作+python脚本
  • 调用存储过程更新数据

添加菜单

工具条右击->按钮->单击事件

  • 新增/修改【服务编辑】->改服务描述->新增

    • 新增/修改【操作编辑】->操作类型=空操作->修改操作代码->修改名称
    • 其他控制->服务插件
      • 注册脚本->编辑脚本

这种方法过于麻烦不如 插件模式



alter PROCEDURE [dbo].[z_fxfph]--exec z_fxfph '100039'
@fid int
AS
BEGIN

update b set b.F_XJPT_PRICE1=g.FPRICE,b.F_XJPT_PRICE=g.FTAXPRICE
from T_AP_PAYABLE a 
join T_AP_PAYABLEENTRY b on b.fid=a.fid
join T_AP_PAYABLE_LK c on c.fentryid=b.fentryid
join T_AP_PAYABLEENTRY i on i.fentryid=c.fsid
join T_AP_PAYABLE j on j.fid=c.fsbillid
join T_AP_PAYABLE_LK k on k.fentryid=i.fentryid 
join T_STK_INSTOCKENTRY d on d.fentryid=k.fsid
join T_STK_INSTOCK e on e.fid=k.fsbillid 
join T_STK_INSTOCKENTRY_LK f on f.fentryid=d.fentryid --and a.fbillno='AP00026516'
join T_PUR_POORDERENTRY_F  g on g.fentryid=f.fsid
join T_PUR_POORDER h on h.fid=f.fsbillid 
where a.FSETACCOUNTTYPE=3  and a.fid=@fid

end


exec z_fxfph '100039'
# 引入CLR运行库
import clr
# 添加插件开发必要组件
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
# 导入命名空间
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from Kingdee.BOS.App.Data import *

def AfterExecuteOperationTransaction(e):
    try:
        # 确保操作对象有效
        if e.DataEntitys is None or e.DataEntitys.Count == 0:
            this.View.ShowMessage("未获取到有效数据!")
            return

        # 遍历数据实体
        for item in e.DataEntitys:
            # 获取主键ID,注意字段名区分大小写(通常为"Id")
            fid = str(item["Id"]) if "Id" in item and item["Id"] else None
            if not fid:
                this.View.ShowMessage("主键ID为空,无法执行操作!")
                continue  # 跳过当前项

            # 方案1:安全参数化查询(推荐,若DBUtils支持)
            # fsql = "/*dialect*/ EXEC z_fxfph @FID=?"
            # params = (fid,)
            # DBUtils.Execute(this.Context, fsql, params)

            # 方案2:直接拼接(需防注入,确保fid安全)
            fsql = "/*dialect*/ EXEC z_fxfph @FID='{}'".format(fid)
            DBUtils.Execute(this.Context, fsql)

            # 可选:记录执行日志
            this.Logger.Info("成功执行存储过程,单据ID: {}".format(fid))

    except Exception as ex:
        # 异常处理
        this.View.ShowMessage("执行出错: " + str(ex))
        this.Logger.Error("插件执行错误", ex)
    return

提醒

合法性检查

提交时检查

保存操纵调用

条件

  FPrice  !=    F_XJPT_Price1  OR   FPriceWithTax  != F_XJPT_Price 

BOS平台

金蝶云产品手册

金蝶云数据模型

概念

签入 相当于修改到系统文件。通过签入签出加锁,保存实时生效

update 数据库客户端需要清理缓存

修改该单据

查找单据

单据字段和信息配置文件

D:\WorkSpace\XJPT\ttt\DataModel_20\XSYFX_35466510\cf2e0498-125f-4346-bbf8-0d68ce30c8a3.dym


论坛参考

bos整体精度和小数精度的用法

单据里的合计怎么加,不是列表的

销售出库例子

修改单据

表id大多数来自同一个seq

修改单据同时也会自动修改数据库表

出库单明细表-->销售出库单明细

CREATE TABLE [dbo].[T_SAL_OUTSTOCKENTRY](
	[FENTRYID] [int] NOT NULL,
	[FID] [int] NOT NULL,
	[FCUSTMATNAME] [nvarchar](80) NOT NULL,
	[FCUSTMATID] [nvarchar](30) NOT NULL,
	[FSEQ] [int] NOT NULL,
	...
	[FRECEIVEBILLNO] [nvarchar](255) NOT NULL,
	[FRECEIVEENTRYID] [int] NOT NULL,
	[F_VMKV_TEXT] [nvarchar](50) NOT NULL,
	[F_VMKV_DATE] [datetime] NULL,
 CONSTRAINT [PK_SAL_OUTSTOCKENTRY] PRIMARY KEY CLUSTERED 
(
	[FENTRYID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

其中 [F_VMKV_TEXT/F_VMKV_DATE] 是后添加的表单明细字段同时在数据中会建立

T_SAL_OUTSTOCK(销售出库单表)

数据结构

依据 XSDD000041

INSERT [dbo].[T_SAL_OUTSTOCKENTRY] 
([FENTRYID], [FID], [FCUSTMATNAME], [FCUSTMATID], [FSEQ], [FMATERIALID], [FUNITID], [FAUXPROPID], [FMUSTQTY], [FREALQTY], [FSTOCKID], [FSTOCKLOCID], [FSTOCKSTATUSID], [FLOT], [FLOT_TEXT], [FGROSSWEIGHT], [FNETWEIGHT], [FBASEUNITID], [FBASEUNITQTY], [FAUXUNITID], [FAUXUNITQTY], [FBOMID], [FNOTE], [FSTOCKFLAG], [FOWNERTYPEID], [FOWNERID], [FKEEPERTYPEID], [FKEEPERID], [FPRODUCEDATE], [FEXPIRYDATE], [FBASEMUSTQTY], [FARRIVALSTATUS], [FARRIVALDATE], [FARRIVALCONFIRMOR], [FVALIDATESTATUS], [FVALIDATEDATE], [FVALIDATECONFIRMOR], [FBFLOWID], [FMTONO], [FPROJECTNO], [FREPAIRQTY], [FREFUSEQTY], [FWANTRETQTY], [FACTQTY], [FISREPAIR], [FRECNOTE], [FRETURNNOTE], [FSNUNITID], [FSNQTY], [FOUTCONTROL], [FEXTAUXUNITID], [FEXTAUXUNITQTY], [FSRCENTRYID], [FBarcode], [FRetailSaleProm], [FALLAMOUNTEXCEPTDISCOUNT], [FGYENTERTIME], [FMATERIALID_SAL], [FINSTOCKBILLNO], [FINSTOCKENTRYID], [FVMIBUSINESSSTATUS], [FRECEIVEBILLNO], [FRECEIVEENTRYID], [F_VMKV_TEXT], [F_VMKV_DATE]) 
VALUES (100046, 100047, N' ', N' ', 1, 119464, 10101, 0, CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), 119749, 0, 10000, 0, N' ', CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), 10101, CAST(60.0000000000 AS Decimal(23, 10)), 0, CAST(0.0000000000 AS Decimal(23, 10)), 0, N' ', N'1', N'BD_OwnerOrg', 1, N'BD_KeeperOrg', 1, NULL, NULL, CAST(60.0000000000 AS Decimal(23, 10)), N' ', NULL, 0, N' ', NULL, 0, N' ', N' ', N' ', CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), N'0', N' ', N' ', 0, 0, N'0', 0, CAST(0.0000000000 AS Decimal(23, 10)), N' ', N' ', N'0', CAST(23700.0000000000 AS Decimal(23, 10)), NULL, 0, N' ', 0, N'0', N' ', 0, N'XSDD000041', CAST(N'2023-07-14T00:00:00.000' AS DateTime))

发货通知单

对应表 T_SAL_DELIVERYNOTICEENTRY

INSERT [dbo].[T_SAL_DELIVERYNOTICEENTRY] ([FENTRYID], [FID], [FSEQ], [FCUSTMATID], [FMATERIALID], [FAUXPROPID], [FUNITID], [FQTY], [FSHIPMENTSTOCKID], [FSHIPMENTSTOCKLOCID], [FDELIVERYLOC], [FDELIVERYADDRESS], [FDELIVERYDATE], [FDELIVERYTYPE], [FPLANDELIVERYDATE], [FCARRYLEADTIME], [FBOMID], [FLOT], [FLOT_TEXT], [FBASEUNITID], [FBASEUNITQTY], [FGROSSWEIGHT], [FNETWEIGHT], [FOUTCONTROL], [FOUTMAXQTY], [FOUTMINQTY], [FSRCTYPE], [FSRCBILLNO], [FSRCROWID], [FNOTE], [FJOINOUTQTY], [FBASEJOINOUTQTY], [FSUMOUTQTY], [FBASESUMRETNOTICEQTY], [FORDERNO], [FORDERSEQ], [FBACKUPSTOCKID], [FBACKUPSTOCKLOCID], [FTRANSFERQTY], [FBASETRANSFERQTY], [FBASEACTUALQTY], [FBASESUMOUTQTY], [FPRODUCEDATE], [FEXPUNIT], [FEXPPERIOD], [FEXPIRYDATE], [FREMAINOUTQTY], [FCLOSESTATUS], [FSTOCKSTATUSID], [FBASEOUTMAXQTY], [FBASEOUTMINQTY], [FBFLOWID], [FMTONO], [FALLAMOUNTEXCEPTDISCOUNT], [F_UN_JOINPREPICKBASEQTY], [FLOCKSTOCKFLAG], [FLOCKSTOCKBASEQTY], [FLOCKSTOCKLEFTBASEQTY], [FSNUNITID], [FSNQTY], [F_QINL_YSJE], [F_VMKV_DATE1], [F_VMKV_TEXT1])
VALUES (100033, 100034, 1, N' ', 119464, 0, 10101, CAST(60.0000000000 AS Decimal(23, 10)), 119749, 0, 0, N' ', CAST(N'2023-07-14T15:17:59.637' AS DateTime), N' ', CAST(N'2023-07-14T15:17:59.637' AS DateTime), 0, 0, 0, N' ', 10101, CAST(60.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), N'0', CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), N'SAL_SaleOrder', N'XSDD000041', 0, N' ', CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), N'XSDD000041', N'1', 0, 0, CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), NULL, N' ', CAST(0.000000 AS Decimal(19, 6)), NULL, CAST(0.0000000000 AS Decimal(23, 10)), N'B', 10000, CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), N' ', N' ', CAST(23700.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), N'0', CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), 0, 0, CAST(0.0000000000 AS Decimal(23, 10)), CAST(N'2023-07-14T00:00:00.000' AS DateTime), N'XSDD000041')

INSERT [dbo].[T_SAL_OUTSTOCKENTRY_R] ([FENTRYID], [FID], [FSRCTYPE], [FSRCBILLNO], [FJOINEDQTY], [FUNJOINQTY], [FJOINEDAMOUNT], [FUNJOINAMOUNT], [FFULLYJOINED], [FJOINSTATUS], [FRETURNQTY], [FBASERETURNQTY], [FSUMRETNOTICEQTY], [FSUMRETSTOCKQTY], [FINVOICEDQTY], [FBASEINVOICEDQTY], [FSUMINVOICEDQTY], [FSUMINVOICEDAMT], [FSUMRECIEVEDAMT], [FSOORDERNO], [FBASESUMRETNOTICEQTY], [FBASESUMRETSTOCKQTY], [FBASESUMINVOICEDQTY], [FBASEARJOINQTY], [FBASEARQTY], [FARJOINAMOUNT], [FARAMOUNT], [FBASEJOININSTOCKQTY], [FJOININSTOCKQTY], [FSECJOININSTOCKQTY], [FSECRETURNQTY], [FARJOINQTY], [FEOWNERSUPPLIERID], [FESETTLECUSTOMERID], [FSTOCKBASERETURNQTY], [FSTOCKBASESUMRETSTOCKQTY], [FSTOCKBASEARJOINQTY], [FSALBASEARJOINQTY], [FPURBASEJOININSTOCKQTY], [FARNOTJOINQTY], [FQMENTRYID], [FCONVERTENTRYID], [FB2CORDERDETAILID], [FSOENTRYID], [FRESERVEENTRYID], [FSIGNQTY], [FTHIRDENTRYID], [FCHECKDELIVERY], [FTHIRDBILLID], [FTHIRDBILLNO], [FGYFINSTATUS], [FGYFINDATE], [FWRITEOFFPRICEBASEQTY], [FWRITEOFFSALEBASEQTY], [FWRITEOFFSTOCKBASEQTY], [FWRITEOFFAMOUNT], [FBOMENTRYID]) 
VALUES (100046, 100047, N'SAL_DELIVERYNOTICE', N'FHTZD000012', CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), N'0', N' ', CAST(5.0000000000 AS Decimal(23, 10)), CAST(5.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(5.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), N'XSDD000041', CAST(0.0000000000 AS Decimal(23, 10)), CAST(5.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(23700.0000000000 AS Decimal(23, 10)), CAST(20973.4500000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), 0, 0, CAST(5.0000000000 AS Decimal(23, 10)), CAST(5.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(60.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), 0, 0, 0, 100106, 0, CAST(0.0000000000 AS Decimal(23, 10)), N' ', N'0', N' ', N' ', N'0', NULL, CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), CAST(0.0000000000 AS Decimal(23, 10)), 0)


菜单功能

保存/提交时修改数据

修改菜单功能

保存提交功能

保存操纵调用

提交时检查

保存操纵调用

条件

  FPrice  !=    F_XJPT_Price1  OR   FPriceWithTax  != F_XJPT_Price 

通过插件校验


def BeforeDoOperation(e):
    # 判断是否为提交操作
    if  type(e.Operation).__name__ != "Submit":
        return 
    
    

成本计算相关表

完工数量前端单据/报表 【完工成本结转(数量金额式)】

定额因子+每月写入报表(类型+物料+因子)

V_CB_CMPTCOSTQTYAMT.生产订单信息表 / V_CB_CMPTCOSTQTYAMTENTRY 费用计算明细

表名用途备注
T_CB_COSTALLOCCRITERIA费用分配标准不带语言
T_CB_PROORDERINFO生产订单信息附表
FPRODUCTID关联到定额因子明细
FPRODUCTID 也是物料id
T_CB_CostCalExpense成本计算费用结果表主表 通过FID到附表FID
T_CB_PROORDERDIME生产订单维度表关联到物料
T_PRD_MO生产订单
T_CB_QUOTAFACTOR定额因子
T_CB_QUOTAFACTORENTRY定额因子明细FPRODUCTDIMEID.维度与主表 ,关联物料
FSTANDARDVALUE as 定额因子
V_CB_CMPTCOSTQTYAMT生产订单信息视图++调用了T_CB_PROORDERINFO表
V_CB_CMPTCOSTQTYAMTENTRY费用计算明细视图
T_BD_ACCOUNTPERIOD会计期间

完工数量来自于T_CB_COSTCALEXPENSE_H主表

costmain.FWASTEINQTY as  + costmain.FDYSINQTY + costmain.FQUALIFIEDINQTY AS fcurcomqty

本期废品入库-数量 + 本期不良入库-数量 +  本期合格入库-数量 = 完工数量

7月 5.05.01.0069 【FMATERIALID.物料代码 = 124431】

基础数据与明细

生产订单信息表

-- 完工数量
select FCURCOMQTY from V_CB_CMPTCOSTQTYAMT 
where FPRODUCTID  = 124431 
and FPERIODENDDATE = '2023-07-31'

select * from V_CB_CMPTCOSTQTYAMT  e
where  1=1 
and e.FYEAR = 2023  -- 年份
and e.FPERIOD = 7 -- 月份
-- 2207行
-- 完工数量	
select * from (
    select c.FNUMBER 物料代码, d.FNAME 物料,FSPECIFICATIONGG 型号
    ,  z.FWASTEINQTY + z.FDYSINQTY + z.FQUALIFIEDINQTY AS  完工数量 
    from T_CB_PROORDERINFO a
    left join  T_CB_COSTCALEXPENSE  z on z.FID = a.FID 
    left join T_CB_PROORDERDIME b on a.FPRODUCTDIMEID =b.FPRODUCTDIMEID
    left join T_BD_MATERIAL c on b.FPRODUCTID = c.FMATERIALID
    left join T_BD_MATERIAL_L d on d.FMATERIALID =c.FMATERIALID 
    left join  T_HS_OUTACCTG e on e.FID = a.FACCTGID
    where 1=1 --b.FPRODUCTID  = 124431  -- 物料代码 
    and e.FYEAR = 2023  -- 年份
    and e.FPERIOD = 7 -- 月份
) va  where 完工数量>0
-- 2206行

定额因子+明细

select *  from T_CB_QUOTAFACTOR  a
left join T_CB_QUOTAFACTOR_L b on a.FQUOTAID = b.FQUOTAID



select a.FNUMBER,b.FNAME,c.FSTANDARDVALUE 
from T_CB_QUOTAFACTOR  a
left join T_CB_QUOTAFACTOR_L b on a.FQUOTAID = b.FQUOTAID
left join T_CB_QUOTAFACTORENTRY c on c.FQUOTAID =  b.FQUOTAID
where  1=1
and c.FPRODUCTID =   124431 
and  b.FNAME like '7月%工资定额'

生产订单+明细

select * from T_PRD_MO  where FBILLNO='515-20230324014'

select * from T_PRD_MOENTRY where FMATERIALID = 124431  -- FID = 108500

生产入库单+明细

select * from T_PRD_INSTOCK where FBILLNO='SCRK00002201' --  120825  FMODIFIERID
select  FMUSTQTY,FREALQTY ,FMATERIALID from T_PRD_INSTOCKENTRY  
where FMATERIALID = 124431 --  FID = 102562

成本中心

select a.FNUMBER,b.*  from T_HS_COSTITEM a
left join T_HS_COSTITEM_L b on a.FCOSTITEMID = b.FCOSTITEMID
where a.FNUMBER = 'CBXM00005_SYS'

物料

select * from t_bd_material  a
left join T_BD_MATERIAL_L b on a.FMASTERID = b.FMATERIALID

where a.FNUMBER ='5.06.52.0006'

v1备份

select year(a.FPERIODENDDATE) 年份, month(a.FPERIODENDDATE) 期间,a.FPRODUCTNO 单据编号,j1.fname 车间, d.FNUMBER 物料编码 ,d1.FNAME 名称 ,
d1.FSPECIFICATIONGG 规格,d1.F_QINL_SPECIFICATION 型号, g1.FNAME 单位, a.FCURCOMQTY 完工数量,
c.FSTANDARDVALUE 定额因子 , a.FCURCOMQTY*c.FSTANDARDVALUE  定额人工成本 ,a2.FNUMBER 成本项目编码, a1.FCURCOMAMOUNT 实际人工成本 
, (a.FCURCOMQTY*c.FSTANDARDVALUE/a1.FCURCOMAMOUNT)*100 直接人工生产效率
from V_CB_CMPTCOSTQTYAMT a 
left join V_CB_CMPTCOSTQTYAMTENTRY a1 on a.FID = a1.FID 
left join  T_HS_COSTITEM a2 on a1.FCOSTITEMID = a2.FCOSTITEMID 
left join T_CB_QUOTAFACTORENTRY c on c.FPRODUCTID = a.fproductid 
left join T_BD_MATERIAL d on a.fproductid = d.FMATERIALID 
left join t_BD_MaterialBase e on d.FMATERIALID =e.FMATERIALID 
left join T_BD_MATERIAL_L d1 on d.FMATERIALID =d1.FMATERIALID 
left join T_BD_UNIT_L g1 on e.FBASEUNITID = g1.FUNITID 
left join T_CB_COSTCENTER j on a.FCOSTCENTERID = j.FCOSTCENTERID
left join T_CB_COSTCENTER_L j1 on j.fcostcenterid = j1.fcostcenterid 
where a2.FNUMBER ='CBXM00005_SYS' --筛选实际人工成本
and year(a.FPERIODENDDATE) = #FYear#
and  month(a.FPERIODENDDATE)  = #FMonth#
and j1.fname like '%#FCheJ#%'

材料成本计算相关表

完工成本结转(数量金额模)

V_CB_CMPTCOSTQTYAMT.生产订单信息表 / V_CB_CMPTCOSTQTYAMTENTRY 费用计算明细

表名用途备注
T_CB_COSTALLOCCRITERIA费用分配标准不带语言
T_CB_PROORDERINFO生产订单信息附表
FPRODUCTID关联到定额因子明细
FPRODUCTID 也是物料id
T_CB_CostCalExpense成本计算费用结果表主表 通过FID到附表FID
T_CB_PROORDERDIME生产订单维度表关联到物料
T_PRD_MO生产订单
T_CB_QUOTAFACTOR定额因子
T_CB_QUOTAFACTORENTRY定额因子明细FPRODUCTDIMEID.维度与主表 ,关联物料
FSTANDARDVALUE as 定额因子
V_CB_CMPTCOSTQTYAMT生产订单信息视图++调用了T_CB_PROORDERINFO表
V_CB_CMPTCOSTQTYAMTENTRY费用计算明细视图
T_BD_ACCOUNTPERIOD会计期间
T_CB_COSTCENTER成本中心
T_BD_UNIT_L计量单位多语言
T_PRD_PPBOMENTRY生产用料清单子项明细

完工数量来自于T_CB_COSTCALEXPENSE_H主表

costmain.FWASTEINQTY as  + costmain.FDYSINQTY + costmain.FQUALIFIEDINQTY AS fcurcomqty

本期废品入库-数量 + 本期不良入库-数量 +  本期合格入库-数量 = 完工数量

7月 5.05.01.0069 【FMATERIALID.物料代码 = 124431】

基础数据与明细

生产订单信息表

-- 完工数量
select FCURCOMQTY from V_CB_CMPTCOSTQTYAMT 
where FPRODUCTID  = 124431 
and FPERIODENDDATE = '2023-07-31'

select * from V_CB_CMPTCOSTQTYAMT  e
where  1=1 
and e.FYEAR = 2023  -- 年份
and e.FPERIOD = 7 -- 月份
-- 2207行
-- 完工数量	
select * from (
    select c.FNUMBER 物料代码, d.FNAME 物料,FSPECIFICATIONGG 型号
    ,  z.FWASTEINQTY + z.FDYSINQTY + z.FQUALIFIEDINQTY AS  完工数量 
    from T_CB_PROORDERINFO a
    left join  T_CB_COSTCALEXPENSE  z on z.FID = a.FID 
    left join T_CB_PROORDERDIME b on a.FPRODUCTDIMEID =b.FPRODUCTDIMEID
    left join T_BD_MATERIAL c on b.FPRODUCTID = c.FMATERIALID
    left join T_BD_MATERIAL_L d on d.FMATERIALID =c.FMATERIALID 
    left join  T_HS_OUTACCTG e on e.FID = a.FACCTGID
    where 1=1 --b.FPRODUCTID  = 124431  -- 物料代码 
    and e.FYEAR = 2023  -- 年份
    and e.FPERIOD = 7 -- 月份
) va  where 完工数量>0
-- 2206行

定额因子+明细

select *  from T_CB_QUOTAFACTOR  a
left join T_CB_QUOTAFACTOR_L b on a.FQUOTAID = b.FQUOTAID



select a.FNUMBER,b.FNAME,c.FSTANDARDVALUE 
from T_CB_QUOTAFACTOR  a
left join T_CB_QUOTAFACTOR_L b on a.FQUOTAID = b.FQUOTAID
left join T_CB_QUOTAFACTORENTRY c on c.FQUOTAID =  b.FQUOTAID
where  1=1
and c.FPRODUCTID =   124431 
and  b.FNAME like '7月%工资定额'

生产订单+明细

select * from T_PRD_MO  where FBILLNO='515-20230324014'

select * from T_PRD_MOENTRY where FMATERIALID = 124431  -- FID = 108500

生产入库单+明细

select * from T_PRD_INSTOCK where FBILLNO='SCRK00002201' --  120825  FMODIFIERID
select  FMUSTQTY,FREALQTY ,FMATERIALID from T_PRD_INSTOCKENTRY  
where FMATERIALID = 124431 --  FID = 102562

成本中心

select a.FNUMBER,b.*  from T_HS_COSTITEM a
left join T_HS_COSTITEM_L b on a.FCOSTITEMID = b.FCOSTITEMID
where a.FNUMBER = 'CBXM00005_SYS'

物料

select * from t_bd_material  a
left join T_BD_MATERIAL_L b on a.FMASTERID = b.FMATERIALID

where a.FNUMBER ='5.06.52.0006'

v1备份


select year(a.FPERIODENDDATE) 年份, month(a.FPERIODENDDATE) 期间,a.FPRODUCTNO 单据编号,j1.fname 车间, d.FNUMBER 物料编码 ,d1.FNAME 名称 
,d1.FSPECIFICATIONGG 规格,d1.F_QINL_SPECIFICATION 型号
,g1.FNAME 单位, a.FCURCOMQTY 完工数量
,s.fnumerator 分子 ,s.fdenominator 分母
,s.fnumerator/ s.fdenominator 单位定额材料
,a.FCURCOMQTY *(s.fnumerator/ s.fdenominator) 定额材料成本
,isnull(a1.FCURCOMAMOUNT,0) 直接材料成本
,isnull(a1s.FCURCOMAMOUNT,0) 间接材料成本
,isnull(a1.FCURCOMAMOUNT,0) + isnull(a1s.FCURCOMAMOUNT,0) 实际材料成本合计
,(isnull(a1.FCURCOMAMOUNT,0) + isnull(a1s.FCURCOMAMOUNT,0) - a.FCURCOMQTY *(s.fnumerator/ s.fdenominator))/a.FCURCOMQTY *(s.fnumerator/ s.fdenominator)*100 直接材料损耗率
from V_CB_CMPTCOSTQTYAMT a 
--连接用料清单
left join (select s1.fmobillno,s2.fpickedqty,s1.fnumerator,s1.fdenominator 
           from T_PRD_PPBOMENTRY s1 join T_PRD_PPBOMENTRY_Q s2
           on s1.fentryid =s2.fentryid
           where s2.fpickedqty > 0) s 
on a.FPRODUCTNO = s.fmobillno
--筛选 直接材料成本和间接材料成本
left join V_CB_CMPTCOSTQTYAMTENTRY a1 on a.FID = a1.FID 
and a1.FCOSTITEMID = '20522'
left join  T_HS_COSTITEM a2 on a1.FCOSTITEMID = a2.FCOSTITEMID 
left join V_CB_CMPTCOSTQTYAMTENTRY a1s on a.FID = a1s.FID 
and a1s.FCOSTITEMID = '167381'
left join  T_HS_COSTITEM a2s on a1s.FCOSTITEMID = a2s.FCOSTITEMID 
--连接其他字段
left join T_CB_QUOTAFACTORENTRY c on c.FPRODUCTID = a.fproductid 
left join T_BD_MATERIAL d on a.fproductid = d.FMATERIALID 
left join t_BD_MaterialBase e on d.FMATERIALID =e.FMATERIALID 
left join T_BD_MATERIAL_L d1 on d.FMATERIALID =d1.FMATERIALID 
left join T_BD_UNIT_L g1 on e.FBASEUNITID = g1.FUNITID 
left join T_CB_COSTCENTER j on a.FCOSTCENTERID = j.FCOSTCENTERID
left join T_CB_COSTCENTER_L j1 on j.fcostcenterid = j1.fcostcenterid 
where j1.fname is not null
and year(a.FPERIODENDDATE) = #FYear#
and  month(a.FPERIODENDDATE)  = #FMonth#
and j1.fname like '%#FCheJ#%'


成本计算相关表

V_CB_CMPTCOSTQTYAMT.生产订单信息表 / V_CB_CMPTCOSTQTYAMTENTRY 费用计算明细

表名用途备注
T_CB_COSTALLOCCRITERIA费用分配标准不带语言
T_CB_PROORDERINFO生产订单信息附表
FPRODUCTID关联到定额因子明细
FPRODUCTID 也是物料id
T_CB_CostCalExpense成本计算费用结果表主表 通过FID到附表FID
T_CB_PROORDERDIME生产订单维度表关联到物料
T_PRD_MO生产订单
T_CB_QUOTAFACTOR定额因子
T_CB_QUOTAFACTORENTRY定额因子明细FPRODUCTDIMEID.维度与主表 ,关联物料
FSTANDARDVALUE as 定额因子
V_CB_CMPTCOSTQTYAMT生产订单信息视图++调用了T_CB_PROORDERINFO表
V_CB_CMPTCOSTQTYAMTENTRY费用计算明细视图
T_BD_ACCOUNTPERIOD会计期间

完工数量来自于T_CB_COSTCALEXPENSE_H主表

costmain.FWASTEINQTY as  + costmain.FDYSINQTY + costmain.FQUALIFIEDINQTY AS fcurcomqty

本期废品入库-数量 + 本期不良入库-数量 +  本期合格入库-数量 = 完工数量

7月 5.05.01.0069 【FMATERIALID.物料代码 = 124431】

基础数据与明细

生产订单信息表

-- 完工数量
select FCURCOMQTY from V_CB_CMPTCOSTQTYAMT 
where FPRODUCTID  = 124431 
and FPERIODENDDATE = '2023-07-31'

select * from V_CB_CMPTCOSTQTYAMT  e
where  1=1 
and e.FYEAR = 2023  -- 年份
and e.FPERIOD = 7 -- 月份
-- 2207行
-- 完工数量	
select * from (
    select c.FNUMBER 物料代码, d.FNAME 物料,FSPECIFICATIONGG 型号
    ,  z.FWASTEINQTY + z.FDYSINQTY + z.FQUALIFIEDINQTY AS  完工数量 
    from T_CB_PROORDERINFO a
    left join  T_CB_COSTCALEXPENSE  z on z.FID = a.FID 
    left join T_CB_PROORDERDIME b on a.FPRODUCTDIMEID =b.FPRODUCTDIMEID
    left join T_BD_MATERIAL c on b.FPRODUCTID = c.FMATERIALID
    left join T_BD_MATERIAL_L d on d.FMATERIALID =c.FMATERIALID 
    left join  T_HS_OUTACCTG e on e.FID = a.FACCTGID
    where 1=1 --b.FPRODUCTID  = 124431  -- 物料代码 
    and e.FYEAR = 2023  -- 年份
    and e.FPERIOD = 7 -- 月份
) va  where 完工数量>0
-- 2206行

定额因子+明细

select *  from T_CB_QUOTAFACTOR  a
left join T_CB_QUOTAFACTOR_L b on a.FQUOTAID = b.FQUOTAID



select a.FNUMBER,b.FNAME,c.FSTANDARDVALUE 
from T_CB_QUOTAFACTOR  a
left join T_CB_QUOTAFACTOR_L b on a.FQUOTAID = b.FQUOTAID
left join T_CB_QUOTAFACTORENTRY c on c.FQUOTAID =  b.FQUOTAID
where  1=1
and c.FPRODUCTID =   124431 
and  b.FNAME like '7月%工资定额'

生产订单+明细

select * from T_PRD_MO  where FBILLNO='515-20230324014'

select * from T_PRD_MOENTRY where FMATERIALID = 124431  -- FID = 108500

生产入库单+明细

select * from T_PRD_INSTOCK where FBILLNO='SCRK00002201' --  120825  FMODIFIERID
select  FMUSTQTY,FREALQTY ,FMATERIALID from T_PRD_INSTOCKENTRY  
where FMATERIALID = 124431 --  FID = 102562

成本中心

select a.FNUMBER,b.*  from T_HS_COSTITEM a
left join T_HS_COSTITEM_L b on a.FCOSTITEMID = b.FCOSTITEMID
where a.FNUMBER = 'CBXM00005_SYS'

物料

select * from t_bd_material  a
left join T_BD_MATERIAL_L b on a.FMASTERID = b.FMATERIALID

where a.FNUMBER ='5.06.52.0006'

v1备份

select year(a.FPERIODENDDATE) 年份, month(a.FPERIODENDDATE) 期间,a.FPRODUCTNO 单据编号,j1.fname 车间, d.FNUMBER 物料编码 ,d1.FNAME 名称 ,
d1.FSPECIFICATIONGG 规格,d1.F_QINL_SPECIFICATION 型号, g1.FNAME 单位, a.FCURCOMQTY 完工数量,
c.FSTANDARDVALUE 定额因子 , a.FCURCOMQTY*c.FSTANDARDVALUE  定额人工成本 ,a2.FNUMBER 成本项目编码, a1.FCURCOMAMOUNT 实际人工成本 
, (a.FCURCOMQTY*c.FSTANDARDVALUE/a1.FCURCOMAMOUNT)*100 直接人工生产效率
from V_CB_CMPTCOSTQTYAMT a 
left join V_CB_CMPTCOSTQTYAMTENTRY a1 on a.FID = a1.FID 
left join  T_HS_COSTITEM a2 on a1.FCOSTITEMID = a2.FCOSTITEMID 
left join T_CB_QUOTAFACTORENTRY c on c.FPRODUCTID = a.fproductid 
left join T_BD_MATERIAL d on a.fproductid = d.FMATERIALID 
left join t_BD_MaterialBase e on d.FMATERIALID =e.FMATERIALID 
left join T_BD_MATERIAL_L d1 on d.FMATERIALID =d1.FMATERIALID 
left join T_BD_UNIT_L g1 on e.FBASEUNITID = g1.FUNITID 
left join T_CB_COSTCENTER j on a.FCOSTCENTERID = j.FCOSTCENTERID
left join T_CB_COSTCENTER_L j1 on j.fcostcenterid = j1.fcostcenterid 
where a2.FNUMBER ='CBXM00005_SYS' --筛选实际人工成本
and year(a.FPERIODENDDATE) = #FYear#
and  month(a.FPERIODENDDATE)  = #FMonth#
and j1.fname like '%#FCheJ#%'

成本核算

基于定额因子核算报表

材料定额、人工定额 都转换为统一钱为单位。

直接人工成本分析月报表

$$ 定额人工成本=本月完工数量\times人工定额因子 $$

$$ 直接人工成本=定额人工成本/实际人工成本\times100% $$

查询语句

select year(a.FPERIODENDDATE) 年份, month(a.FPERIODENDDATE) 期间
,a.FPRODUCTNO 单据编号,j1.fname 车间, d.FNUMBER 物料编码 ,d1.FNAME 名称 ,
d1.FSPECIFICATIONGG 规格,d1.F_QINL_SPECIFICATION 型号, g1.FNAME 单位, a.FCURCOMQTY 完工数量,
c.FSTANDARDVALUE 定额因子 
, a.FCURCOMQTY*c.FSTANDARDVALUE  定额人工成本  --  完工数量*定额因子=定额人工成本
 ,a2.FNUMBER 成本项目编码, a1.FCURCOMAMOUNT 实际人工成本 
, (a.FCURCOMQTY*c.FSTANDARDVALUE/a1.FCURCOMAMOUNT)*100 直接人工生产效率  --  直接人工生产效率 =  完工数量 * 定额因子  / 实际人工成本 
from V_CB_CMPTCOSTQTYAMT a 
left join V_CB_CMPTCOSTQTYAMTENTRY a1 on a.FID = a1.FID 
left join  T_HS_COSTITEM a2 on a1.FCOSTITEMID = a2.FCOSTITEMID 
left join T_CB_QUOTAFACTORENTRY c on c.FPRODUCTID = a.fproductid 
left join T_BD_MATERIAL d on a.fproductid = d.FMATERIALID 
left join t_BD_MaterialBase e on d.FMATERIALID =e.FMATERIALID 
left join T_BD_MATERIAL_L d1 on d.FMATERIALID =d1.FMATERIALID 
left join T_BD_UNIT_L g1 on e.FBASEUNITID = g1.FUNITID 
left join T_CB_COSTCENTER j on a.FCOSTCENTERID = j.FCOSTCENTERID
left join T_CB_COSTCENTER_L j1 on j.fcostcenterid = j1.fcostcenterid 
where a2.FNUMBER ='CBXM00005_SYS' --筛选实际人工成本

直接材料成本分析月报表

$$ 定额材料成本=本月完工数量*单位定额材料 $$

$$ 实际材料成本=直接材料成本+间接材料成本 $$

$$ 直接材料损耗率 = (实际材料成本-定额材料成本)/定额材料成本\times100% $$


select year(a.FPERIODENDDATE) 年份, month(a.FPERIODENDDATE) 期间,a.FPRODUCTNO 单据编号,j1.fname 车间, d.FNUMBER 物料编码 ,d1.FNAME 名称 
,d1.FSPECIFICATIONGG 规格,d1.F_QINL_SPECIFICATION 型号
,g1.FNAME 单位, a.FCURCOMQTY 完工数量
,s.fnumerator 分子 ,s.fdenominator 分母
,s.fnumerator/ s.fdenominator 单位定额材料
,a.FCURCOMQTY *(s.fnumerator/ s.fdenominator) 定额材料成本
,isnull(a1.FCURCOMAMOUNT,0) 直接材料成本
,isnull(a1s.FCURCOMAMOUNT,0) 间接材料成本
,isnull(a1.FCURCOMAMOUNT,0) + isnull(a1s.FCURCOMAMOUNT,0) 实际材料成本合计
,(isnull(a1.FCURCOMAMOUNT,0) + isnull(a1s.FCURCOMAMOUNT,0) - a.FCURCOMQTY *(s.fnumerator/ s.fdenominator))/a.FCURCOMQTY *(s.fnumerator/ s.fdenominator)*100 直接材料损耗率
from V_CB_CMPTCOSTQTYAMT a 
--连接用料清单
left join (select s1.fmobillno,s2.fpickedqty,s1.fnumerator,s1.fdenominator 
           from T_PRD_PPBOMENTRY s1 join T_PRD_PPBOMENTRY_Q s2
           on s1.fentryid =s2.fentryid
           where s2.fpickedqty > 0) s 
on a.FPRODUCTNO = s.fmobillno
--筛选 直接材料成本和间接材料成本
left join V_CB_CMPTCOSTQTYAMTENTRY a1 on a.FID = a1.FID 
and a1.FCOSTITEMID = '20522'
left join  T_HS_COSTITEM a2 on a1.FCOSTITEMID = a2.FCOSTITEMID 
left join V_CB_CMPTCOSTQTYAMTENTRY a1s on a.FID = a1s.FID 
and a1s.FCOSTITEMID = '167381'
left join  T_HS_COSTITEM a2s on a1s.FCOSTITEMID = a2s.FCOSTITEMID 
--连接其他字段
left join T_CB_QUOTAFACTORENTRY c on c.FPRODUCTID = a.fproductid 
left join T_BD_MATERIAL d on a.fproductid = d.FMATERIALID 
left join t_BD_MaterialBase e on d.FMATERIALID =e.FMATERIALID 
left join T_BD_MATERIAL_L d1 on d.FMATERIALID =d1.FMATERIALID 
left join T_BD_UNIT_L g1 on e.FBASEUNITID = g1.FUNITID 
left join T_CB_COSTCENTER j on a.FCOSTCENTERID = j.FCOSTCENTERID
left join T_CB_COSTCENTER_L j1 on j.fcostcenterid = j1.fcostcenterid 
where j1.fname is not null
and year(a.FPERIODENDDATE) = #FYear#
and  month(a.FPERIODENDDATE)  = #FMonth#
and j1.fname like '%#FCheJ#%'

T_PRD_PPBOMENTRY_C(生产用料清单子项明细物料控制)

T_PRD_PPBOMENTRY(生产用料清单子项明细)分母

定额因子

根据以往订单复盘计算出定额因子,回写到系统

简单计算公式

$$ 单个物料成本=物料子项n(料)+物料子项n(工)+物料子项n(费) $$

$$ 因子 =单个物料成本/成品物料 $$

公式

带图表

转换规则

分仓库

通过下推领料,当两类单子发往不同的仓库进行领料

bos后配置

通过复制规则并修改选单条件来区分可领用的东西

bos异常采购控制

签入 相当于修改到系统文件。通过签入签出加锁

概念

采购订单,保存时条件控制

  • 启用和禁用设置

批量修改属性

异常采购控制01

编辑操作条目

异常采购控制01

勾选为启用控制

异常采购控制03

bos价格管控+收款条件管控

1.销售 - 价格管控

c类客户

  • 物料--上勾上是否价格管控
  • 维护价目表
  • 采购调价表

2.收款条件管控

  • c类客户 现销转赊销账期自动45天
  • c类客户,赊销45天 收款条件(通过实体服务-值更新)

触发低价选择

价格管控流程条件

控制c类客户收款条件

控制交货数量

实体服务 定义公式的值更新

bos销售单位控制

概念

通过销售只变为销售盒/箱 ,更加直观

  • 首先物料属性的销售-销售计价单位
  • 修改单据实体服务规则

物料修改

异常采购控制01

修改单价实体服务规则

异常采购控制01

业务功能授权

销售隔离

访问权限授权

应收款明细表

备份

需要8000端口登入

bk-02

备份设置

填写备份路径等

bk-01

恢复

选择来源备份文件和恢复路径

bk-03

销售工作流

特殊操作

加签、会签

销售订单定制流程
【定制类销售使用,工厂定制订单使用,工厂渠道订单使用,】

订单种类

销售订单流程别名(单据类型)层级持有人消息通知人
1、宁外定制订单审批定制类销售订单2财务,生产,总经理bom专员,生产主管
2、工厂定制订单审批渠道非标3内销总监,财务,总经理bom专员,生产主管
3、工厂渠道订单审批渠道标准2内销总监,总经理bom专员,生产主管
4、预测订单审批无客户;生产--预测冲销2内销总监,生产bom专员,生产主管

1、宁外定制订单审批

简版流程 通知到计划主管

工作流设计器-宁外定制订单审批

节点作业节点名称
财务核价、通知到生产部价格是否合理、生产是否可行财务并通知计划生产
总经理最终决定总经理决定

通知信息

---- 核价
您有{入口单据名称} {销售订单号} 的订单需要核价

---- 审批
您有{入口单据名称} {单据类型} 的订单需要审批


---- 计划

销售订单{销售订单号}类型{单据类型}需要关注

----最后通知
订单{销售订单号}流程完结	

财务设置细节

财务YN判断

把1级中的财务驳回重审操作,转换成正向 不管同意还是驳回都会往下走。

image-20230728133403705

连接线N

image-20230728133926715

连接线Y

image-20230728134307409

总经理节点细节

驳回重审要操作表单,修改表单状态【重新审核】

image-20230728134835710

完成节点设置细节

image-20230728134636596

同时发送消息

通知发起人

[发起人,bom专员(王飞),生产主管(杨丽勇)]

image-20230728135441325

2、工厂定制订单审批

节点作业节点名称
内销部门经理()是否符合市场
财务核价售价是否合理财务核价
总经理最终决定总经理定价

通知信息


----- 最后通知
有销售订单下达{销售订单号}

流程截图

工作流设计器-工厂定制订单审批

通用设置细节

{Consent:'审核通过',Reject:'驳回重审',Dissent:'终止流程'}

也可以自定添加,关键是审批类型【正向,驳回,终止】

财务设置细节

image-20230728144743807

总经理设置细节

image-20230728145011534

配置工作流

设计发布

image-20230728145725894

配置使用

名称: 工厂定制订单使用

image-20230728150146148

3、工厂渠道订单审批

节点作业节点名称
内销部门经理()是否符合市场内销经理定夺
总经理售价是否合理总经理定夺

流程图

工厂渠道订单使用

工作流设计器-工厂渠道订单审批

配置

image-20230728154434562

4、预测订单审批

节点作业节点名称
内销部门经理()是否符合市场需求内销经理定夺
计划主管生产安排是否可行生产部定夺
完结通知 :下单人,生产主管,总经理

通知信息


---- 内销部门经理
{入口单据名称}编号{单据编号}需要进行处理
----计划主管
{入口单据名称}编号{单据编号}需要进行评估
---- 完结
预测{入口单据名称}{单据编号}完结

流程图

预测订单使用

工作流设计器-预测订单审批

配置

image-20230728160234379

启用配置

image-20230728160822360

参考

钉钉+云星空

image-20230726141500316

使用限制

步骤1

pc客户端下操作

image-20230726141728582

步骤2

image-20230726141650551

步骤3

image-20230726141603461

web端设置

image-20230809201044626

首次配置

image-20230726104425616

连接私有云

image-20230726104553196

设置1

image-20230726104618790

设置2

image-20230726104656177

设置 3

image-20230726104812271

设置4

image-20230726104925199

用使用配置

进入应用

image-20230726105251845

使用量查看

image-20230726105121440模块管理

image-20230726110537338

移动版 金蝶云

image-20230726105351546

开始销售

首次进入

image-20230726111057708

确认员工和账号权限

image-20230726111927734

后台配置

管理员账号登入

【基础管理】--【移动设置】--【轻应用字段显示设置】--【移动销售显示设置】

image-20230726112231675

单据配置

image-20230726112655134

需要显示的字段

image-20230726112617929

前端操作

image-20230726113008961

新版销售

设置移动端api版本

【基础管理】--【公共设置】--【参数设置】

设置为最新版

image-20230726124736234

v5版本界面

image-20230726124955402

商品列表

image-20230726130423479

选物料

销售 点火枪成品(6.03.01.0402)

image-20230726132527677

下单

image-20230726133251014

结果

image-20230726133420210

???? 计划跟踪号未填

订单明细

image-20230726134632304

订单列表

入口

image-20230726134942770

订单列表明细

image-20230726134910075

销售订单显示设置

基础管理>公共设置>单据设置 -- 移动平台单据启用设置

image-20230726140852354

添加显示

image-20230726140937527

发货通知

通过 销售订单下推

image-20230726141321251

发货通知

image-20230726142027589

发货通知单列表

image-20230726142507017

移动端显示设置

image-20230726142725758

配置发货通知单字段信息 ???

image-20230726143043706

发货通知单配置入口

image-20230726144250404

通知单 明细设置

image-20230726144335756

移动端发货通知单效果

image-20230726144134305

并行流程设计

结果

image-20230726160647489

流程

image-20230726160400212

投票模式

image-20230726160332780

接口访问金蝶

erp系统通过IP访问数据,同时可以当无头系统来实现UI重定义

文档介绍

金蝶云api

程序调用API

调用配置文件

[config]
# 第三方系统登录授权的账套ID
X-KDApi-AcctID = 6476f2c24443ea
# 第三方系统登录授权的用户
X-KDApi-UserName = Administrator
# 第三方系统登录授权的应用ID
X-KDApi-AppID = 276123_753PQzjOQOHZ38UtWZxoScVLTuwd7rqo
# 第三方系统登录授权的应用密钥
X-KDApi-AppSec = xxxxxxxxxxxxxxxxxxxxxxxxxxx
# 服务Url地址(私有云需要配置自己的K3Cloud地址,公有云无需配置)
X-KDApi-ServerUrl = http://127.0.0.1/k3cloud/
#账套语系,默认2052
#X-KDApi-LCID = 2052
#组织编码,启用多组织时配置对应的组织编码才有效
#X-KDApi-OrgNum = 100
#允许的最大连接延时,单位为秒
#X-KDApi-ConnectTimeout = 120
#允许的最大读取延时,单位为秒
#X-KDApi-RequestTimeout = 120
#若使用代理,配置此参数
;X-KDApi-Proxy = http://localhost:8888/

官方例子

# 注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。
# 注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。
# 读取配置,初始化SDK
api_sdk = K3CloudApiSdk()
api_sdk.Init(config_path='../conf.ini', config_node='config')
# 请求参数
para =  {"CreateOrgId":0,"Number":"","Id":"","IsSortBySeq":"false"}
# 业务对象标识
formId = "ER_ExpenseRequest"
# 调用接口
response = api_sdk.View(formId, para)

print("接口返回结果:" + response)
# 对返回结果进行解析和校验
res = json.loads(response)
if res["Result"]["ResponseStatus"]["IsSuccess"]:
	return True
else:
	logging.error(res)
	return False

申请启用API

需要admin登入

查看密钥需要二次验权。

二次开发python插件

思路

(项目🔶-任务🟥-工作🔺)

建议用插件实现(插件捕获事件),不用实体规则


插件模式

通过插件来处理数据建立以一个无操作按钮

菜单事件

通过表单点击菜单 判断点击按钮表示 如: “XJPT_tbButton_2” 来执行内容

菜单点击

简单处理

import clr

#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#clr.AddReference('Kingdee.BOS.KDSReportEntity')
#clr.AddReference('Kingdee.BOS.App.KDSService')
clr.AddReference('Newtonsoft.Json')


def BarItemClick(e):
    """  点击任意按钮 """
    key=e.BarItemKey;
    this.View.ShowMessage("欢迎回来 {0} ".format (key));
 

修改数据并刷新

import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import * 
from Newtonsoft.Json import JsonConvert

from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *

def getDt():
    """  获取事件 """
    current_date = System.DateTime.Now
    date_string = current_date.ToString("MM-dd HH:mm:ss")
    return date_string
    
def myLog(msg):
    """ 写日志到文件 """
    current_date = System.DateTime.Now
    # 格式化输出(例如:2023-11-20)
    date_string = current_date.ToString("yyyy-MM-dd")
    logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
    # 重定向到文件
    original_out = System.Console.Out
    System.Console.SetOut(logWriter)
    # 4. 使用Console.WriteLine输出(会被重定向到文件)
    System.Console.WriteLine(msg)
    # 恢复并关闭
    System.Console.SetOut(original_out)
    logWriter.Close()

def showObj(obj):
    """ 显示对象内容  """
    
    myLog("{0} {1} dir( obj ) {1} {2}\t".format(getDt(),  '-'*10,  type(obj).__name__))
    for i in dir(obj):
        try:
            cobj = getattr(obj,i,None)
        except Exception as e:
            myLog("Error: {}".format(e))
        myLog("  {0} , type = {1} value = {2} ".format(i ,  type(cobj).__name__, cobj      ))
      


def BarItemClick(e):
    key=e.BarItemKey;
    if(key !="XJPT_tbButton_2" ): 
        return 
    
    showObj(e)
    showObj(this.View.Model.DataObject)

    iD = this.View.Model.DataObject.Id  
    if(iD <= 0  ): 
        this.View.ShowMessage("未保存单据不能获取 {} ".format (  ''  ));
    else:
        fsql="/*dialect*/ exec z_fxfph  {0}".format(iD);
        DBUtils.Execute(this.Context,fsql);

    this.View.ShowMessage("完成操作 {0} ".format ( "" ));
    this.View.InvokeFormOperation("Refresh")
    
    
    myLog("  this.View.Model.DataObject.Id =={0} ".format(this.View.Model.DataObject.Id      ))
    
def OnLoad(e):
    
    #---------
    myLog("{0}OnLoad e {0} {1}\t".format('-'*10, type(e).__name__))
    for i in dir(e):
        myLog("\t{}".format(i))

通用事件处理

import clr
import sys
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.JSON import * 
from Newtonsoft.Json import JsonConvert

from System import *
import System
import System.IO
from Kingdee.BOS.App.Data import *

def getDt():
    """  获取事件 """
    current_date = System.DateTime.Now
    date_string = current_date.ToString("MM-dd HH:mm:ss")
    return date_string
    
def myLog(msg):
    """ 写日志到文件 """
    current_date = System.DateTime.Now
    # 格式化输出(例如:2023-11-20)
    date_string = current_date.ToString("yyyy-MM-dd")
    logWriter = System.IO.StreamWriter("d:\jack\debug_output-{}.txt".format(date_string), True)
    # 重定向到文件
    original_out = System.Console.Out
    System.Console.SetOut(logWriter)
    # 4. 使用Console.WriteLine输出(会被重定向到文件)
    System.Console.WriteLine(msg)
    # 恢复并关闭
    System.Console.SetOut(original_out)
    logWriter.Close()

def showObj(obj):
    """ 显示对象内容  """
    
    myLog("{0} {1} dir( obj ) {1} {2}\t".format(getDt(),  '-'*10,  type(obj).__name__))
    for i in dir(obj):
        try:
            cobj = getattr(obj,i,None)
        except Exception as e:
            myLog("Error: {}".format(e))
        myLog("  {0} , type = {1} value = {2} ".format(i ,  type(cobj).__name__, cobj      ))
      
#-----------------
def BeforeDoOperation(e):
    showObj(e)
    
    myLog("myLog:str(e.Operation) {0} , type = {1} value = {2} ".format(str(e.Operation),  type(e.Operation).__name__, e.Operation    ))
    # 判断是否为提交操作
    if  type(e.Operation).__name__ != "Submit":
        return 
    
    
    e.Cancel=True # 这个怎么写 
    raise Exception("采购价格和应付价格不同,请上下查单据的价格!")
    #key=e.BarItemKey;
    #this.View.ShowMessage("完成操作 {0} ".format ( 123 ));
    
def BeforeSave(e):
    showObj(e)
    #e.Cancel=True # 这个怎么写 
    #raise Exception("采购价格和应付价格不同,请上下查单据的价格!")
    #key=e.BarItemKey;
    #this.View.ShowMessage("完成操作 {0} ".format ( 123 ));
     

存储过程

alter PROCEDURE [dbo].[z_fxfph]--exec z_fxfph '100039'
@fid int
AS
BEGIN

update b set b.F_XJPT_PRICE1=g.FPRICE,b.F_XJPT_PRICE=g.FTAXPRICE
from T_AP_PAYABLE a 
join T_AP_PAYABLEENTRY b on b.fid=a.fid
join T_AP_PAYABLE_LK c on c.fentryid=b.fentryid
join T_AP_PAYABLEENTRY i on i.fentryid=c.fsid
join T_AP_PAYABLE j on j.fid=c.fsbillid
join T_AP_PAYABLE_LK k on k.fentryid=i.fentryid 
join T_STK_INSTOCKENTRY d on d.fentryid=k.fsid
join T_STK_INSTOCK e on e.fid=k.fsbillid 
join T_STK_INSTOCKENTRY_LK f on f.fentryid=d.fentryid --and a.fbillno='AP00026516'
join T_PUR_POORDERENTRY_F  g on g.fentryid=f.fsid
join T_PUR_POORDER h on h.fid=f.fsbillid 
where a.FSETACCOUNTTYPE=3  and a.fid=@fid

end


exec z_fxfph '100039'
# 引入CLR运行库
import clr
# 添加插件开发必要组件
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
# 导入命名空间
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from Kingdee.BOS.App.Data import *

def AfterExecuteOperationTransaction(e):
    try:
        # 确保操作对象有效
        if e.DataEntitys is None or e.DataEntitys.Count == 0:
            this.View.ShowMessage("未获取到有效数据!")
            return

        # 遍历数据实体
        for item in e.DataEntitys:
            # 获取主键ID,注意字段名区分大小写(通常为"Id")
            fid = str(item["Id"]) if "Id" in item and item["Id"] else None
            if not fid:
                this.View.ShowMessage("主键ID为空,无法执行操作!")
                continue  # 跳过当前项

            # 方案1:安全参数化查询(推荐,若DBUtils支持)
            # fsql = "/*dialect*/ EXEC z_fxfph @FID=?"
            # params = (fid,)
            # DBUtils.Execute(this.Context, fsql, params)

            # 方案2:直接拼接(需防注入,确保fid安全)
            fsql = "/*dialect*/ EXEC z_fxfph @FID='{}'".format(fid)
            DBUtils.Execute(this.Context, fsql)

            # 可选:记录执行日志
            this.Logger.Info("成功执行存储过程,单据ID: {}".format(fid))

    except Exception as ex:
        # 异常处理
        this.View.ShowMessage("执行出错: " + str(ex))
        this.Logger.Error("插件执行错误", ex)
    return

番外篇http请求

插件基于IronPython运行脚本,用python 请求http服务

import clr
clr.AddReference('System')
from System.Net import HttpWebRequest, WebRequest
from System.IO import StreamReader
from System.Text import Encoding

def MakeHttpRequest(url, method="GET", data=None, headers=None):
    try:
        request = WebRequest.Create(url) # 创建请求
        request.Method = method
        
        # 设置请求头
        if headers:
            for key in headers.Keys:
                request.Headers[key] = headers[key]
        
        # POST请求添加数据
        if method == "POST" and data:
            bytesData = Encoding.UTF8.GetBytes(data)
            request.ContentLength = bytesData.Length
            with request.GetRequestStream() as stream:
                stream.Write(bytesData, 0, bytesData.Length)
        
        # 获取响应
        with request.GetResponse() as response:
            with StreamReader(response.GetResponseStream()) as reader:
                return reader.ReadToEnd()
                
    except Exception as e:
        this.View.ShowMessage(f"请求失败: {e.Message}")
        return None

# 使用示例(在某个按钮点击事件中)
def ButtonClick(e):
    url = "https://api.example.com/data"
    result = MakeHttpRequest(url)
    this.View.ShowMessage(f"响应结果: {result}")

极简BPMN蓝图

极简业务流程建模图

简单蓝图流程

销售订单叶丹罗利娜王飞儿邵眉若裘华峰徐娜鲁倩倩胡春霞销售订单审核人潘昌均彭敏芳翁总车明远计划订单王飞MRP运算生产订单王飞曾小红生产订单变更单江国泉王飞曾小红采购订单柴丹飘王长久厉青陆巧燕彭敏芳审核柴丹飘王长久陆巧燕彭敏芳王飞厉青采购申请单王飞柴丹飘外购委外订单王飞柴丹飘外协预测订单叶丹徐娜鲁倩倩预测订单审核车明远彭敏芳王飞委外订单变更单柴丹飘王飞采购入库单王长久翁如聪何梦琳虞幼凤自产生产领料单(总仓)宓燕玲杨成香龙小峰张南南刘红胡志园虞幼凤何梦琳菅俊丽朱磊磊生产领料单(车间)杨成香张南南刘红龙小峰赵琴胡志园宓燕玲朱磊磊委外用料清单王飞柴丹飘陆巧燕曾小红直接调拨单虞幼凤龙小峰何梦琳杨成香宓燕玲赵琴菅俊丽柴丹飘王长久鲁倩倩张南南胡志园刘红朱磊磊委外领料单(自动)王飞柴丹飘陆巧燕曾小红生产用料清单王飞曾小红生产入库单菅俊丽杨成香张南南刘红宓燕玲赵琴胡志园龙小峰朱磊磊生产补料单龙小峰刘红菅俊丽宓燕玲张南南杨成香胡志园朱磊磊采购退料单何梦琳虞幼凤翁如聪王长久生产退料单龙小峰何梦琳宓燕玲胡志园杨成香王飞张南南刘红赵琴虞幼凤朱磊磊生产退库单何梦琳宓燕玲刘红赵琴虞幼凤张南南其他出库单何梦琳翁如聪刘红张南南柴丹飘宓燕玲龙小峰戴可科赵琴菅俊丽鲁倩倩杨成香胡志园吴学灯其他入库单龙小峰何梦琳戴可科刘红杨成香宓燕玲柴丹飘菅俊丽王长久张南南吴学灯胡志园赵琴朱磊磊生产用料清单变更单王飞应付单(自动)戴可科张奕琳付款退款单洪晨晔刘云云销售出库单鲁倩倩何梦琳发货通知单叶丹邵眉若徐娜裘华峰胡春霞罗利娜王飞儿鲁倩倩应收单(自动)戴可科张奕琳其他单据成本调整单戴可科销售退货单叶丹何梦琳徐娜备注:账号复用宓燕玲朱磊磊罗利娜采购价目表彭敏芳供应商列表柴丹飘定额因子戴可科付款单戴可科张奕琳收款单洪晨晔张奕琳刘云云物料列表王飞流程管理中心蔡金凯部门列表蔡金凯期初在产品调整蔡金凯客户列表叶丹凭证模板戴可科费用分配标准戴可科科目戴可科应付核销单洪晨晔张奕琳刘云云形态转换单戴可科核算范围戴可科员工列表蔡金凯在产品分配标准戴可科费用归集戴可科角色蔡金凯功能授权蔡金凯套打模板蔡金凯

新账套创建

百度参考文档

社区参考文档

流程

  • 账套管理 :新建一个

  • 用户管理 :导入用户

  • 客户端:创建基础数据

  • 批量导入:科目等

  • 填入起初科目余额

  • 结束初始化

  • 录凭证,过账,结转受损,关账

  • 创建报表

初始数据导入

组件配置测试

常用表

金蝶K3数据库表名对应及表说明

基础

账套查询

KDAcctDB数据库下

select * from  t_ad_kdAccount_gl

账套(AIS20240227123408)

表含义表名
科目表t_AccountFPeriod:月份
余额表t_Balance
数量余额表t_QuantityBalance
损益科目本年实际发生额t_ProfitAndLoss
科目组别T_AcctGroup

期初余额查询

SELECT a.FAccountID,
        a.FDetailID,
         a.FNumber,
         FName,
         FLevel,
         a.FDetail,
         FGroupID,
         FDC,
        FHelperCode,
         FQuantities,
        a.FDelete,
         FYtdDebit,
        FYtdCredit,
        FYtdDebitFor,
        FYtdCreditFor,
        FYtdDebitQty,
        FYtdCreditQty,
        FYtdAmountFor,
        FYtdAmount,
         FBeginBalance,
        FDebit,
        FCredit,
        FEndBalance,
         FBeginBalanceFor,
         FDebitFor,
         FCreditFor,
        FEndBalanceFor,
         Coef,
         MeasName,
        FBeginQty,
        FEndQty
FROM t_Account a LEFT OUTER
JOIN 
    (SELECT *
    FROM t_Balance
    WHERE FDetailID=0
            AND FYear=2024
            AND FPeriod=1
            AND FCurrencyID=1) b
    ON a.FAccountID = b.FAccountID LEFT OUTER
JOIN 
    (SELECT u.FUnitGroupID,
        m.FCoefficient Coef,
        m.FName MeasName
    FROM t_unitgroup u, t_MeasureUnit m
    WHERE u.fdefaultunitid=m.fmeasureunitid ) u
    ON a.FUnitGroupID = u.FUnitGroupID 
LEFT OUTER JOIN 
    (SELECT *
    FROM t_QuantityBalance
    WHERE FDetailID=0
            AND FYear=2024
            AND FPeriod =1
            AND FCurrencyID=1) q
    ON a.FAccountID=q.FAccountID 
LEFT OUTER JOIN 
    (SELECT *
    FROM t_ProfitandLoss
    WHERE FDetailID=0
            AND FYear=2024
            AND FPeriod =1
            AND FCurrencyID=1) p
    ON a.FAccountID=p.FAccountID
INNER JOIN 
    (SELECT DISTINCT a.FAccountID
    FROM t_account a
    LEFT JOIN t_account b
        ON b.FParentID = a.FAccountID
    WHERE (a.FCurrencyID=0
            OR a.FCurrencyID=1)
            OR (b.FCurrencyID=0
            OR b.FCurrencyID=1)) ab
    ON a.FAccountID=ab.FAccountID
ORDER BY  a.Fnumber

K3服务器问题处理

连接到服务器并重启k3相关服务器完成问题处理

连接到服务器

通过本地一个软件来连接服务器

win7电脑使用快捷键 【win】键 和【r】 字母键同时按下出现运行输入框

win10电脑通过开始菜单

启动连接工具软件

输入连接到45地址

先填入服务器ip地址

填写用户名和密码

需要提供服务器用户名和密码

确认连接

打开管理工具

进入服务后要打开计算机管理

找到服务并重启

注意 服务名称是 SQL Server(MSSQLSERVER)

重启服务确认

重启时自动重启相关服务

k3服务器重启

如果重新sql service 无法解决问题,就只能重启整个服务器

也需要先连接到服务器

重启服务器

确认重启

需要填写重启服务器的理由

钉钉上下班打卡

加入公司邀请码

钉钉logo

1.正常打卡

1-1.打开钉钉APP

钉钉logo

1-2.找到打卡入口

钉钉logo

1-3.通过定位打卡

钉钉logo

2.异常情况处理

请假,忘打卡,出差

钉钉logo

2-1.申请界面

钉钉logo

3.考勤报表

3-1.进入考勤功能

钉钉logo

3-2.查看考勤报表

钉钉logo

销售相关

销售流程

| 内销

步骤所属职位所属人备注
1申请人
2营销总监
3PMC
4财务部
5总经理超过30万以上
单价异常
条件已废弃
6财务部抄送
7结束

| 外贸

步骤所属职位所属人备注
1申请人
2Pmc
3Pmc经理
4专职会计已经跳过
5风控会计
6总经理
7结束

1、首先下载钉钉

扫码二维码下载

钉钉二维码

点击下载

点击钉钉下载到下载界面完成下载

2、注册钉钉

钉钉注册

使用手机号码或支付登入二选一即可

2、加入公司

钉钉logo

使用钉钉来扫码加入公司

加入钉钉

首批注册人

钉钉用户

帮助文档

https://www.yuque.com/yida/support/hufzoo

轻应用

https://qing.ik3cloud.com/install/

移动设备上完成审批

1.打开钉钉APP

钉钉logo

首次使用

第一次使用参考如何使用钉钉

选择公司

没有选择正确的公司无法使用公司内的应用

选择公司

2.进入工作台

进入钉钉

进入工作台界面

进入工作台

3.登入云心空

这里输入的账号密码和电脑端云星空一样

进入云星空

4.查看代办

进入代办列表

5.审批

进入审批

6.查看完整流程

当前流程

查看完成流程1

完整的业务流程

查看完成流程2

移动销售

1.打开钉钉APP

钉钉logo

首次使用

第一次使用参考如何使用钉钉

选择公司

没有选择正确的公司无法使用公司内的应用

选择公司

2.进入工作台

进入钉钉

进入工作台界面

进入工作台

3.登入云心空

首次进入这里输入的账号密码和电脑端云星空一样

进入云星空

发货通知单

进入销售首页

进入代办列表

1找到对应的单据

进入代办列表

2.创建通知单

进入审批

3.确认发货单

填入相关信息

查看完成流程1

钉钉新建流程

常用菜单

自定义流程

工作台--oa审批--创建新表单

查看已有流程

工作台--oa审批--管理后台--表单管理

表单设计

  • 基础设计

  • 表单设计

    表单内容

  • 流程设计

    审批流

  • 高级设置

    包含 电子签名

优质客户分析

报表

通过《金蝶云星空集成开发平台》创建新的报表

步骤1 创建

image-20230804130214400

步骤2 数据源

image-20230804130615980

编辑sql

带入参数

image-20230804132032258

sql语句

select a.FPRODUCTNO 单据编号, a.fproductid 物料编码 
,d1.FNAME 名称,g1.FNAME 单位, a.FCURCOMQTY 完工数量
,c.FSTANDARDVALUE 定额因子
, a.FCURCOMQTY*c.FSTANDARDVALUE  定额人工成本
from V_CB_CMPTCOSTQTYAMT a ,
T_CB_QUOTAFACTORENTRY c ,
T_BD_MATERIAL d,
t_BD_MaterialBase e ,
T_BD_MATERIAL_L d1 ,
T_BD_UNIT_L g1
where c.FPRODUCTID = a.fproductid 
and a.fproductid = d.FMATERIALID
and d.FMATERIALID =e.FMATERIALID 
and d.FMATERIALID =d1.FMATERIALID 
and e.FBASEUNITID = g1.FUNITID
and a.fproductid like  '#FBillNO#%'

步骤3 保存发布

image-20230804133046210

发布位子

image-20230804134002967

前台使用

要重新登入

image-20230804135605005

库查询数据库文件

heidisql 客户端

CREATE TABLE  通知公告 (
 
	id int  IDENTITY(1,1) NOT NULL  PRIMARY KEY ,
	title nvarchar(100) NOT NULL,
	linke nvarchar(100) NOT NULL,
	CREATORID int NOT NULL,
	AUTHOR nvarchar(100) NOT NULL,
	FCREATETIME  date NOT NULL
 )


ALTER TABLE 通知公告  add   id int  IDENTITY(1,1) NOT NULL  PRIMARY KEY  ;

ALTER table 通知公告  alter COLUMN id int  IDENTITY(1,1) NOT NULL  PRIMARY KEY  ;
 

开启事务

工具->选项->查询执行->SQL Server->ANSI -> 勾选  SET_IMPLICT_TRANSACTIONS(M)
数据库->属性->文件->所用者设为Sa  ,完成sa到odb的映射
中文使用nvarchr
BEGIN TRANSACTION 
 
commit transaction --提交事务

rollback transaction --回滚事务

表注解

-- 添加表注释
execute sp_addextendedproperty 'MS_Description','填写你的表注释','user','odb','table','填写表名',null,null;
 

字段注解

--添加
execute sp_addextendedproperty 'MS_Description','注解内容','user','用户名','table','表名','column','字段名';
--修改 
execute sp_updateextendedproperty 'MS_Description','注解内容','user','用户名','table','表名','column','字段名';
--删除 
execute sp_dropextendedproperty 'MS_Description','注解内容','user','用户名','table','表名','column' ;

创建只读用户

-- 登入账号
CREATE LOGIN dbjack   
    WITH PASSWORD = 'Db.jack';  
GO  

-- 创建用户并关联 (可不做映射)
CREATE USER dbjack FOR LOGIN dbjack;  
GO


修改密码

ALTER LOGIN dbjack
	WITH PASSWORD = 'Pwd4jack119900'; --符合密码规范
go 

只读权限

db_datareader

登入名赋予服务器角色



EXEC sp_addsrvrolemember 'dbjack','sysadmin';
go

登录名/用户名

dbo(用户名)是指以 sa(登录名)

登入名

select name,status,createdate from  syslogins 

用户

SELECT uid, name ,status FROM Sysusers  where  islogin = 1; 

数据库角色

exec sp_grantdbaccess 'dbjack','dbjack'  -- 用户映射

 exec sp_addrolemember 'db_datareader','dbjack';   -- 先要是数据库用户

查询所有者/数据库大小

exec sys.sp_helpdb

删除用户

drop user dbjack 

drop login dbjack 

查看表结构

sp_help table_name;           

sp_columns table_name;

字段注解

select column_name name,data_type type 
from information_schema.columns 
where table_name = '表名'
SELECT 
    表名       = case when a.colorder=1 then d.name else '' end,
    表说明     = case when a.colorder=1 then isnull(f.value,'') else '' end,
    字段序号   = a.colorder,
    字段名     = a.name,
    标识       = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
    主键       = case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
                     SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,
    类型       = b.name,
    占用字节数 = a.length,
    长度       = COLUMNPROPERTY(a.id,a.name,'PRECISION'),
    小数位数   = isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
    允许空     = case when a.isnullable=1 then '√'else '' end,
    默认值     = isnull(e.text,''),
    字段说明   = isnull(g.[value],'')
FROM 
    syscolumns a
left join 
    systypes b 
on 
    a.xusertype=b.xusertype
inner join 
    sysobjects d 
on 
    a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'
left join 
    syscomments e 
on 
    a.cdefault=e.id
left join 
sys.extended_properties   g 
on 
    a.id=G.major_id and a.colid=g.minor_id  
left join
sys.extended_properties f
on 
    d.id=f.major_id and f.minor_id=0
where 
    d.name='USERINFO'    --如果只查询指定表,加上此where条件,tablename是要查询的表名;去除where条件查询所有的表信息
order by 
    a.id,a.colorder



查询跟踪(profiler)

sql server profiler

基于databaseName

select DB_ID ('数据库名称');

所有事件+所有列-》事件选择-》列筛选器

databaseName 类似于

TextData 类似于

OA数据

根据数据建立er模型

"如何把SQL Server的数据库导为sql文件"

右击数据库-》任务-》生成脚本 -》进入向导

在保持文件的高级选项中:结构和数据

库ouqi

用户数据

select t.id, t.name, t.loginno , t.telephone  
-- ,t.*
from dbo.T_USER t
where name like '蔡金凯'

我的id

11ed-a9b8-191b765e-a8b2-a36392a02a45  用户id

11ed-d4e2-6ee7b680-a973-1182f27b94d8   部门id

11e8-b82b-b7056a2c-b266-7907d3bcd381    应用id

11e8-b82d-bbed2547-9ee2-053d1e776df4    区域id domainid

补考勤

select  
ITEM_ATTDATE,FORMNAME
-- , t.*
from TLK_ATTENDANCEDETAIL t
where t.author like '11ed-a9b8-191b765e-a8b2-a36392a02a45'

操作记录表,DOCUMENT

操作表,ACTORHIS

公出记录,TLK_BUSINESS_PUBLIC_TRIP

流程记录明细,TLK_ATTENDANCEDETAIL

流程进度,TLK_FOR_ATTENDANCE

流转关系 ,RELATIONHIS

日志,T_LOG

库kaoqin

授权

-- 创建用户
CREATE USER dbjack FOR LOGIN dbjack;  
GO

exec sp_addrolemember 'db_datareader','dbjack';


考勤记录表

我的用户id: USERID == 2859

标记号码 :BADGENUMBER/user_pin == 1000157

IDCardNotice 用来是否离职

select  t.sn 打卡机
-- , t.*
from  CHECKINOUT t
where USERID  = 2859
and CHECKTIME   = '2023-03-28 12:24:06.000'
order by checktime desc


考勤时间段

select  t.sn 打卡机
  , t.*
from  CHECKINOUT t
where USERID  = 2859
and CHECKTIME   >= '2023-03-28' and CHECKTIME   <= '2023-03-29'
order by checktime desc


用户信息

select *
from  USERINFO
where 1=1
and name  LIKE '蔡金凯'
and GENDER is not Null
权限差异
select t.privilege  ,t.GENDER ,t.FSelected 
,t.*
from  USERINFO t
where name in  ( '岑凯123' ,'陈肖璇','蔡金凯' ,'黄小艳','彭延涛')
order by  name 

提升权限

select USERID,name,privilege ,GENDER from USERINFO where USERID = 2859;


update USERINFO set  privilege=3 ,GENDER='M'
where USERID = 2859;

重名查看

select count(name) ct ,t.name 
from kaoqin..USERINFO   t
where t.FSelected = 0
group by name
order  by ct desc

金蝶云erp

金蝶云下载

金蝶云标准版下载

微软数据库

维护维护账号(db_datareader)

参考

SQL Server 2016 (RTM) - 13.0.1601.5 (X64) 版本

oa 数据库配置文件 proxool.properties

命令行登入

osql -S 192.168.0.121 -U sa

登入本机

osql -S 192.168.0.101 -E

查询版本

-- Select @@version

-- SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'),SERVERPROPERTY ('edition')

SELECT 
SERVERPROPERTY('servername')  AS  实例名,  
SERVERPROPERTY('ProductVersion')  AS  实例版本,  
SERVERPROPERTY('Edition')  AS  产品版本,  
SERVERPROPERTY('ProductLevel')  AS  版本级别,  
@@VERSION  AS  版本信息   
实例版本产品版本
12.0.2000.8Enterprise Edition (64-bit)

编码

 SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage');-- 936

select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName 
from sys.dm_tran_locks where resource_type='OBJECT'	

当前事务

 select * from sys.dm_tran_session_transactions;

缓存清理

BEGIN
 --清除存储过程缓存
         DBCC FREEPROCCACHE 
--清除会话缓存  
        DBCC FREESESSIONCACHE 
--清除系统缓存  
        DBCC FREESYSTEMCACHE('All')
--清除所有缓存  
        DBCC DROPCLEANBUFFERS  
END

正在执行的sql

SELECT
    [Spid] = session_id,
    ecid,
    [Database] = DB_NAME( sp.dbid ),
    [User] = nt_username,
    [Status] = er.status ,
    [Wait] = wait_type,
    [Individual Query] = SUBSTRING (
        qt.text,
        er.statement_start_offset / 2,
        (
        CASE
                
                WHEN er.statement_end_offset = - 1 THEN
                LEN( CONVERT ( NVARCHAR ( MAX ), qt.text ) ) * 2 ELSE er.statement_end_offset
            END - er.statement_start_offset
    ) / 2
    ),
    [Parent Query] = qt.text ,
    Program = program_name,
    hostname,
    nt_domain,
    start_time
FROM
    sys.dm_exec_requests er
    INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid CROSS APPLY sys.dm_exec_sql_text ( er.sql_handle ) AS qt
WHERE
    session_id > 50 -- Ignore system spids.
    AND session_id NOT IN ( @@SPID ) -- Ignore this current statement.
ORDER BY 1 

LinkedServer(服务器对象->链接服务器)

链接服务器名 . 数据库名 . 用户名(如dbo). 表名(或其他对象名)

select  * from WSND.ASMC.dbo.hzpytmp

创建一个链接

exec sp_addlinkedserver '链接服务器名', '', 'SQLOLEDB', '对方实例地址'
exec sp_addlinkedsrvlogin '链接服务器名', 'false',null,'登录用户名', '密码'

select * from sys.servers;

查询当前连接

select loginame,count(0) ct from sys.sysprocesses
group by loginame
order by ct desc

数据库查询

SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files 

备份数据库

覆盖方式备份

backup database   database_name to disk='E:\backup\database_name.bak' with init
backup database   database_name to disk='E:\backup\database_name.bak' with init

差异备份

Backup Database *database_name* 
To disk='E:\backup\database_name.bak'
with Differential

备份脚本

也可以设置成脚本备份

sqlcmd -i "f:\dbbak\bak.sql"

恢复数据库

脚本可指定文件

RESTORE DATABASE AbpFirst FROM DISK='D:\AbpFirst.bak' WITH MOVE 'AbpFirst' TO 'D:\MyData\AbpFirst_Data.mdf', Move 'AbpFirst_log' TO 'D:\MyData\AbpFirst_log.ldf'

只恢复文件

RESTORE FILELISTONLY FROM DISK='d:\AbpFirst.bak'	

命令行访问

支持linux和docker部署

远程连接到数据库

sqlcmd -S 192.168.0.121,1433 -U SA 

简单查询

USE TestDB;
SELECT * FROM Inventory WHERE quantity > 152;

go

必须使用go才执行

win端管理工具

ssms(sql servier management studio)

直接连接图形化

修改某用户的密码

alter login dbjack with password='wsf119900'

考情数据调整

维护维护账号(db_datareader)

补考勤

识别号码 1000157

查询考勤

按时间段查询

select  t.sn 打卡机
  , t.*
from kaoqin..CHECKINOUT t
where USERID  = 2859
and  CHECKTIME between '2023-05-29' and '2023-05-30' 
order by checktime desc


按日期查询

 SELECT * 
 FROM  kaoqin..CHECKINOUT t
 WHERE USERID  = 2859 
 and convert(varchar(10),CHECKTIME,120)  = '2023-05-23'
 order by checktime desc

批量查询

select USERID, convert(varchar(10),CHECKTIME,120) 日期,COUNT(*) 次数 ,
明细  = STUFF( (
    select ',  ' + convert(varchar(10), CHECKTIME,108) 
    from   kaoqin..CHECKINOUT tv 
    WHERE tv.USERID  = t.USERID  
    and convert(varchar(10),tv.CHECKTIME,120) =  convert(varchar(10),t.CHECKTIME,120) 
for xml path('')
)
                  ,1
                  ,1
                  ,'') 

from kaoqin..CHECKINOUT t
WHERE USERID  = 2859 
and CHECKTIME between '2023-06-01 ' and '2023-07-01' 
group by USERID,convert(varchar(10),CHECKTIME,120)
order by 日期 desc,次数  

STUFF 切割字符串

对应表格

USERIDCHECKTIMECHECKTYPEVERIFYCODESENSORIDMemoinfoWorkCodesnUserExtFmtmask_flagtemperature
28592023-05-01I11NULL0CQDT223160859100

插入对应sql

2023-05-23T12:25:23.000

insert into kaoqin..CHECKINOUT
(USERID, CHECKTIME, CHECKTYPE, VERIFYCODE, SENSORID, Memoinfo, WorkCode, sn, UserExtFmt, mask_flag, temperature)
values(2859, CAST(N'2023-05-23T12:25:23.000' AS DateTime),N'I', 1, 1, NULL, N'0', N'CQDT223160859', 1, 0, 0)

删除多余打卡

查看


 SELECT * 
 FROM  kaoqin..CHECKINOUT t
 WHERE USERID  = 2859 
 and convert(varchar(10),CHECKTIME,120)  = '2023-05-05'
 order by checktime desc
 
 
 
------------- 具体时间
select * from kaoqin..CHECKINOUT t
where  USERID  = 2859 
and CHECKTIME =  CAST(N'2023-05-23T12:25:23.000' AS DateTime)

清除数据


delete kaoqin..CHECKINOUT
where  USERID  = 2859 
and CHECKTIME =  CAST(N'2023-05-29 12:15:23.000' AS DateTime)

调整时间

 SELECT * 
 FROM  kaoqin..CHECKINOUT t
 WHERE USERID  = 2859 
 and convert(varchar(10),CHECKTIME,120)  = '2023-05-23'
 order by checktime desc

更新


update kaoqin..CHECKINOUT 
set  CHECKTIME =  CAST(N'2023-05-29 12:15:23.000' AS DateTime)
where  USERID  = 2859 
and CHECKTIME =  CAST(N'2023-05-29 12:15:23.000' AS DateTime)

导出

SELECT u.BadgeNumber, c.checktime, c.sensorid, c.VerifyCode,u.Name,c.checktype,c.workcode,c.UserExtFmt  
FROM CheckInOut as c, UserInfo as u
WHERE (c.userid=u.userid) 
AND c.CheckTime  >='2023-06-18'
And c.Checktime <= '2023-06-20'
and sn in ('CQDT223160859','CQDT231460219')

按人查询

SELECT m.MachineAlias ,c.sn,u.Name , c.checktime,  u.BadgeNumber
FROM CheckInOut as c
left join UserInfo as u on c.userid=u.userid 
left join Machines as m on c.sn=m.sn
WHERE  1=1 
AND c.CheckTime  >='2023-05-01'
And c.Checktime <= '2023-06-29'
and u.name in ('刘香花','黄思容','雷帮军') 	

查手机号码

SELECT  
       [NAME]
      ,[NAME_LETTER]
      ,[TELEPHONE]
      ,[STATUS]
 
       
  FROM [Ouqi].[dbo].[T_USER]
  where [TELEPHONE] like '15168%'

考勤重复人员

SELECT 
NAME,COUNT([BADGENUMBER]) CT ,MAX([BADGENUMBER]),MIN([BADGENUMBER])
FROM [kaoqin].[dbo].[USERINFO]
GROUP BY  NAME
ORDER BY CT   DESC

老oa

CALENDAR             11e8-b82d-bbf6c239-9ee2-053d1e776df4  日历id
ID                   11ed-a9b8-191b765e-a8b2-a36392a02a45   +++ 个人流程发送id
DEFAULTAPPLICATION   11e8-b82b-b7056a2c-b266-7907d3bcd381   +++ APPid
DEFAULTDEPARTMENT    11ed-d4e2-6ee7b680-a973-1182f27b94d8   +++ 流程部门id 

oa用户/部门

select * from  [dbo].[T_USER] u
left join [dbo].[T_DEPARTMENT] d
on u.DEFAULTDEPARTMENT = d.id



select u.LOGINNO 用户名 ,u.NAME,d.name as 部门 ,u.TELEPHONE ,u.EMAIL,u.STATUS ,d.LEVELS,d.INDEXCODE ,d.id  from  [dbo].[T_USER] u
left join [dbo].[T_DEPARTMENT] d
on u.DEFAULTDEPARTMENT = d.id
order by d.id

通知信息 主表


select * 
from  [dbo].[MC_NOTIFICATION] 
where SENDER_ID = '11ed-a9b8-191b765e-a8b2-a36392a02a45'
order by CREATE_TIME desc

通知关联-附加信息表

select   * 
from  [dbo].[MC_NOTICE] m 
left join  [dbo].[MC_NOTIFICATION]  ma on ma.MESSAGE_ID = m.id 
where  ma.SENDER_ID = '11ed-a9b8-191b765e-a8b2-a36392a02a45' 

基于通知 查询 流程

select fi.SUMMARY ,  * 
from  [dbo].[MC_NOTICE] m 

left join  [dbo].[MC_NOTIFICATION]  ma on ma.MESSAGE_ID = m.id

left join    [dbo].[T_FLOW_INTERVENTION]  fi     on fi.INITIATORID = ma.SENDER_ID

where  m.id = '11ee-0fd2-8e3e24d3-918c-a79d8c1df92b'



select  * 
from   [dbo].[MC_NOTIFICATION]  m
where  m.MESSAGE_ID = '11ee-0fd2-8e3e24d3-918c-a79d8c1df92b'
 

主流程表

select * 
from T_FLOW_INTERVENTION
where INITIATORID =  '11ed-a9b8-191b765e-a8b2-a36392a02a45'

流程内容表

SELECT * from T_RELATIONHIS 
WHERE flowname LIKE '请假%'

补考勤表

[dbo].[TLK_ATTENDANCEDETAIL] . PARENT 同 [dbo].[T_FLOW_INTERVENTION] id


SELECT * FROM  [dbo].[TLK_ATTENDANCEDETAIL]
WHERE PARENT   = '11ee-0fd2-3e9784a6-918c-a79d8c1df92b' -- 关联流程

SELECT * FROM  [dbo].[TLK_ATTENDANCEDETAIL]
where AUTHOR = '11ed-a9b8-191b765e-a8b2-a36392a02a45'  -- 关联用户
select * 
from  [dbo].[T_ACTORHIS] 
where NODEHIS_ID = '11ed-a9b8-191b765e-a8b2-a36392a02a45'

公出表

select *
from TLK_BUSINESS_PUBLIC_TRIP
where AUTHOR = '11ed-a9b8-191b765e-a8b2-a36392a02a45' --关联用户  id可关联流程

请假发起详情

select * 
from TLK_APPLY_LEAVE
where AUTHOR  AUTHOR = '11ed-a9b8-191b765e-a8b2-a36392a02a45' --关联用户  id可关联流程

分组

select t.author,t.item_leave_r from
(select test.*,row_number() over (partition by author order by author desc) rn 
from TLK_APPLY_LEAVE test) t
where rn=1;


常用数据库表与字段

数据字典

官方数据表

财务模型字典

用户信息表

select top 10 *  from t_sec_user
	

重置密码

---- 密码改为6个8
update t_sec_user 
set fpassword='9EF0664B011C3DC6305C8B213378BACC2451FAEA',   fmemo='8d2fea58-cda1-4035-9024-56cc6df8957c' 
where fuserid=119087
 
-- 525b1cda73e400e5e6b64d09fb3d417438ffd9c286d4124901b521feca7ffb6d	000352540018e2798ad311edf608d84de510

二次检权数据

select *  
from T_BAS_USERPARAMETER
where FPARAMETEROBJID='SEC_CHECKIDENTITY'; 	

用户登入日志

select top 10 *  from T_BAS_USERLOGINRECORD

用户设置参数表

select top 10 *  from T_BAS_UserParameter

主配置

来之数据库 K3DBConfiger

账号系统表

select  *  from T_BAS_DATACENTER
where FDATACENTERID = '646312c743e2f6'    

    

账套号名称

select  *  from T_BAS_DATACENTER_L
where FDATACENTERID='646312c743e2f6'

关联关系 通过 ”FDATACENTERID“字段

select  v.FDATACENTERID,v.FDATAbasename ,n.fname  ,v.FCREATEDATE
from T_BAS_DATACENTER v left join  T_BAS_DATACENTER_L n 
on v.FDATACENTERID = n.FDATACENTERID

账套备份记录

select  *  from T_BAS_DATACENTERBACKUPLOG	

用户相关

用户信息表

select top 10 *  from t_sec_user
	

员工表

T_BD_STAFF_L

物料代码

select * from t_bd_material  a
left join T_BD_MATERIAL_L b on a.FMASTERID = b.FMATERIALID

where a.FNUMBER ='5.06.52.0006'

用户密码表

select top 10 *  from T_SEC_USERPASSPORT

用户登入日志

select top 10 *  from T_BAS_USERLOGINRECORD

用户最后登入时间

select * from 
(select FUSERID,max(FDATETIME)  m
from T_BAS_USERLOGINRECORD group by FUSERID ) vt 
inner join T_SEC_USER ta  on vt.FUSERID=ta.FUSERID


用户设置参数表

select top 10 *  from T_BAS_UserParameter

数据刷表

规格型号

合并成一个字段 规格@型号

数据库选择AIS20230131214054

select a.FMATERIALID,FNUMBER, F_QINL_OQGG 规格 ,FSPECIFICATION 规格型号,FSPECIFICATIONGG 规格废弃 ,F_QINL_SPECIFICATION 型号
from t_bd_material  a
left join T_BD_MATERIAL_L b 
on a.FMASTERID = b.FMATERIALID

F_QINL_OQGG + @ + F_QINL_SPECIFICATION = FSPECIFICATION
其中 FSPECIFICATIONGG 自定义(已经废弃)
update T_BD_MATERIAL_L
set FSPECIFICATION = F_QINL_SPECIFICATION+ '@' + F_QINL_OQGG
where FMATERIALID = 162518

软路由

软路由wrt接管大部分无线接入直接通往防火墙,加入ospf实现高级交换机功能。部分行为管理上网管控通过docker功能实现
OpenWrt 23.05.1 (r23619-101988c61a) 原版效率高 注意版本

openwrt-21.02 更加简洁

通过虚拟服务器+虚拟交换机

sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf
echo "nameserver  8.8.8.8" > /etc/resolv.conf
opkg update 

接口

设备管理二层,接口管理三层 ,三层重点在于防火墙,二层重点在与vlan。wan口不具备任何路由功能(防火墙规则为丢弃)

uci查看配置

uci show network

配置文件

/etc/config/network

路由表

路由表 是一个数字从0-65535, 表+规则完成不同情况走不同的路由

状体->路由--》IPv4 邻居:可以看到arp表

通过规则路由

ip rule show
ip route show table main

静态 IPv4 路由

接口目标网关跃点数
lan20.0.0.0/0192.168.2.1044

ipv4规则

优先级传入接口源地址传出接口目标地址
自动br-lan192.168.99.0/24未指定任意44
自动未指定192.168.99.199/32未指定任意44

注意:当源地址为网段需要指定传入接口

验证路由

tracert -d  112.16.172.14

结果

走电信路线

tracert -d  112.16.172.14

通过最多 30 个跃点跟踪到 112.16.172.14 的路由

  1     1 ms     1 ms     1 ms  192.168.20.12
  2     3 ms     1 ms     1 ms  192.168.2.1
  3     4 ms     3 ms     3 ms  192.168.1.1
  4     5 ms     4 ms     4 ms  125.115.232.1
  5    44 ms    16 ms     9 ms  115.233.65.145

走移动路线

tracert -d  112.16.172.14

通过最多 30 个跃点跟踪到 112.16.172.14 的路由

  1     3 ms     3 ms     3 ms  192.168.11.1
  2    <1 毫秒   <1 毫秒   <1 毫秒 112.16.172.14

流量控制eqos

可以通过ip限制 某电脑上网速度

vlan设置

协议 802.1q access/trunk/Hybrid

Hybrid 最灵活

access 最稳定

连接到trunk口 通用

启用vlan

vlan是交换机内部概念

vlan id 11 创建了blan.11接口一个,保存但是不应用。

使用vlan

交换机端口 配置
interface Ethernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 2 to 111

基于vlan的路由

规则

vlan过滤

通过过滤只处理一部分vlan可以减少cpu 。 设备-》配置-》网桥vlan过滤:启用

VLAN类型

(已打标签 )T 类型 trunk //指定vlan能进入

(未打标签)U类型 access /Hybrid //+主vlan 就给包打标后进入

允许带有11,20,17vlan标记包进入

让没有vlan的包打上120的tage

路由表

路由协议frr-ospf

路由area区分不同片区 ,走三层就不能走二层

frr-ospfd / quagga-ospfd 比较老

  • 一个ip网段广播,只有一个主路由。
  • 数据包不能经过ospf设备
  • 正常链路全FULL状态
opkg install frr-zebra frr-staticd frr-watchfrr frr-ospfd frr-vtysh

配置文件 vi /etc/frr/daemons 修改部分

ospfd=yes
vtysh_enable=yes
路由id
主优先级.次优先级.网段.ip地址
200.200.20.5
1.200.0.121 
通信ip
10.vlan.网段.ip地址
10.34.34.1

命令vtysh

建议只在多网口上启动ospf服务

类似于交换机 ?提供帮助

ospf协议通信 一定走在 独立的私有IP之上

查看链路

vtysh  -c ' show ip ospf nei'

查看路由

以学到的路由为准,状态更新不即时

vtysh  -c ' show ip ospf route'
vtysh  -c 'show ip route ospf'

查看细节db

vtysh  -c ' show ip ospf int'

vtysh  -c ' show ip ospf database router'
vtysh  -c ' show ip ospf database network'

查看配置文件

vtysh  -c ' show running-config ospfd'
vtysh  -c ' do write file'

主备规则

本地路由优先,ospf路线要么全部使用,要么全部不使用。

查看

命令行 vtysh

show int brief
show interface brief

show run
show ip route

查看ospf细节

查看相邻

show ip ospf    
show ip ospf neighbor #邻居 
show ip ospf route
show ip ospf int

OSPF邻居状态详解

查看路由

show ip ospf route

配置ospf

configure  terminal
router ospf
ospf router-id 200.200.22.101
network 10.147.20.0/24 area 123  #同有网段

network 192.168.11.0/24 area 111  #同有网段
network 192.168.0.0/24 area 100  #同有网段
default-information originate #下发默认路由
do write file

10.10.x.x 用于路由器之间 10.192.x.x 用于网络区域 10.11.x.x 用于虚拟机

优先级

先进入某接口

ip ospf priority 0

重启

触发重新选举 (也会借鉴其他路由器的选举结果)可以解决显示状态不对的问题

clear ip ospf process

删除命令

no network 192.168.20.0/24 area 0

清空配置

c t
no router ospf 

清空重配解决大部分不合理问题

状态

State = 与对端的状态/对端的角色

状态都必须full状态才正常 ,ExStart状态为理论主路由被占用

状态步骤备注
· Down状态;离线
· Attempt状态;单向联络
· Init状态;收到hello
· 2-way状态;得到对方ridvm主机不能ospf服务
· Exstart状态;选举vm主机不能ospf服务
· Exchange状态;开始交换
· Loading状态;交互路由表
· Full状态。完成交换

协议从广播到IP 形成通信

角色

DR指定路由,BDR备选路由,DROther其他路由

显示的远端路由器扮演的角色

监控数据包

通过抓包查看通信内容

tcpdump -vvv proto ospf

下发默认路由

router ospf
 ospf router-id 200.200.200.1
 network 10.10.4.0/24 area 123
 network 10.10.14.0/24 area 123
 network 192.168.11.0/24 area 123
 network 192.168.20.0/24 area 123
 default-information originate


抓包网络分析

抓arp

tcpdump -vvv  arp -i vlan.34  -e     

-e 增加以太网帧头部信息 -v 输出更详细

tcpdump -vvv  ether host  f0:00:00:3a:be:c5

通过IP和协议

ICMP一路抓包查看和路由回路

tcpdump  net 192.168.20.199  and proto 1 -v
tcpdump   ether src  6c:41:6a:ac:11:42 -c 10 -v -e

sflow网络分析

softflowd 实现数据流收集

softflowd -v 9 -i enp3s0 -t maxlife=1 -n 127.0.0.1:2055 -P udp -D
softflowd -i eno1 -v 5 -n 192.168.0.123:9999 -D 

prtg 或 Graylog分析 收集分析

防火墙

4层

iptables -t nat -nvL --line-number
firewall-cmd --list-all-zone
firewall-cmd --zone=public --add-interface=ovs1 
firewall-cmd --get-zone-of-interface=ovs1  

手动路由

指定网络指定访问

route add 192.168.186.0 MASK 255.255.255.0  10.147.20.188

插件

21.02

ZeroTier

zerotier	1.12.2
luci-app-zerotier   git-23.0
luci-i18n-zerotier-zh-cn  git-23.3
luci-app-passwall	4.68
luci-i18n-passwall-zh-cn	git-23.228
v2ray-core	5.7.0

网络打印机print

opkg install kmod-usb-printer kmod-lp  luci-app-usb-printer

dns

导入导出镜像

docker save -o ~/ad.tar  adguard/adguardhome   #导出镜像
docker load -i ~/ad.tar    #导入镜像
 
docker run -d \
    --name adguardhome  --network host  --restart=always  \
    -v /opt/adguardhome/work:/opt/adguardhome/work \
    -v /opt/adguardhome/conf:/opt/adguardhome/conf \
    adguard/adguardhome

macvlan docker

适合旁路由

sudo ip link set brlan promisc on  #混合模式
docker network create -d macvlan  -o parent=brlan --subnet=192.168.24.0/24 --gateway=192.168.24.3 mv24 

创建docker

wget https://mirrors.ustc.edu.cn/openwrt/releases/23.05.2/targets/x86/64/openwrt-23.05.2-x86-64-rootfs.tar.gz
docker import ./openwrt-23.05.2-x86-64-rootfs.tar.gz  openwrt-23.05.2-x86-64


docker create --restart always --name openwrt-23.05.2 --network mv24 --privileged -m 2G openwrt-23.05.2-x86-64 /sbin/init
 
docker start openwrt-23.05.2


设置自己的ip

ip addr del 192.168.1.1/24 dev br-lan
ip addr add 192.168.13.24/24 dev br-lan
ping 192.168.13.1
ip route add 0.0.0.0/0  via 192.168.13.1

ipvlan docker

指定网段和网关

docker network create -d ipvlan \
  --subnet=192.168.24.0/24 \
  --gateway=192.168.24.3 \
  -o parent=eno2.24 \
  v24o5

指定IP使用默认网关

docker run  -itd  --name test24   --ip=192.168.24.5 --net=v24o5   -P m.daocloud.io/docker.io/library/alpine /bin/sh

apk update 
apk add tcpdump 

系统运行在vlan之下

主机内无法修改ip

 
docker run -d \
    --name adguardhomev24  --ip=192.168.24.4 --net=v24o5  --restart=always  \
    -v /opt/adguardhomev24/work:/opt/adguardhome/work \
    -v /opt/adguardhomev24/conf:/opt/adguardhome/conf \
    adguard/adguardhome


 

常见问题

web终端拒绝 配置.接口=未指定

vi /etc/init.d/ttyd
#${interface:+-i $interface} \   #注解此行
/etc/init.d/ttyd restart

u22网络设置

apt purge cloud-init
ip link set eth0 down 
apt install iputils-ping  network-manager  -y
systemctl enable NetworkManager
systemctl disable systemd-networkd-wait-online.service     ##不等待其他服务

nano /etc/netplan/01-network-manager-all.yaml

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp1s0:
      addresses: [192.168.11.247/24]
      nameservers:
        addresses: [192.168.11.1, 8.8.8.8]
      routes:
        - to: default
          via: 192.168.11.1

管理交换机命令

命令手册

Huawei 交换机的mac 80fb-06c9-6db9

升级平替 (5560s-28p)

display router id

设置id

router id  192.168.2.2

在线命令查看

查ip和mac

dis arp | in 5CDD-709D-FAFD

dis arp | in 192.168.6.199

dis arp | in 94d9-b36c-2a8f
 
dis arp | in  f4b5-203b-1eec

//----只查mac
dis mac-add  f4b5-203b-1eec

等价dis arp all

地址漂移日志

display trapbuffer | in move

新一代设备支持

display mac-address flapping
display mac-address mac-move

拓扑变化

disp stp topology-change


CIST Topology Change information
 Number of Topology Changes             :169
 Time since last Topology Change        :0 days 12h:11m:6s
 Topology Change initiator(notified)    :GigabitEthernet0/0/4
 Topology Change last received from     :a036-9f08-cff3

stp disable #enable  #进入端口关闭 stp

环路检查的配置

 display loopback-detect

查看mac地址

dis mac-add  #//识别到的mac地址
dis mac-add | in Eth0/0/16  #//检索

arp统计

display arp packet statistics

vlan下的所以mac

display mac-address dynamic vlan 11

使用中的vlan

display vlan

ping mac 在指定vlan

ping mac enable
ping mac 0001-0300-0204 vlan 10

端口支持mac-vlan

mac-vlan enable  

将mac执行某个vlan

mac-vlan mac-address 0024-8ce8-af88 priority 0

只支持 untagged 的端口

查看路由表

dis vlan   #//vlan
dis ip routing-table  #//路由表

回环处理

那个端口使用率超高,只能用串口进入

display interface brief | include up

交换机管理(命令)

telnet 10.0.0.2
sys  #进入管理 system-view
dis vlan


dis current-configuration  #//所以配置  dis cu

配置文件导入导出

ftp server enable	
aaa	

远程登入下载

环路的协议 MSTP

display stp brief

常用查看

启动自动使用配置
dis startup   #//显示启动配置和下一次启动的配置

startup saved-configuration vrpcfg.zip

查看网口/链接(简要)

dis int desc #//接口注解描述  进入端口 设置描述 desc Lin To OA

dis int eth brief #//网口简要/概述 dis int br  是否插入网线
dis int brief #//端口/vlan简要  
dis ip int br  #//交换机ip简要 


查看某个端口

dis cu int eth 0/0/2  # dis cu int gi 0/0/2 # 同 dis this

端口属于那个vlan

display port vlan

查看某个vlan

dis vlan 

dis vlan 100 verbose 

查看某个虚拟网卡

dis int vlanif  
dis int Vlanif201

查看mac属于那个vlan

display mac-vlan mac-address all

查看设备/使用情况

cpu使用率

dis cpu-usage
dis version 
dis memory-usage 


dis clock
dis alarm urgent #//查看告警
 
dis device 

开启链路发现

lldp enable

发现其他设备

display lldp neighbor brief  #发现其他交换机等

管理设置命令

sys #先进入管理模式

保存配置文件

quit
save

查看当前端口

int Ethernet 0/0/1 
dis this    #vlan配置在接口内
vlan 3  #//进入某个vlna

int Ethernet  0/0/8 #//进入某端口
 

批量 port-group


port-group 2  #//没有自动创建
group-member gi 0/0/5 to 0/0/10

1.创建vlan 用数字表示

vlan batch 9 to 11 #//批量创建
vlan 89  

2.vlanif (虚拟局域网接口)

无需添加到vlan


[Quidway] interface vlanif 10
[Quidway-Vlanif10] ip address 10.1.1.1 255.255.255.128
[Quidway-Vlanif10] dhcp select global
[Quidway-Vlanif10] quit

修改端口模式 trunk/access/hybrid

access普通可访问只属于一个vlan , hybrid 可多个vlan可以交换机和电脑 ,trunk端口只允许缺省vlan的报文不打标签(不建议)

port link-type ?
port link-type  access

加入到vlan

数据包打上vlan id
port hybrid pvid vlan 200   
与那些vlan相通广播
port hybrid untagged vlan 6 to 200

移除vlan

undo port hybrid pvid vlan

移除加入的vlan

undo port hybrid vlan   6 to 100

基于mac划分vlan

这样可以实现 同一端口服务于不同vlan

vlan 123
  mac-vlan mac-address 001d-0f99-f5ad priority 0

路由

 ip route-static 0.0.0.0 0.0.0.0 10.0.0.1
 ip route-static 192.168.2.0 255.255.255.0 192.168.24.10
 ip route-static 192.168.4.0 255.255.255.0 192.168.24.10

交换机dhcp

[Quidway] ip pool 1
[Quidway-ip-pool-1] network 192.68.99.0 mask 255.255.255.128
[Quidway-ip-pool-1] dns-list 8.4.4.8
[Quidway-ip-pool-1] gateway-list 192.68.99.245
[Quidway-ip-pool-1] excluded-ip-address 192.68.99.1
[Quidway-ip-pool-1] excluded-ip-address 192.68.99.10
[Quidway-ip-pool-1] lease day 1
[Quidway-ip-pool-1] quit

删除undo

删除一个虚拟网卡(三层)

undo interface vlanif 1234

undo vlan 12345   


snmp管理 (建议v2c)

display snmp-agent sys-info 

snmp-agent mib-view included alliso iso   #配置开放的内容
snmp-agent sys-info version v2c 
snmp-agent community read ruser mib-view alliso  
snmp-agent community write wuser mib-view alliso 


#-------删除
undo snmp-agent sys-info version all 
undo snmp-agent community ruser
undo snmp-agent community wuser
undo snmp-agent mib-view alliso
undo snmp-agent     #关闭服务
#开启sn
snmp-agent mib-view included iso iso
#配置用户
snmp-agent usm-user v3 nmser authentication-mode     #//-- md5 wsf2010a
snmp-agent usm-user v3 nmser privacy-mode            #//-- aes128 wsf2010p
#配置组
snmp-agent group v3 nmsgroup privacy read-view iso notify-view iso  
snmp-agent usm-user v3 nmser group groupnms

删除部分snmp
undo snmp-agent usm-user v3 
undo snmp-agent mib-view isoview01

undo snmp-agent usm-user v3 nmser authentication-mode engineid 000007DB7F000001000022E6
undo snmp-agent usm-user v3 nmser authentication-mode engineid 000007DB7F00000100004DF1


开启web管理

http server load  S3700_28TP-V100R005C01SPC100.web.zip

http server enable

undo http server 

display ssh server status

创建web用户
aaa

local-user wsf password simple wsf2010
local-user wsf service-type http



删除端口配置


undo port default vlan
undo port link-type
undo port hybrid pvid vlan
undo port hybrid vlan all
port hybrid untagged vlan 1



这样配置恢复成初始不属于任何vlan,不然会收到提示Error: Please renew the default configurations.

 port link-type access
 port default vlan 20
port hybrid pvid vlan 20
port hybrid untagged vlan 20
mac-vlan enable

端口类型参考

切换端口模式

 port link-type hybrid

dns设置

dns 代理proxy 设备太老不支持

display dns dynamic-host

dns server 192.168.0.121

dns resolve
dns proxy enable


启用ssh/stelnet

v1.x版本 非常的老

display ssh server status

rsa local-key-pair create   #生成指定长度2048

user-interface vty 0 4
    authentication-mode aaa                 
    protocol inbound all     #//指定VTY用户界面所支持的协议 


ssh  server port  22
stelnet server enable
ssh server compatible-ssh1x enable    #兼容v1以前的版本
ssh user admin authentication-type all 


查看ssh状况


display ssh user-informati
display ssh server session

加入连接参数

由于版本过老

ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc admin@192.168.11.1


 

字符终端宽度


screen-width 200 

screen-length 200 temporary #一次显示行数

日志外发

info-center source default channel 2 log level debugging
info-center loghost source Vlanif100
info-center loghost 192.168.0.123

华三核心三层

H3C S5560S-28P-SI-6113 (只读管理建议使用web) mac : 307b-acc4-4070

在线命令查看

选型参考

192.168.*.[20-220] IP常规使用

管理后建议不适用vlan1

查看版本和运行时间

display version

改名

sysname  5560

关闭 提示信息

undo info-center enable

流量

display counters rate inbound interface 
display counters rate outbound interface

普通模式下

重置配置

reset saved-configuration
reboot

恢复出厂配置

restore factory-default

二层相关

回环检查

loopback-detection global enable vlan all
dis loopback-detection


arp统计

display arp detection statistics attack-source

批量设置

interface range GigabitEthernet 1/0/1 to GigabitEthernet 1/0/10
 
loopback-detection enable vlan all        #开启端口环路检测功能
loopback-detection action block       #组操作

拓扑变化

dis stp history 

stp状态

查看阻断情况

dis stp br

看日志

display log

dns设置

dns 代理proxy

display dns server

dns server 192.168.0.121

dns resolve
dns proxy enable


ospf

互相同步路由表,存入数据库

查看

ip ttl-expires enable 
ip unreachables enable

链路

display router id
dis ospf peer

状态都必须full状态才正常

路由

display ospf lsdb router

display ip routing-table protocol ospf
dis ospf routing 
 

详情

dis ospf 1

配置

dis ospf verbose
router id 200.190.22.8
ospf 1  
default-route-advertise always  #下发默认路由
area 0
network 10.1.0.0   0.0.0.255
network 10.1.2.0   0.0.0.255

端口模式ospf

int g0/0/0
ospf 1 router 1.1.1.1
network 10.1.12.1 0.0.0.0

启用

ospf enable 1 area 0

重启

reset ospf process  

删除

undo ospf 1

地址漂移

display mac-address mac-move

广播限流

 broadcast-suppression  50
dis stp history

配置vlan

vlan 2
vlan 10 to 28
vlan 34
vlan 100
vlan 87 to 88
vlan 200 to 201

混合口

端口1,3

port link-type hybrid
undo port hybrid vlan 1
port hybrid vlan 2 11 to 26 34 87 to 88 100 200 to 201 untagged
port hybrid pvid vlan 11

直通口

端口2,4

port link-type trunk
port trunk permit vlan 2 to 99
port trunk pvid vlan 2 

mac vlan

mac-vlan mac-address b83a-080e-f650 vlan 2

删除mac记录

undo mac-address 4cbd-8f79-1b84 vlan 34

配置IP地址

查看ip

display vlan

display ip interface  brief

查看本机mac

display stp
dis int gi 1/0/1   每个接口都有mac

cpu使用率

dis cpu-usage

三层相关

设置ip

interface vlan-interface 1
ip address 192.168.11.205 255.255.255.0

配置默认路由

ip route-static 0.0.0.0  0  192.168.11.1

路由表

dis ip routing-table

路由协议

display ip routing-table protocol rip

删除arp记录

undo arp 192.168.88.7

设置常用服务

发现协议lldp

lldp global enable



display lldp neighbor-information   #显示附近的设备

dis lldp nei list 

telnet 开启

telnet server enable

查看接口状况

display interface brief

修改接口备注


interface GigabitEthernet1/0/24
description upload

统计信息

display interface brief

端口加入vlan

vlan 2
port GigabitEthernet 1/0/2

开启web

ip http enable
ip https enable

local-user admin

password simple admin

service-type http https

开启telnet

telnet server enable
local-user admin 
service-type telnet  

authorization-attribute user-role level-15 
user-interface vty 0 4
authentication-mode scheme  


trunk回环冲突

1(default), 11-28, 34, 87-88, 100, 200-201,


vlan 2 问题 与 默认pvid 冲突

 

端口类型参考

端口纯trunk

也不行 要在允许的vlan中取消当前vlan

 port link-type trunk
 port trunk pvid vlan 2 
 port trunk permit vlan 3 to 1024
 poe enable

对端

#
interface GigabitEthernet0/0/4
 description updown
 port link-type trunk
 port trunk pvid vlan 2
 port trunk allow-pass vlan 3 to 4094
 ntdp enable
 ndp enable
 bpdu enable
#

开启dhcp

配置一个IP池

dhcp server ip-pool loopv24 
network 192.168.24.0 mask 255.255.255.0
gateway-list 192.168.24.1
address range 192.168.24.25 192.168.24.250
expired day 0 hour 10 minute 0 second 0
dns-list 8.8.8.8
 
dhcp enable

认证

display radius    scheme

Portal ++

支持bs结构

display portal server

openPortal

梳理冗余配置

mac 状态为Incomplete很有可能属于不符合vlan的ip段

无法访问的排除

配置 26vlan的ip 插在到 34vlan的接口上 没有做mac-vlan ,导致交换机也无法访问。mac列表一定要找到对应的ip

192.168.6.153 
192.168.6.128

192.168.14.14
192.168.88.52
192.168.88.28
192.168.24.10
192.168.6.46

sflow流分析

display sflow
sflow collector 2 ip (NetFlow Server IP) port 9996
sflow agent ip (Device IP)
interface gigabitethernet 1/0/2
 sflow flow collector 2
 sflow counter collector 2
 sflow counter interval 30

5560x

策略路由(PBR)

v5

display acl all

dis traffic classifier user-defined 
dis traffic behavior user-defined 
display qos policy interface

将分类与行为叠加形成策略

classifier tc-telecom
behavior tb-telecom

v7

display ip policy-based-route
display acl 3000

匹配的流量

display ip policy-based-route interface Vlan-interface20
display ip routing-table 192.168.20.174

关键next-hop

# 高级ack
acl advanced 3000   
 rule 5 permit ip source 192.168.20.174 0 destination any
# 创建策略路由
policy-based-route pbr-telecom permit node 10  
 if-match acl 3000                         
 apply next-hop 192.168.4.1    
# 应用策略路由 到vlan
interface Vlan-interface50
 ip policy-based-route pbr-telecom  

交换机py功能

执行速度比较慢

获取版本

import comware 
cmd = comware.CLI('dis dev ;',False)
cout = cmd.get_output()
print(cout[2])

print(cout)

python 读写文件

import comware ,os,re

pwd = os.getcwd()
print("当前目录: " + pwd)
file_list = os.listdir('./')

for file in file_list:
	print("file: " , file)


f=open('startup.cfg', 'r' )
print(f.read())
f.close()
 


with open('./k.py', 'w+'   ) as f:
    f.write('Hello, world123!')



with open('./k.py', 'r'   ) as f:
    print(f.read())



多行内容


cc = """
import comware ,os,re

pwd = os.getcwd()
print("dir: " + pwd)
file_list = os.listdir('./')

for file in file_list:
	print("file: " , file)
"""

print(cc)



with open('./k.py', 'w+'   ) as f:
    f.write(cc)

查看文件

more k.py

执行python文件

python flash:/k.py
  • 交互方式写入py文件
  • 通过命令直接执行

获取管理地址

dis lldp nei int  GE1/0/25 verbose

通过交换机管理交换机

telnet 10.10.13.1

获取序列号

dis dev manuinfo

下载文件

import comware
c = comware.Transfer('http', '192.168.20.199', 'h3c/test.py', 'flash:/test.py',login_timeout=15, user='', password='')

测试

test.py 自动下载测试文件arun.py

import comware  
c = comware.Transfer('http', '192.168.20.199', 'h3c/arun.py', 'flash:/arun.py',login_timeout=15, user='', password='')

ls.py 列出文件

import comware ,os,re

pwd = os.getcwd()
print("dir: " + pwd)
file_list = os.listdir('./')

for file in file_list:
	print("file: " , file)

下载出错处理

import comware
c = comware.Transfer('http', '192.168.20.199', 'h3c/test.cfg', 'flash:/test.cfg',login_timeout=15, user='', password='')

err = c.get_error()
print(err)

根据SN自动配置

DHCP配合bootfile选项执行python文件

startup saved-configuration flash:/i_1234566.cfg

自动运行文件 arun.py

import comware ,os,re,time

def getSN():
    """ get  SERIAL NUMBER """
    cmdc = 'dis dev manuinfo'
    cmd = comware.CLI(cmdc,False)
    cout = cmd.get_output()
    exstr ='DEVICE_SERIAL_NUMBER\s+:\s+(.*)' 
    for o in cout:
        ret = re.search(exstr,o)
        if ret:
            sn = ret.group(1)
            print(sn)
            return sn

    
def getCFG(ip,sn):
    """" get config """
    c = comware.Transfer('http', ip, 'h3c/{}.cfg'.format(sn), 'flash:/test.cfg',login_timeout=15, user='', password='')
    err = c.get_error()
    if err:
		return False
    else:
    	return True
    
def doit():
    """ run main """
    ip = "192.168.20.199"
    sn = getSN()
    """  """
    for i in range(60):
        stat = getCFG(ip,sn)
        if stat == True:
            break
        else:
            time.sleep(10)
            print("try {}".format(i))
        
def doset():
    """  set startup """
    comware.CLI('startup saved-configuration flash:/test.cfg main;reboot force')
    
    
if __name__ == '__main__':
    doit()

锐捷交换机

RuiJie nbs5552xg (mac: 5869-6c01-dd72)

查看 二层转发表信息

远程管理 telnet

(需要去web端设置密码) 不然会收到提示 password required, but none set

configure terminal 
line vty0 
password xxx

参考

telnet 192.168.11.200

查看接口状况

show interfaces status

查看启动文件

shwo boot

查ip和mac

show arp 
shwo mac-addr

查看mac某个地址


show arp | in 192.168.11.200      #//检索

进入管理模式

(需要先web端设置密码) ERROR: No passwords set.

enable password 0 xxxx

查看配置

enable  

show running-config

开启链路发现

这样就知道接在那个口

configure terminal
lldp run
end
show lldp
show lldp neighbors   interface  GigabitEthernet 0/35  #发现结果


show lldp neighbors interface GigabitEthernet 0/1-0/48

清除过期数据

clear lldp table all

保存配置

enable  

write memory

离开管理模式

disable

查看路由表

show vlan   #//vlan
show ip route #//路由表

交换机管理(文件)

pwd
dir flash:/
file config.text

rename flash:/fstab flash:/new-fstab




copy oob_tftp://192.168.1.1/RGOS.bin flash:RGOS.bin
ftp
show file systems



configure terminal
show ftp-server


ftp-server topdir /
ftp-server enable
ftp-server username user password pass

tftp-server enable

进入配置模式

configure terminal

离开管理模式

exit

重置密码

连接串口 ,启动输入ctrl+c 进入启动菜单

Unlocking L2 Cache ...Done
arm_clk=1000MHz, axi_clk=400MHz, apb_clk=100MHz, arm_periph_clk=500MHz
SETMAC: Setmac operation was performed at 2015-12-20 20:23:56 (version: 11.0)
Press Ctrl+C to enter Boot Menu
Net:   eth-0
Entering simple UI....

====== BootLoader Menu("Ctrl+Z" to upper level) ======
    TOP menu items.
************************************************
    0. Tftp utilities.
    1. XModem utilities.
    2. Run main.
    3. SetMac utilities.
    4. Scattered utilities.
    5. Set Module Serial
************************************************
Press a key to run the command:

按ctrl+q 进入启动器命令行
Press a key to run the command:
bootloader# main_config_password_clear

更具提示输入 1


Enter runlevel: 1
~ # pwd
/
~ # ls
bin         data        etc         linuxrc     rg_cfg      rootfs      tmp
boot        data2       home        mnt         rgos        sbin        usr
bootloader  dev         lib         proc        root        sys         var
~ # uname -a
Linux (none) 3.10.18-Broadcom Linux+ #1 SMP Thu Oct 29 22:59:28 CST 2015 armv7l GNU/Linux

移除配置文件


~ # cd data
/data # mv config.text config.bak
/data # sync
/data # reboot

移动回来配置文件

Ruijie> enable
Ruijie# copy flash:config.bak flash:config.text
Ruijie# copy startup-config running-config


参考

配置web管理 三层

configure terminal
hostname 5750p48 
vlan 1
interface vlan 1
ip address 192.168.11.201 255.255.255.0
show ip route
exit


telnet 登入密码

line vty 0 4
login
password xxxxx
exit 

enable service web-server  

默认是admin/admin

默认路由 (三层)


ip route 0.0.0.0 0.0.0.0 VLAN 1 192.168.11.1



ip route 0.0.0.0 0.0.0.0 192.168.1.0

二层

ip default-gateway 192.168.1.1  

snmp配置

show snmp-server

snmp-server

snmp-server community wuser rw 
snmp-server community ruser ro 

no snmp-server enable traps

字符终端宽度

terminal width 10

华三交换机 poe三层

S1850-28p-pwr/S5024PV2-EI-PWR/S5130S-28P-PWR-EI (只读管理建议使用web)

在线命令查看

12U挂壁机柜尺寸

1U高度44

440×238×44     交换机尺寸
600*400*635    宽*深*高

查看版本和运行时间

display version

改名

sysname  lou5

关闭 提示信息

undo info-center enable

修改密码

local-user admin
password simple admin

普通模式下

重置配置

reset saved-configuration
reboot

恢复出厂配置

restore factory-default

stp环路冗余配置

display stp
display stp brief

dis stp history
sys
stp   enable
stp config-digest-snooping

reset stp 

二三层设置

回环检查

loopback-detection enable
dis loopback-detection

配置IP地址

查看ip

display ip interface

display ip interface vlan-interface brief

查看本机mac

display stp
dis int gi 1/0/1   每个接口都有mac

设置ip

interface vlan-interface 1
ip address 192.168.11.202 255.255.255.0

配置默认路由

ip route-static 0.0.0.0  0  192.168.11.1

设置常用服务

发现协议lldp

lldp enable


display lldp neighbor-information   #显示附近的设备

telnet 开启

telnet server enable

查看接口状况

display interface brief

修改接口备注


interface GigabitEthernet1/0/24
description string 

统计信息

display interface brief

端口加入vlan

vlan 2
port GigabitEthernet 1/0/2

trunk口

#
interface GigabitEthernet1/0/4
 port link-type trunk
 port trunk permit vlan 1 3 to 1024
 port trunk pvid vlan 2
 poe enable
#

#
interface GigabitEthernet1/0/1
 port link-type hybrid
 port hybrid vlan 1 untagged
 port hybrid pvid vlan 11
 poe enable
#
interface GigabitEthernet1/0/2
 port link-type trunk
 port trunk permit vlan 1 to 1024
 port trunk pvid vlan 2
 poe enable
#
interface GigabitEthernet1/0/3
 description DuanKou1
 port link-type hybrid
 port hybrid vlan 1 untagged
 port hybrid pvid vlan 11
 poe enable
#
interface GigabitEthernet1/0/4
 port link-type trunk
 port trunk permit vlan 1 to 1024
 port trunk pvid vlan 2
 poe enable


防火墙

一本通FortiOS 7

vm64模式SeaBIOS vyos1.2.9路由器

基础路由应用

至少3个口一个管理口,一个lan,一个wan 。 端口映射,vlan,ospf,upnp,

命令行管理

第一个物理口 mgmt (通常用于管理)

show 看配置 get 看状态

查看命令

show full-configuration
show full-configuration system interface mgmt 
get system interface physical 
get hardware status
get system status
show system global
get system inter   显示ip
show system inter  显示配置
get route info routing-table all #按tab补全
show route static  
get hardware cpu          
get hardware memory      
get system performance status   

get system interface physical  #硬件接口
get hardware nic  #硬件接口

get system arp 
get system arp 
get system fortiguard-service status
get system stp list

配置命令

配置ip

config system interface
    edit "mgmt"
        set vdom "root"
        set mode static
        set ip 192.168.129.111 255.255.255.0
        set allowaccess ping https ssh snmp http
        #set role lan
        set type physical
    next
end

show system interface mgmt

配置路由

静态指向路由

config router static
    edit 1
        set dst 192.168.0.0 255.255.0.0
        set gateway 192.168.122.1
        set device "mgmt"
    next
end


show router static

系统路由表

get router info routing-table all

dns配置


config system dns
    set primary 8.8.8.8
    set secondary 96.45.46.46
    set protocol cleartext dot
    set server-hostname "globalsdns.fortinet.net"
end
show system dns

测试命令

execute ping 8.8.8.8 
traceroute 8.8.8.8
execute reboot 

虚拟vlan

config system switch-interface
    edit "sw1"
        set vdom "root"
        set member "port2" "port3"
        set type switch
        set intra-switch-policy implicit
        set mac-ttl 300
        set span disable
    next
end
config system virtual-switch
    edit "VLAN10"
        set physical-switch "sw0"
        set vlan 10
        config port
            edit "port1"
            next
            edit "port2"
            next
        end
    next
   end

虚拟机配置

BIOS模式,网口必须是virtio类型

登入密码

终端默认登入密码

默认用户名为 admin ,默认密码为空。

自动化运维-收集设备快照

当设备出现问题 来处理时最后悔的事情是。

  • 之前是怎么样的是不是配置被改了
  • 这个之前是在用吗

网络设备快照

通一个简单程序自动登入交换机把命令输出结果解析一个。TextFSM这个是一个解析神奇


class rgSwInfo:
    """ 锐捷
    接口统一  支持大部分管理型交换机
    获取 华为交换机信息"""
    def __init__(self,cfg):
        """ 初始化 """
    def login(self,user,passwd,ip):
        """登入交换机 返回telnet"""
    def todo(self):
        """ 实际要执行的内容"""
    def cfg2get(self,tn):
        """ 获取配置文件 """
    def list2str(self,tabLs): 
        """ 多行合并成字符串"""
    ##------------arp------------
    def arp2tab(self,tn):
        """ 返回交换 arp表 字符串数组"""
    def arp2rows(self,arpTab,tpl="display-arp.template"):
        """  解析表格字符串  返回json"""
    def arp2json(self,ls):
        """  带表头 col """
    ##------------mac------------
    def mac2tab(self,tn):
        """ 返回交换 arp表"""
    def mac2rows(self,tabStr,tpl="display-mac.template"):
    def mac2json(self,ls):
        """  带表头 col """
       
   

输出每个设备的特定文件

5560_192.168.0.3_arp.json
5560_192.168.0.3_mac.json
lou10_192.168.11.205_mac.json
lou3_192.168.11.203_mac.json
lou7_192.168.11.202_mac.json
OpenWrt_192.168.20.1_arp.json
rg552_192.168.11.200_mac.json
s3700_192.168.0.2_arp.json
s3700_192.168.0.2_mac.json

mac文件内格式

[
    {
        "mac": "00e0-4c37-ace4",
        "port": "Eth0/0/10",
        "vlan": "34"
    },
    .....
]

arp文件格式

[
    {
        "ip": "192.168.11.2",
        "mac": "80fb-06c9-6db9",
        "port": "Vlanif11",
        "t": "I - ",
        "vlan": ""
    },
    ...
]

在表格中查看简单分析

华三胖AP设置

H3C WA2620i-AGN 胖瘦一体

WA系列无线接入点设备配置指导

H3C WA2600系列无线接入点 配置调测 配置指导 H3C WA系列无线接入点 配置指导

web胖ap设置

无缝漫游 需要支持kvr协议

集客AC AP 知识大全

本地转发

需要下发配置到AP配置文件map-configuration如下 apcfg.txt

无线配置》AP管理》AP修改AP配置下的Map文件选中flash:/apcfg/apcfg.txt

system-view
telnet server enable

lldp global enable

vlan 26 to 29

interface GigabitEthernet 1/0/1

port link-type trunk

port trunk permit vlan all


quit


开启ap的telnet

sys
probe
wlan ap-execute all exec-console enable

ap列表

dis wlan ap all address  

默认ap密码h3capadmin

老ap

胖ap通过表格配置,批量下发配置

初始设置

dis version
dis clock

IP设置

时间设置 时间同步

clock datetime 11:11:11 2023/12/26
dis clock

clock protocol ntp 
clock timezone beijing add 08:00:00
ntp-service enable 
ntp-service unicast-server  114.118.7.161

  display ntp-service status
  display ntp-service sessions
undo info-center enable



tftp  10.0.0.4  put startup.cfg startup.bak       
tftp  10.0.0.4  put wa2600a_fit.bin  wa2600a_fit.bak

 
tftp  10.0.0.4 get WA2600A-CMW520-R1308P05-FAT.bin  wa2600a_fat.bin             
bootrom update file wa2600a_fat.bin
boot-loader file wa2600a_fat.bin main
reboot

通过串口设置

system-view

interface vlan-interface 1

ip address 10.0.0.2 24



quit
telnet server enable

设置密码

user-interface vty 0 4

authentication-mode password
set authentication password simple admin

user privilege level 3

ip查看

display ip interface brief
display ip routing-table
display arp 
display dhcp client 

web管理

display web users
display ip https
ip https enable

local-user admin


password simple admin
authorization-attribute level 3
service-type web


无线设置


display interface wlan-radio
display interface wlan-bss 
display interface wlan-mesh 

interface wlan-radio

mac地址清单

MACAddressCEVLANPort
00e0-4c37-ace434Eth0/0/11dynamic
00e0-4cff-2c1434Eth0/0/11dynamic
7427-eae8-fef915Eth0/0/5dynamic
e0d5-5e56-7edb17Eth0/0/7dynamic
5cde-3414-a88726Eth0/0/16dynamic
e447-9054-448420Eth0/0/9dynamic
f4b5-203b-240426Eth0/0/16dynamic
70b5-e874-584434Eth0/0/11dynamic
b42e-9904-6dda34Eth0/0/2dynamic
f4b5-2024-f44c34Eth0/0/11dynamic
f000-006c-815534Eth0/0/11dynamic
f000-006c-816734Eth0/0/11dynamic
b42e-99e6-3c4915Eth0/0/5dynamic
e062-9087-a15a34Eth0/0/11dynamic
00e0-4f03-2e2434Eth0/0/14dynamic
4419-b649-83af24Eth0/0/14dynamic
6045-cb7f-c90234Eth0/0/14dynamic
e247-1f2c-0f6d34Eth0/0/11dynamic
b42e-999d-1f9915Eth0/0/5dynamic
8469-9386-458534Eth0/0/2dynamic
2cea-7feb-b118100Eth0/0/20dynamic
e062-9082-225834Eth0/0/11dynamic
408d-5c1d-9e3e20Eth0/0/9dynamic
4cbd-8f90-71a788Eth0/0/11dynamic
0c9d-92cc-8c9426Eth0/0/16dynamic
b42e-9968-3f8c34Eth0/0/14dynamic
4cbd-8f90-719c88Eth0/0/11dynamic
4cbd-8f90-719888Eth0/0/14dynamic
4cbd-8fba-d02234Eth0/0/11dynamic
b42e-9944-2e6e34Eth0/0/14dynamic
b42e-9979-de6117Eth0/0/7dynamic
309c-23b9-101a20Eth0/0/9dynamic
4cbd-8fba-d01234Eth0/0/11dynamic
18c0-4d1b-c69e15Eth0/0/5dynamic
4cbd-8fcc-902424Eth0/0/14dynamic
e0d5-5efc-0d5f26Eth0/0/16dynamic
309c-2365-209e20Eth0/0/9dynamic
e0d5-5e6d-bd2334Eth0/0/2dynamic
4cbd-8fcc-90b824Eth0/0/14dynamic
4cbd-8fcc-90b626Eth0/0/16dynamic
4cf5-dc9a-c39e20Eth0/0/9dynamic
0017-6112-b286100Eth0/0/22dynamic
c06d-ed2c-d96434Eth0/0/2dynamic
4cf5-dc97-347120Eth0/0/9dynamic
f4b5-2018-50e7100Eth0/0/21dynamic
4cf5-dc97-344e26Eth0/0/16dynamic
e062-90eb-049234Eth0/0/11dynamic
4419-b649-860924Eth0/0/14dynamic
4cf5-dc97-343e26Eth0/0/16dynamic
4419-b649-861924Eth0/0/14dynamic
4cf5-dc97-342117Eth0/0/7dynamic
e0d5-5e51-ea2734Eth0/0/11dynamic
f000-003f-64a824Eth0/0/14dynamic
4419-b649-86fc24Eth0/0/14dynamic
4419-b649-86fd24Eth0/0/14dynamic
0492-265b-262c15Eth0/0/5dynamic
f4b5-2024-f19b34Eth0/0/11dynamic
e0d5-5efa-1b79100Eth0/0/24dynamic
f000-006c-457434Eth0/0/2dynamic
5475-959c-548b34Eth0/0/14dynamic
4419-b649-870924Eth0/0/14dynamic
4419-b649-870a24Eth0/0/14dynamic
4419-b649-870f24Eth0/0/14dynamic
4419-b649-870524Eth0/0/14dynamic
4419-b649-870624Eth0/0/14dynamic
4419-b649-871824Eth0/0/14dynamic
4419-b649-871c24Eth0/0/14dynamic
4419-b649-871424Eth0/0/14dynamic
4419-b649-871624Eth0/0/14dynamic
4419-b649-871724Eth0/0/14dynamic
4419-b649-87da24Eth0/0/14dynamic
4419-b649-87f424Eth0/0/14dynamic
4cf5-dc97-367717Eth0/0/7dynamic
e062-90f6-66b934Eth0/0/11dynamic
4cf5-dc97-366e26Eth0/0/16dynamic
020f-ed77-796014Eth0/0/11dynamic
acb9-2f46-05f517Eth0/0/7dynamic
4cbd-8f2c-959724Eth0/0/14dynamic
0c82-6858-7222200GE0/0/3dynamic
f000-006c-664826Eth0/0/16dynamic
d258-42b8-769620Eth0/0/9dynamic
b83a-080e-f65020Eth0/0/9dynamic
2cea-7fed-051c100Eth0/0/18dynamic
849a-4059-b27317Eth0/0/7dynamic
44a6-42b6-c0a317Eth0/0/7dynamic
f000-003f-669d26Eth0/0/16dynamic
0017-6112-279e34Eth0/0/11dynamic
0017-6112-27a126Eth0/0/16dynamic
4cf5-dc97-36b417Eth0/0/7dynamic
408d-5c8f-2aca15Eth0/0/5dynamic
4419-b649-849824Eth0/0/14dynamic
a85e-45a0-0b0e34Eth0/0/14dynamic
4cf5-dc97-369517Eth0/0/14dynamic
0020-6ba3-4d7c20Eth0/0/9dynamic
f000-003f-669c87Eth0/0/14dynamic
4cbd-8f2c-957c24Eth0/0/14dynamic
4cbd-8f2c-957224Eth0/0/14dynamic
a85e-45a0-0ace20Eth0/0/9dynamic
4419-b649-857524Eth0/0/14dynamic
c051-7ea4-099f34Eth0/0/14dynamic
a85e-45a0-0ab734Eth0/0/2dynamic
2428-fddc-be9d26Eth0/0/16dynamic
e062-90c9-171234Eth0/0/11dynamic
f000-006c-67ee34Eth0/0/11dynamic
d45d-6439-a7a320Eth0/0/9dynamic
f4b5-2024-f36534Eth0/0/11dynamic
4419-b649-85b624Eth0/0/14dynamic
b42e-997a-257034Eth0/0/11dynamic
4ced-fb6c-ef9f15Eth0/0/5dynamic
e86a-642e-044620Eth0/0/9dynamic
0017-6112-a93b34Eth0/0/11dynamic
b42e-997a-255034Eth0/0/11dynamic
f000-003b-485d34Eth0/0/11dynamic
4cbd-8fd5-db1e34Eth0/0/11dynamic
4cbd-8f79-1b8434Eth0/0/11dynamic
f000-003b-487f34Eth0/0/11dynamic
4cbd-8f79-1b8034Eth0/0/11dynamic
f000-006c-681126Eth0/0/16dynamic
6461-4046-fc4d26Eth0/0/16dynamic
f000-003b-485424Eth0/0/14dynamic
f000-003b-489a34Eth0/0/11dynamic
74d4-356d-891e34Eth0/0/11dynamic
4cbd-8f79-1b7634Eth0/0/11dynamic
4cbd-8f79-1b7a34Eth0/0/11dynamic
4cbd-8fd5-dbd434Eth0/0/11dynamic
e062-90dd-080334Eth0/0/11dynamic
8ca6-df43-6b4315Eth0/0/5dynamic
4cbd-8f79-1b5334Eth0/0/11dynamic
f000-003b-48a134Eth0/0/11dynamic
f000-003f-589e24Eth0/0/14dynamic
40b0-765f-6e4720Eth0/0/9dynamic
4cbd-8f79-1b2a34Eth0/0/11dynamic
f000-003f-58bf87Eth0/0/14dynamic
00e0-4c75-145134Eth0/0/11dynamic
0c9d-920f-c66820Eth0/0/9dynamic
4cbd-8fd5-da7024Eth0/0/14dynamic
4cbd-8fd5-da7126Eth0/0/16dynamic
f000-003b-493126Eth0/0/16dynamic
e062-9032-a96634Eth0/0/11dynamic
4cbd-8fd5-da6e34Eth0/0/11dynamic
f000-003b-493534Eth0/0/11dynamic
f000-003b-494a34Eth0/0/11dynamic
e062-908d-999524Eth0/0/14dynamic
8269-c0e2-cbe114Eth0/0/11dynamic
e062-902f-e90634Eth0/0/11dynamic
081f-7130-405c26Eth0/0/16dynamic
0030-1bba-02db34Eth0/0/11dynamic
e062-90bb-c9b524Eth0/0/14dynamic
081f-7150-30de34Eth0/0/11dynamic
f4ee-0823-956a100Eth0/0/24dynamic
e0d5-5ed5-47ee34Eth0/0/2dynamic
7297-ae6a-352720Eth0/0/9dynamic
b42e-99ea-043c34Eth0/0/14dynamic
4cbd-8fd5-da9534Eth0/0/11dynamic
4cbd-8fd3-2aa934Eth0/0/11dynamic
4cbd-8fd5-da8524Eth0/0/14dynamic
4cbd-8fd5-dab234Eth0/0/11dynamic
4cbd-8fd5-dab034Eth0/0/11dynamic
8ca6-dfc4-490d100Eth0/0/24dynamic
4cbd-8f79-19ca24Eth0/0/14dynamic
00e0-4f03-c58234Eth0/0/11dynamic
4cbd-8f79-19ac34Eth0/0/11dynamic
686d-bcf6-0e9188Eth0/0/11dynamic
5850-ed6d-2f7b34Eth0/0/2dynamic
0017-6112-ab5034Eth0/0/11dynamic
f000-006b-da3e34Eth0/0/2dynamic
f4b5-203b-1eec26Eth0/0/16dynamic
5850-ed6d-2f6034Eth0/0/2dynamic
4cbd-8f79-196834Eth0/0/11dynamic
e062-90bb-da7a24Eth0/0/14dynamic
2428-fdc1-733326Eth0/0/16dynamic
807c-6202-b8a126Eth0/0/16dynamic
7405-a563-fba334Eth0/0/14dynamic
f4b5-203b-1e4434Eth0/0/11dynamic
8ce7-486e-bf8087Eth0/0/14dynamic
e062-90b0-4b6a34Eth0/0/11dynamic
fcaa-1422-a33134Eth0/0/11dynamic
0840-f360-a0d834Eth0/0/11dynamic
74d4-356c-8a6b15Eth0/0/5dynamic
f4b5-2024-ef6b26Eth0/0/16dynamic
0017-6111-1ad034Eth0/0/14dynamic
4ced-fb41-fba515Eth0/0/5dynamic
00e0-4c3c-a0db26Eth0/0/16dynamic
7486-e218-0a9934Eth0/0/2dynamic
7486-e218-1afe34Eth0/0/2dynamic
e0d5-5efc-028834Eth0/0/14dynamic
00d8-610c-3d5834Eth0/0/14dynamic
807c-62bb-4e1e20Eth0/0/9dynamic
408d-5ce7-408c26Eth0/0/16dynamic
5404-a6a1-7fb120Eth0/0/9dynamic
e062-908a-bdc934Eth0/0/11dynamic
00e0-66ff-1b5f100Eth0/0/19dynamic
1012-fb7a-265626Eth0/0/16dynamic
94d9-b36c-2a9026Eth0/0/16dynamic
00e0-4c57-916020Eth0/0/9dynamic
b42e-9968-409026Eth0/0/16dynamic
24cf-24a4-2da834Eth0/0/14dynamic
4ced-fb61-b9ae34Eth0/0/11dynamic
00e0-4c85-826d34Eth0/0/14dynamic
70b5-e874-56e526Eth0/0/16dynamic
4cbd-8f90-6d5426Eth0/0/16dynamic
00e0-4d95-132634Eth0/0/2dynamic
f000-003a-beab24Eth0/0/14dynamic
f000-003a-beb334Eth0/0/11dynamic
f000-003a-beaf34Eth0/0/11dynamic
9ca6-15d8-f7a1100Eth0/0/24dynamic
00e0-7070-de7134Eth0/0/14dynamic
f000-003a-bec534Eth0/0/11dynamic
8630-12f1-da3520Eth0/0/9dynamic
f000-003a-bec024Eth0/0/14dynamic
f000-003a-bee534Eth0/0/11dynamic
b42e-991d-421034Eth0/0/11dynamic
2428-fdc1-76a488Eth0/0/11dynamic
2428-fdc1-76e420Eth0/0/9dynamic
2428-fdc1-76d034Eth0/0/14dynamic
f4b5-2024-ebaf34Eth0/0/11dynamic
2428-fdc1-76c726Eth0/0/16dynamic
2428-fdc1-76cc26Eth0/0/16dynamic
2428-fdc1-769926Eth0/0/16dynamic
2428-fdc1-769826Eth0/0/16dynamic
b42e-99e6-329b34Eth0/0/11dynamic
00e0-4c52-032d17Eth0/0/7dynamic
b42e-99e6-327926Eth0/0/16dynamic
309c-237d-6c7334Eth0/0/11dynamic
accb-51de-42e426Eth0/0/16dynamic
70b5-e874-573215Eth0/0/5dynamic

arp清单

来自核心交换机

ipmacportvlan
192.168.254.680fb-06c9-6db9Vlanif1
192.168.254.5IncompleteEth0/0/21
192.168.11.180fb-06c9-6db9Vlanif11
192.168.12.180fb-06c9-6db9Vlanif12
192.168.13.180fb-06c9-6db9Vlanif13
192.168.14.180fb-06c9-6db9Vlanif14
192.168.14.14020f-ed77-7960Eth0/0/1114
192.168.14.138269-c0e2-cbe1Eth0/0/1114
192.168.15.180fb-06c9-6db9Vlanif15
192.168.15.2548ca6-df43-6b43Eth0/0/515
192.168.15.1630492-265b-262cEth0/0/515
192.168.15.634ced-fb41-fba5Eth0/0/515
192.168.15.88b42e-99e6-3c49Eth0/0/515
192.168.15.200408d-5c8f-2acaEth0/0/515
192.168.15.17818c0-4d1b-c69eEth0/0/515
192.168.15.2174d4-356c-8a6bEth0/0/515
192.168.15.1774ced-fb6c-ef9fEth0/0/515
192.168.16.180fb-06c9-6db9Vlanif16
192.168.17.180fb-06c9-6db9Vlanif17
192.168.17.152acb9-2f46-05f5Eth0/0/717
192.168.17.44cf5-dc97-36b4Eth0/0/717
192.168.17.15044a6-42b6-c0a3Eth0/0/717
192.168.17.249849a-4059-b273Eth0/0/717
192.168.17.114cf5-dc97-3677Eth0/0/717
192.168.17.1724cf5-dc97-3421Eth0/0/717
192.168.17.234cf5-dc97-3695Eth0/0/1417
192.168.17.55b42e-9979-de61Eth0/0/717
192.168.17.5400e0-4c52-032dEth0/0/717
192.168.18.180fb-06c9-6db9Vlanif18
192.168.19.180fb-06c9-6db9Vlanif19
192.168.20.180fb-06c9-6db9Vlanif20
192.168.20.24cf5-dc97-3471Eth0/0/920
192.168.20.34cf5-dc9a-c39eEth0/0/920
192.168.20.2000020-6ba3-4d7cEth0/0/920
192.168.20.188807c-62bb-4e1eEth0/0/920
192.168.20.642428-fdc1-76e4Eth0/0/920
192.168.20.85f46d-2fcf-c3edEth0/0/920
192.168.20.142309c-2365-209eEth0/0/920
192.168.20.6540b0-765f-6e47Eth0/0/920
192.168.20.74d45d-6439-a7a3Eth0/0/920
192.168.20.182408d-5c1d-9e3eEth0/0/920
192.168.20.134e86a-642e-0446Eth0/0/920
192.168.20.11600e0-4c57-9160Eth0/0/920
192.168.20.198309c-23b9-101aEth0/0/920
192.168.20.660c9d-920f-c668Eth0/0/920
192.168.20.131e0d5-5ef6-fdd6Eth0/0/920
192.168.20.101a85e-45a0-0aceEth0/0/920
192.168.20.1875404-a6a1-7fb1Eth0/0/920
192.168.21.180fb-06c9-6db9Vlanif21
192.168.22.180fb-06c9-6db9Vlanif22
192.168.24.180fb-06c9-6db9Vlanif24
192.168.24.10IncompleteEth0/0/224
192.168.25.180fb-06c9-6db9Vlanif25
192.168.6.180fb-06c9-6db9Vlanif26
192.168.6.592428-fdc1-7698Eth0/0/1626
192.168.6.52428-fddc-be9dEth0/0/1626
192.168.6.162428-fdc1-7333Eth0/0/1626
192.168.6.2165cde-3414-a887Eth0/0/1626
192.168.6.31012-fb7a-2656Eth0/0/1626
192.168.6.1304cbd-8fcc-90b6Eth0/0/1626
192.168.6.1244cbd-8fd5-da71Eth0/0/1626
192.168.6.2156461-4046-fc4dEth0/0/1626
192.168.6.2474cbd-8f90-6d54Eth0/0/1626
192.168.6.1680017-6112-27a1Eth0/0/1626
192.168.6.250807c-6202-b8a1Eth0/0/1626
192.168.6.192428-fdc1-76ccEth0/0/1626
192.168.6.182428-fdc1-76c7Eth0/0/1626
192.168.6.7894d9-b36c-2a90Eth0/0/1626
192.168.6.13f000-006c-6648Eth0/0/1626
192.168.6.7f000-003f-669dEth0/0/1626
192.168.6.4f000-003b-4931Eth0/0/1626
192.168.6.94cf5-dc97-343eEth0/0/1626
192.168.6.100accb-51de-42e4Eth0/0/1626
192.168.6.1642428-fdc1-7699Eth0/0/1626
192.168.6.24cf5-dc97-344eEth0/0/1626
192.168.6.114cf5-dc97-366eEth0/0/1626
192.168.6.198081f-7130-405cEth0/0/1626
192.168.6.14f000-006c-6811Eth0/0/1626
192.168.6.25408d-5ce7-408cEth0/0/1626
192.168.6.184b42e-99e6-3279Eth0/0/1626
192.168.6.31f4b5-203b-2404Eth0/0/1626
192.168.6.21b42e-9971-29cdEth0/0/1626
192.168.6.172f4b5-203b-1eecEth0/0/1626
192.168.6.171f4b5-2024-ef6bEth0/0/1626
192.168.6.102e0d5-5efc-0d5fEth0/0/1626
192.168.6.450c9d-92cc-8c94Eth0/0/1626
192.168.6.6000e0-4c3c-a0dbEth0/0/1626
192.168.6.128IncompleteEth0/0/226
192.168.28.180fb-06c9-6db9Vlanif28
192.168.34.180fb-06c9-6db9Vlanif34
192.168.34.174081f-7150-30deEth0/0/1134
192.168.34.109b42e-997a-2570Eth0/0/1134
192.168.34.44fcaa-1422-a331Eth0/0/1134
192.168.34.4b42e-99e6-329bEth0/0/1134
192.168.34.1667405-a563-fba3Eth0/0/1434
192.168.34.24324cf-24a4-2da8Eth0/0/1434
192.168.34.26b42e-99ea-043cEth0/0/1434
192.168.34.700e0-4f03-2e24Eth0/0/1434
192.168.34.78e0d5-5efc-0288Eth0/0/1434
192.168.34.2110017-6111-1ad0Eth0/0/1434
192.168.34.9000e0-7070-de71Eth0/0/1434
192.168.34.8b42e-9968-3f8cEth0/0/1434
192.168.34.2545475-959c-548bEth0/0/1434
192.168.34.642428-fdc1-76d0Eth0/0/1434
192.168.34.39c051-7ea4-099fEth0/0/1434
192.168.34.2020017-6112-ab50Eth0/0/1134
192.168.34.2030017-6112-a93bEth0/0/1134
192.168.34.1960840-f360-a0d8Eth0/0/1134
192.168.34.99e247-1f2c-0f6dEth0/0/1134
192.168.34.2050017-6112-279eEth0/0/1134
192.168.34.111f4b5-2024-f365Eth0/0/1134
192.168.34.15800e0-4f03-c582Eth0/0/1134
192.168.34.180f4b5-2024-f19bEth0/0/1134
192.168.34.227b42e-9944-2e6eEth0/0/1434
192.168.34.75f4b5-203b-1e44Eth0/0/1134
192.168.34.17600e0-4c85-826dEth0/0/1434
192.168.34.188b42e-997a-2550Eth0/0/1134
192.168.34.4770b5-e874-5844Eth0/0/1134
192.168.34.77309c-237d-6c73Eth0/0/1134
192.168.34.8400e0-4c37-ace4Eth0/0/1134
192.168.34.81f4b5-2024-ebafEth0/0/1134
192.168.34.147a85e-45a0-0b0eEth0/0/1434
192.168.34.155b42e-991d-4210Eth0/0/1134
192.168.34.19174d4-356d-891eEth0/0/1134
192.168.34.128b42e-9904-6ddaEth0/0/234
192.168.34.125e0d5-5e6d-bd23Eth0/0/234
192.168.34.244c06d-ed2c-d964Eth0/0/234
192.168.34.5600e0-4d95-1326Eth0/0/234
192.168.34.10700e0-4cff-2c14Eth0/0/1134
192.168.34.2127486-e218-1afeEth0/0/234
192.168.34.79f4b5-2024-f44cEth0/0/1134
192.168.34.468469-9386-4585Eth0/0/234
192.168.34.148a85e-45a0-0ab7Eth0/0/234
192.168.34.45e0d5-5ed5-47eeEth0/0/234
192.168.34.72e0d5-5e51-ea27Eth0/0/1134
192.168.34.1506045-cb7f-c902Eth0/0/1434
192.168.34.7000e0-4c75-1451Eth0/0/1134
192.168.34.74e0d5-5ec3-191dEth0/0/1134
192.168.34.1000d8-610c-3d58Eth0/0/1434
192.168.34.153f484-8df7-5db7Eth0/0/234
192.168.34.121408d-5cfd-e739Eth0/0/1434
192.168.87.180fb-06c9-6db9Vlanif87
192.168.87.97f000-003f-58bfEth0/0/1487
192.168.87.25f000-003f-669cEth0/0/1487
192.168.87.2508ce7-486e-bf80Eth0/0/1487
192.168.88.180fb-06c9-6db9Vlanif88
192.168.88.2534cbd-8f90-7198Eth0/0/1488
192.168.88.2504cbd-8f90-719cEth0/0/1188
192.168.88.2514cbd-8f90-71a7Eth0/0/1188
192.168.88.1312428-fdc1-76a4Eth0/0/1188
192.168.88.254686d-bcf6-0e91Eth0/0/1188
192.168.88.160IncompleteEth0/0/288
192.168.88.5IncompleteEth0/0/288
192.168.88.161IncompleteEth0/0/288
192.168.88.25IncompleteEth0/0/288
192.168.88.31IncompleteEth0/0/288
192.168.88.59IncompleteEth0/0/288
192.168.88.7IncompleteEth0/0/288
192.168.0.180fb-06c9-6db9Vlanif100
192.168.0.1072cea-7fed-051cEth0/0/18100
192.168.0.114f4b5-2018-50e7Eth0/0/21100
192.168.0.452cea-7feb-b118Eth0/0/20100
192.168.0.110017-6112-b286Eth0/0/22100
192.168.0.1898ca6-dfc4-490dEth0/0/24100
192.168.0.252f4ee-0823-956aEth0/0/24100
192.168.0.99e0d5-5efa-1b79Eth0/0/24100
192.168.0.12000e0-66ff-1b5fEth0/0/19100
10.0.0.280fb-06c9-6db9Vlanif200
192.168.201.180fb-06c9-6db9Vlanif201

无线

无线密码备注
wsf-loua12345678a覆盖范围:大厅,小会议,大办公室,行政办公室
left2loua12345678a覆盖范围:二楼会议室,设计办公室
sale-true63770535覆盖范围:二楼财务办公室,总经理办公室

漫游测试

安全防护

  • 纵向防护入口防火墙
  • 三层acl vlan互通控制
  • 服务器区 4层端口规则
  • 横向传播终端杀毒软件

无线网桥

Q20

建议使用openwrt-21.02 稳定成熟 boot刷使用FACTORY类型固件

immortalwrt性能略差一点

  • 解锁源系统(导入配/升级)
  • ssh刷入Bootloader( u-boot/breed/pd-boot)
  • 刷入固件(固件要支持对应系统)

刷入breed(建议:功能强大)

 mtd write /tmp/breed-mt7621-xiaomi-r3g.bin Bootloader

pb-boot (建议:最常用)

在系统下刷机最为安全

进入192.168.1.1

openwrt-21.02.7-ramips-mt7621-jcg_q20-squashfs-factory.bin

刷入u-boot (可以刷集客)

 mtd write /tmp/gpio18-u-boo1.bin Bootloader

boot分区

查看 cat /proc/mtd


Q20 AP

无线适配器 apcli0/wlan0  加入到网桥br-lan

网桥

无线ap透明组网

#--  network.@device[0].ports='lan1' 'lan2' 'wlan0'

uci add_list network.@device[0].ports='wlan0'
uci commit network
/etc/init.d/network restart
brctl show

iptable实现认证

Captive Portal

Portal认证bs结构 [nodogsplash,openNDS,coova,wifidog]

管理全部dns解析

iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.0.121:53

自定义

## 连接数

sysctl -w net.netfilter.nf_conntrack_buckets=262144
sysctl -w net.netfilter.nf_conntrack_max=262144
sysctl -w net.nf_conntrack_max=262144

sysctl -a|grep  'nf_conntrack'
## --自定规则
iptables -t nat -F  #不操作

iptables -t nat  -X localDef        #删除
iptables -t nat  -X localManage  #删除
iptables -t nat  -N localDef   #创建
iptables -t nat  -N localManage   #创建


iptables -t nat -I PREROUTING   -j localManage   #加入系统
iptables -t nat -A PREROUTING   -j localDef   #加入系统

## --默认规则链
## --劫持所有web访问
iptables -t nat -A localDef -p tcp  --dport 443 -j DNAT --to-destination  192.168.0.121:9090
iptables -t nat -A localDef -p tcp  --dport 80 -j DNAT --to-destination  192.168.20.199:2028
## --劫持dns
iptables -t nat -A localDef -p udp  --dport 53 -j DNAT --to-destination 192.168.11.122:53

##--局域网互通
iptables -t nat -I localDef  -s   192.168.0.0/24 -j ACCEPT
iptables -t nat -I localDef  -d   192.168.0.0/16 -j ACCEPT
iptables -t nat -I localDef  -d   10.0.0.0/8 -j ACCEPT


## -- 上网管理链

##  --放行规则
iptables -t nat -I localManage  -s 192.168.20.222  -j ACCEPT
iptables -t nat -D localManage  -s 192.168.20.222 -j ACCEPT



## 查看
iptables -t nat -L --line-numbers


radiusdesk服务

docker-compose.yml

version: "2"
services:
 radiusdesk:
  image/]: drummerroma/radiusdesk:latest
  depends_on:
  - mysql
  container_name: radiusdesk
  ports:
  - 8888:80
  volumes:
  - $PWD/dockerdata/www/:/var/www/
  links:
  - mysql

 mysql:
  image: drummerroma/mysqlradius
  container_name: mysql
  environment:
   MYSQL_ROOT_PASSWORD: root
   MYSQL_DATABASE: rd
   MYSQL_USER: rd
   MYSQL_PASSWORD: rd
  ports:
  - 3306:3306

openwrt 路由

openwrt root/admin

安装 nodogsplash 插件

nodogsplash 服务

本质是防火墙规则组合 配置文件

/etc/config/nodogsplash

可以使用eth1 ,缺了一个非本网段验证通过上网

option gatewayinterface 'br-lan'

list authenticated_users 'allow tcp port 22'
list authenticated_users 'allow tcp port 53'
list authenticated_users 'allow udp port 53'
list authenticated_users 'allow tcp port 80'
list authenticated_users 'allow tcp port 443'


list authenticated_users 'allow all'

修改html文件

/etc/nodogsplash/htdocs


ndsctl 管理工具命令

ndsctl status

openNDS服务

/etc/config/opennds

/etc/opennds/htdocs

option gatewayinterface 'eth1'

ndsctl 管理工具命令

ndsctl status

dns劫持

## --劫持dns
iptables -t nat -A PREROUTING -p udp  --dport 53 -j DNAT --to-destination 192.168.11.122:53

iptables -t nat -A PREROUTING -i ethX -p udp --dport 53 -j DNAT --to $(get lan_ipaddr)
iptables -t nat -A PREROUTING -i ethX -p tcp --dport 53 -j DNAT --to $(get lan_ipaddr)

??

iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53

共享文件

共享文件路径

创建快捷方式

包含隐私修改密码

用户名

演示 administrator 用户 ,根据实际请来

远程桌面

首先启动远程程序

登入远程

网络虚拟化

参考

桥接

通过桥接形成 简单虚拟交换机 (不可管理)

临时生效

brctl show
brctl addbr vmbr
brctl addif vmbr eth0

长久生效

vi /etc/netplan/01-network-manager-all.yaml

  enp3s0:
      dhcp4: false
      dhcp6: false
 bridges:
    vmbr:
      interfaces: [ enp3s0 ]
      mtu: 1500
      parameters:
        stp: true 

提供kvm使用

vi  /etc/libvirt/qemu/networks/host-bridge.xml
<network>
  <name>host-bridge</name>
  <forward mode="bridge"/>
  <bridge name="vmbr"/>
</network>

启用配置


virsh net-define host-bridge.xml
virsh net-start host-bridge
virsh net-autostart host-bridge

网桥成员

bridge name     bridge id               STP enabled     interfaces
vmbr            8000.a0369f08cac5       yes             enp2s0f0
                                                        vnet0

docker 服务 (AppArmor)

更多的微服务,代替vm主机。

管理工具

docker run -d   --name prtainer-doc   --restart=always  -p 9000:9000  -v /var/run/docker.sock:/var/run/docker.sock         docker.m.daocloud.io/portainer/portainer

网络相关

http代理

隐藏和伪装对外web服务 提高安全性

docker run -d --name proxym --restart=always --net=host -v /opt/proxym/data:/data -v /opt/proxym/encrypt:/etc/letsencrypt   chishin/nginx-proxy-manager-zh #jc21/nginx-proxy-manager

dns+dhcp

可是实现简单上网行为管理

docker run -d     --name adguardhome  --network host  --restart=always      -v /opt/adguardhome/work:/opt/adguardhome/work     -v /opt/adguardhome/conf:/opt/adguardhome/conf     adguard/adguardhome


测速

docker run -itd --name speedtest -p 1234:80 ilemonrain/html5-speedtest:alpine

vi /etc/docker/daemon.json

{
  "registry-mirrors": ["https://docker.m.daocloud.io",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
} 

运维相关

zabbix监控、 graylog 日志系统 Elasticsearch(知识检索) (文件搜索带web,anytxt)

启动文件 /opt/graylog/docker-compose.yml

version: '3'

services:
  mongo:
    image: mongo:3
    container_name: graylog_mongo
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
    networks:
      - graylog

  elasticsearch:
    image: elasticsearch
    container_name: graylog_elasticsearch
    restart: unless-stopped
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
    deploy:
      resources:
        limits:
          memory: 1g
    networks:
      - graylog

  graylog:
    image: graylog/graylog:3.3
    container_name: graylog
    restart: unless-stopped
    environment:

容器下载镜像

docker-pull -proxy socks5://192.168.20.199:1082  nginx



docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}:/work lianshufeng/docker-pull -proxy socks5://192.168.20.199:1082  dockurr/samba

共享相关

docker run -itd --name samba  --restart=always   --net=host \
-v /mnt/sdc1/backup:/mnt/sdc1/backup    \
 dperson/samba     \
-u "wsf;wsf" -s "共享; /mnt/sdc1/backup;yes;no;no;all;wsf"   \
-w "WORKGROUP"    

docker-ce

安装社区版本

 apt  -y install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] http://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable"

apt  install docker-ce  docker-compose

podman

依赖 cgroup

ls /sys/fs/cgroup/pids
apt install crun podman -y

nano /etc/containers/registries.conf

unqualified-search-registries = ["docker.io"]

[[registry]]
prefix = "docker.io"
insecure = false
blocked = false
location = "docker.io"
[[registry.mirror]]
location = "mirror.iscas.ac.cn"
[[registry.mirror]]
location = "docker.rainbond.cc"


podman run hello-world

containerd

ctr images pull docker.m.daocloud.io/library/nginx:latest
ctr images list

镜像代理


docker pull  docker.chatsbot.org/library/hello-world 
docker pull  docker.chatsbot.org/lianshufeng/docker-pull
ctr images pull  docker.rainbond.cc/library/some-openmediavault-image

导出导入

 ctr images export nginx-latest.tar docker.m.daocloud.io/library/nginx:latest
 docker load -i nginx-latest.tar

导入导出

导出镜像:

docker save lianshufeng/docker-pull  | gzip > docker-pull.tar.gz

还原镜像:

gunzip -c docker-pull.tar.gz | docker load

协同办公

系统wrt基于docker compose

nextcloud v25+onlyoffice 8.2

快速搭建

mkdir /opt/netoffice/
vi /opt/netoffice/docker-compose.yaml

docker compose  -f /opt/netoffice/docker-compose.yaml  up -d


调试


curl http://172.18.0.4
curl http://127.0.0.1:8080
curl http://192.168.14.220:8080

tcpdump -i eth0 port 8080
 

进终端

docker exec -it  nextcloud /bin/bash
curl -o  /etc/apt/sources.list.d/debian.sources   http://192.168.0.121/sources.list
apt install fping	bind9-dnsutils iproute2  nano

文件存放

/var/www/html/data/<用户名>/files/   #但是都属于 www-data

终端正确显示中文

locale -a
apt install locales -y
dpkg-reconfigure locales  #选 314. zh_CN.UTF-8 UTF-8

域名代理


nano /var/www/html/config/config.php

 'trusted_domains' => 
  array (
    0 => '192.168.14.220:8080',
    1 => 'oqnetdoc.17121.top',
  ),
  
  
  

域名调用

修改 /etc/hosts onlyoffice定向返回数据。

192.168.0.121  oqncloud.17121.top
192.168.0.121  oqnetdoc.17121.top

软件源

cat /etc/apt/sources.list

curl -o /etc/apt/sources.list http://192.168.0.121/sources.list

使用配置

默认语言

nano /var/www/html/config/config.php  #添加

  'default_language' => 'zh_CN',
  'default_locale' => 'zh',
  
  重启服务

安装配置

version: '3'
services:
  app:
    container_name: app-server
    image: nextcloud:fpm
    stdin_open: true
    tty: true
    restart: always
    expose:
      - '80'
      - '9000'
    networks:
      - onlyoffice
    volumes:
      - app_data:/var/www/html
  onlyoffice-document-server:
    container_name: onlyoffice-document-server
    image: onlyoffice/documentserver:latest
    stdin_open: true
    tty: true
    restart: always
    networks:
      - onlyoffice
    expose:
      - '80'
      - '443'
    volumes:
      - document_data:/var/www/onlyoffice/Data
      - document_log:/var/log/onlyoffice
    ports:
      - 2280:80     #此处是onlyoffice的端口:左侧的端口可以自定义
      - 4423:443
    environment:
      - JWT_ENABLED=true          #此处:是否打开秘钥认证
      - JWT_SECRET=root123456     #此处:是onlyoffice的秘钥
  nginx:
    container_name: nginx-server
    image: nginx
    stdin_open: true
    tty: true
    restart: always
    ports:
      - 2380:80          #此处:nextcloud的端口 左侧的端口可以自定义
      - 4433:443
    networks:
      - onlyoffice
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - app_data:/var/www/html
  db:
    container_name: mariadb
    image: mariadb
    restart: always
    volumes:
      - mysql_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Mysql123    #此处:初始化数据库信息
      - MYSQL_PASSWORD=Msql123          #此处:初始化数据库信息
      - MYSQL_DATABASE=nextcloud         #此处:初始化数据库信息
      - MYSQL_USER=nextcloud             #此处:初始化数据库信息
    networks:
      - onlyoffice
networks:
  onlyoffice:
    driver: 'bridge'
volumes:
  document_data:
  document_log:
  app_data:
  mysql_data:

version: '3'
services:
  mysql-db:
    container_name: fno_mysql
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - /usr/local/mysql/conf:/etc/mysql/conf.d
      - /usr/local/mysql/logs:/logs
      - /usr/local/mysql/data:/var/lib/mysql

  app:
    container_name: nextcloud
    image: nextcloud
    restart: always
    ports:
      - "8080:80"
    volumes:
      - /root/nextcloud/html:/var/www/html
      - /root/nextcloud/apps:/var/www/html/custom_apps
      - /root/nextcloud/config:/var/www/html/config
      - /root/nextcloud/nextcloud/data:/var/www/html/data
      - /root/nextcloud/themes:/var/www/html/themes

  app22:
    container_name: onlyoffice
    image: onlyoffice/documentserver
    restart: always
    ports:
     - "6060:80"
    volumes:
     - /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice
     - /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data
     - /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice
     - /app/onlyoffice/DocumentServer/db:/var/lib/postgresql


自定义指定版本

version: '3.7'
 

services:
  nextcloud:
    
    #image: library/nextcloud:25
    image: nextcloud:25
    container_name: nextcloud
    restart: always
    ports:
      - "8080:80"
    volumes:
      - nextcloud_data:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=yourpassword
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=adminpassword
    depends_on:
      - db
 
      
  db:
    #image: library/mariadb:10.10
    image: library/mariadb:10.10
    container_name: mariadb
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=yourpassword
    volumes:
      - db_data:/var/lib/mysql
 
      
  onlyoffice:
    #image: onlyoffice/documentserver:8.2.0
    image: onlyoffice/documentserver:8.2.0
    container_name: onlyoffice
    restart: always
    ports:
      - "8081:80"
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=yourjwtsecret
    volumes:
      - onlyoffice_data:/var/www/onlyoffice/Data
 
volumes:
  db_data:
  nextcloud_data:
  onlyoffice_data:

docker volume ls
docker volume inspect  netoffice_db_data

插件

Mind Map + draw.io + Deck + calendar

思维导图和流程图 “draw.io”和“mind map”两个应用

白板插件 Whiteboard(官方)

手动安装插件 存放路径 Collabora 对比 netoffice

/var/www/html/custom_apps/  


基础系统

为了干净的系统嵌套系统

挂载数据盘

pct set 102 -mp2 /dev/sdb1,mp=/var/www

debian12

debian12 + docker

加入docker功能

lxc.apparmor.profile: unconfined
lxc.cap.drop:

下载镜像

docker pull  lianshufeng/docker-pull
docker pull  library/nextcloud:29
docker pull  onlyoffice/documentserver:8.2.0
docker pull  library/mariadb:10.10

docker run --restart=always -d -p 12345:80 adolfintel/speedtest


docker run --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest


debian12

开启防火墙端口


iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j ACCEPT


apt install iptables-persistent
cat /etc/iptables/rules.v4
systemctl enable netfilter-persistent
   

防火墙管理套件

sudo apt install firewalld cockpit  #功能单一只有端口开放与否
systemctl start firewalld        #与iptable 规则不兼容   
sudo systemctl enable firewalld
sudo systemctl start cockpit
sudo systemctl enable cockpit

systemctl disable systemd-networkd-wait-online.service 
systemctl disable netfilter-persistent
systemctl disable iptables

firewall-cmd --state
firewall-cmd --get-active-zones
	firewall-cmd --list-services
	firewall-cmd --list-ports
firewall-cmd --list-all
firewall-cmd --zone=public --change-interface=vmbr0
firewall-cmd  --add-port=8080/tcp --permanent   
firewall-cmd  --add-port=8081/tcp --permanent   

firewall-cmd --add-service=cockpit --permanent  
firewall-cmd --reload  #命令生效配置

 

wrt

wrt不支持 compose 除非关闭防火墙

把接口docker的防火墙区域设置为lan

docker run -itd --name speedtest -p 1234:80  ilemonrain/html5-speedtest:alpine

Proxmox 虚拟化

debian12 + nas + pve 高度集成使用方便

关键设备要专用,应用设备要通用

参考

https://192.168.22.25:8006/

 cat /etc/os-release
 systemctl disable systemd-networkd-wait-online.service     ##不等待其他服务

彩色终端

vi  ~/.bashrc

PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\[\e[33;40m\]\h \[\e[35;40m\]\[\e[37;40m\]\t \[\e[36;40m\]\w]\[\e[0m\]\\$ "

启动显示进度

nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="splash verbose"
update-grub

echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

记得设置 关机超时时间。以免失控
系统级应用kvm
内核级用lxc

lxc管理(pct)

配置文件

cd /etc/pve/lxc/
ls -l

lxc命令创建

pvx下 openwrt 只能用 命令创建

解锁容器

pct list
pct unlock  123
pct create 2000 /var/lib/vz/template/cache/openwrt-23.05.1-x86-64-rootfs.tar.gz \
--arch amd64 --hostname lxc-OpenWrt   --rootfs local-lvm:8 --memory 1024 -swap 0 --cores 4 \
--ostype unmanaged --unprivileged 0 -net0 bridge=vmbr1024,name=eth0

磁盘0.5GB 内存500MB

进入终端

pct start 2000  
pct  enter 2000  #进入终端
 
lxc-attach 2000 #进入终端

下载ct模板

tar.zst模板

web界面可直接下载

pveam list local 

wrt模板

https://downloads.immortalwrt.org/releases/23.05.1/targets/x86/64/immortalwrt-23.05.1-x86-64-rootfs.tar.gz
http://downloads.openwrt.org/releases/23.05.1/targets/x86/64/openwrt-23.05.1-x86-64-rootfs.tar.gz
http://downloads.openwrt.org/releases/21.02.7/targets/x86/64/openwrt-21.02.7-x86-64-rootfs.tar.gz

CT模板

 
wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/bookworm/amd64/default/20241112_05%3A24/rootfs.tar.xz -O /var/lib/vz/template/cache/debian12-standard-amd64.tar.xz

 
wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/jammy/amd64/default/20241008_07%3A42/rootfs.tar.xz -O /var/lib/vz/template/cache/ubuntu22.04-standard-amd64.tar.xz

sudo 普通用户

vi /etc/sudoers


jack ALL=(ALL:ALL) ALL

lxc创建docker

模式

  • 轻应用非特权模式

  • 重应用特权模式 (不能轻易切换)

lxc无特权模式

勾上无特权模式

直接装docker即可

lxc特权模式

特权模式

  • 需要在功能中全部勾选

  • 配置中加入支持docker

lxc.apparmor.profile: unconfined
lxc.cap.drop:

qm管理(kvm)

强制关机

qm stop 102

查看配置

qm config 102

添加spice显示协议

 
qm set 102 --vga qxl --tablet yes

配置文件加入

tablet: yes

直通设置

硬件是否支持虚拟化

egrep --color 'vmx|svm' /proc/cpuinfo
lsmod |grep vm

硬件PCI设备直通

查看是否支持直通设备组

lsmod | grep vfio

映射直通

查看硬盘


ls -lh /dev/disk/by-id

适用于kvm

映射硬盘到kvm

qm set 101 -sata1 /dev/disk/by-id/ata-WDC_WD5000AAKX-001CA0_WD-WCAYUF892278
qm set 101 -sata2 /dev/disk/by-id/ata-WDC_WD5000AAKX-22ERMA0_WD-WCC2EYP45614 

vi /etc/pve/qemu-server/100.conf

scsi2: /dev/sdb,iothread=1

适用于lxc

ls -al /dev/sd* 

得到磁盘裸id,修改 /etc/pve/lxc/虚拟机ID.conf


lxc.cgroup2.devices.allow = b 8:* rwm
lxc.mount.entry = /dev/sda dev/sda none bind,optional,create=file

lxc.cgroup.devices.allow:直接访问设备 ,pve7.0后cgroup无效 用cgroup2

lxc.mount.entry:设备映射

pve8使用映射

(无特权模式 )挂载变只读就是mount

特权模式后不能更改:更改后后面的文件权限回不去


pct set 102 -mp1 /dev/sda1,mp=/mnt/sda1
pct set 102 -mp2 /dev/sdb1,mp=/mnt/sdb1 


pct set 102 -privileged 1     
pct set 102 -features fuse=1,mount=nfs;cifs,nesting=1


支持网络虚拟网卡


lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
lxc.cgroup2.devices.allow: c 10:200 rwm

kvm虚拟化

命令创建kvm主机

qm create 114 \
--agent 1 \
--machine q35 \
--ostype l26 \
--scsihw virtio-scsi-pci \
--serial0 socket \
--cores 2 --sockets 1 --cpu host \
--bios seabios  --boot cdn \
--net0 virtio,bridge=vmbr0

导入kvm虚拟机

qm importdisk <vmid> <source> <storage>


qm importdisk 102 ubuntu-18.04.vmdk  local-lvm --format=qcow2

系统管理

调整分区

parted
print
resizepart 2 12GB

启动后查看服务

systemctl list-units --type=service

设置ip和dns

ip addr add 192.168.22.35/24 dev eth0
ip route add  0.0.0.0/0  via 192.168.22.5  dev eth0

替换源

换源

cp  /etc/apt/sources.list  /etc/apt/sources.list~

sed -i 's|archive.ubuntu.com/ubuntu|mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list

sed -i 's|security.ubuntu.com/ubuntu|mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list
 

替换下载源

cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back

sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm  

systemctl restart pvedaemon.service

安装更新工具

 apt install apt-transport-https ca-certificates gpg  software-properties-common lsb-release wget curl
 
 apt install debian-keyring debian-archive-keyring
 

添加存储

smb添加

数据中心-》存储-》添加-》smb/cifs

云主机运维

常用工具

  • pvesh 命令行api客户端
  • proxmoxer 程序模块

api访问

pve-doc参考文档

申请token

数据中心-》权限-》api令牌

token模式

需要后台创建 apitoken (不要勾选特权分离)

 curl -k -H 'Authorization: PVEAPIToken=root@pam!test=0f7a2e62-...-....-....-b319c6541507'  https://192.168.0.124:8006/api2/json/cluster/resources

远程地址

spice地址获取

path = '/api2/json/nodes/{node}/qemu/{vmid}/spiceproxy'.format(node="pve",vmid=102)
url = 'https://' + ip + ':' + port + path
headers = {'Authorization': 'PVEAPIToken=' + token} 
r = requests.post(url=url, headers=headers, verify=False)
r.text
r.json()

集群

改名

hostnamectl set-hostname pve14

更新host

数据中心.节点.系统.主机

查看节点

ls -lh /etc/pve/nodes/*
mv /etc/pve/nodes/old /etc/pve/nodes/new

创建集群

数据中心.集群.创建集群
pvecm create pvecluster
pvecm status

加入集群

空节点才能加入集群

pvecm add 192.168.0.124

删除集群

网络集群非常危险,特别是发生脑裂时

pvecm delnode <NodeName>
rm -rf /etc/pve/corosync.conf
rm -rf /etc/corosync/*
systemctl restart pve-cluster
systemctl restart corosync

强制删除

systemctl stop pve-cluster
systemctl stop corosync
rm -rf /etc/corosync/*
rm -rf /var/lib/pve-cluster/*
rm -rf /etc/pve/.members

重启脱离集群

连接节点

校准时间ntp

ntpdate pool.ntp.org  

迁移lxc

迁移快照 有风险,建议用备份和恢复

备份

多用备份,少用克隆和模板,lxc 用挂起备份 快照涉及到lvm 。可以在硬盘高级选型中跳过某盘备份

数据中心.节点.虚拟机.备份.立即备份

异地还原用

scp /var/lib/vz/dump/vzdump-lxc-103-2024_11_08-08_31_00.tar.gz     root@192.168.14.126:/var/lib/vz/dump/vzdump-lxc-103-2024_11_08-08_31_00.tar.gz  


还原

节点.local.备份.还原

无法关机

使用批量关机或设置关机超时时间

cd /var/lock/qemu-server
rm lock-106.conf
qm stop 106 

从12安装pve

多系统二合一

lscpu | grep Virtualization

usermod -a -G _ssh  jack 
hostname --ip-address
echo "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-enterprise.list
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

wget https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg 

apt update
apt full-upgrade

删除默认内核使用pve内核

apt install proxmox-default-kernel
update-grub


systemctl reboot  #重启后使用pve内核
apt remove linux-image-amd64 'linux-image-6.1*'   

apt install proxmox-ve  open-iscsi chrony  openssl  postfix

apt --no-install-recommends --no-install-suggests install proxmox-ve openssl  postfix

网卡配置
ifupdown2 /etc/network/interfaces

auto lo
iface lo inet loopback

iface enp3s0 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.11.109/24
        gateway 192.168.11.1
        bridge-ports enp3s0
        bridge-stp off
        bridge-fd 0

生效

ifquery --check -a

systemctl restart networking.service

systemctl enable networking.service

微客文档

api文档

磁盘管理

启动菜单

configfile (hd0,gpt2)/boot/grub/grub.cfg
 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=boot

磁盘调整

lvextend -L +1G /dev/vg0/lv1  #扩大分区

qemu-img resize /var/lib/vz/images/201/vm-201-disk-0.qcow2 +10G #web界面可操作

Rescuezilla+GParted

虚拟化

开源软件在企业中应用 open vswitch(二层)+ ospf(三层) + firewall-cmd(四层)+ kvm (5-7层) + cockpit/novnc(管理)

kvm虚拟机

虚拟物理机ip用途
Edge-R440192.168.0.123OA系统
Edge-R740xd192.168.0.48金蝶云
Edge-R740192.168.0.45k3

虚拟化服务器管理

虚拟化 管理入口 https://192.168.0.123:9090/

可以通过web界面查看虚拟化运行状态

创建虚拟机uefi

virt-install --name uefi --cpu host --machine q35 --ram 1024 --boot loader=/usr/share/ovmf/OVMF.fd --disk none --graphics none --network none  --noautoconsole 


创建BIOS

virt-install --name basevm --cpu host --machine q35 --ram 1024 --disk none --graphics none --network none --pxe --noautoconsole 

创建磁盘

qemu-img create -f qcow2  /mnt/kvm2/disk-win7-image.qcow2   64G 

支持的架构

qemu-system-x86_64 -machine help

桌面入口

remote-viewer spice://192.168.0.123:5902

物理服务器管理

通过web管理物理服务器资源使用情况

虚拟化迁移(P2V)

热迁移

热迁移需要系统vss磁盘快照

通过DISKGENIUS v5.4.6 x64 工具迁移到虚拟机

磁盘迁移

DISKGENIUS挂载vmdk文件 ,通过克隆分区来做镜像

  • 菜单-磁盘-新建虚拟机磁盘
  • 菜单-磁盘-打开虚拟机磁盘
  • 磁盘-备份分区表
  • 磁盘-恢复分区表
  • 菜单-克隆分区

磁盘转换

直接对IMG进行扩容 然后转换

qemu-img resize rootfs.img +4G #调整大小

e2fsck -f rootfs.img #检查文件系统
resize2fs rootfs.img #增大未加载的文件系统大小
qemu-img convert   -O qcow2 -p  /mnt/vm252.vmdk /opt/kvm252-c.qcow2

备份迁移

命令 clonezilla

v2p迁移

DISKGENIUS挂在VMDK文件来 克隆分区

磁盘分布式

CephFS 3节点 支持(os mount ,app object , io block)

ceph -s

1.配置

以win10电脑为例

vpn1

新建连接

vpn1

2.连接

vpn1

3.测试

打开一下地址测试

http://192.168.0.48/k3Cloud

vpn1

http://192.168.11.111/cgi-bin/luci/

http://192.168.0.121:9090/

临时账号

用户名密码备注
oq-nb*宁波外贸使用
wsf*****临时使用

设置金蝶客户端

vpn1

路由互通

1.网络---接口---点击添加,名称为了方便取名zerotier

2.网络---防火墙---添加区域zt

运行监控

访问地址 http://192.168.0.123:84/

默认账号:Admin 默认密码为:zabbix

修改语言

用户设置--配置--用户--语言

添加顺序

配置.主机组 -》配置.主机-》主机.监控项-》监测.最新数据

snmp测试

snmpwalk -c public -v 2c   localhost  sysDescr     
snmpwalk -c public -v 2c   localhost  1.3.6.1.2.1.1.1
snmpwalk -c public -v 2c   localhost    sysName.0
snmpwalk -c public -v 2c  localhost system

agent测试


zabbix_get -s 192.168.11.189 -p 10050 -k "system.hostname"
zabbix_get -s 192.168.11.189 -p 10050 -k "system.cpu.load"


如果没有此命令就需要手动安装

客户端无法连接 Check access restrictions in Zabbix agent configuration,

原因客户端配置文件/etc/zabbix/zabbix_agentd.conf中允许访问的列表不包含执行命令的服务器

Server=0.0.0.0/0

扩展zabbiz的安装源

  1. 定制下载建议

https://www.zabbix.com/download?zabbix=6.0&os_distribution=ubuntu&os_versi

snmp收集数据

华为snmp oid数据

arp表oid (但是端口不准) 真实端口要从Oid: 1.3.6.1.2.1.2.2.1.2 获取

1.3.6.1.2.1.4.22.1

锐捷snmp oid数据

更新不及时 ????

mac表oid (但是端口不准)

1.3.6.1.2.1.17.4.3.1.1

容器部署zabbix

 vi docker-compose.yml 

最新版6.4

version: '3'
services:
  zabbix-server:
    image: zabbix/zabbix-server-mysql:alpine-6.4-latest
    ports:
      - 10051:10051
    environment:
      - DB_SERVER_HOST=mysql-server
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_DATABASE=zabbix
    depends_on:
      - mysql-server
    networks:
      - zabbix-network

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
    ports:
      - 84:8080 
    environment:
      - DB_SERVER_HOST=mysql-server
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
      - MYSQL_DATABASE=zabbix
      - ZBX_SERVER_HOST=zabbix-server
    depends_on:
      - zabbix-server
    networks:
      - zabbix-network

  mysql-server:
    image: mysql:latest
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=zabbix
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - zabbix-network

networks:
  zabbix-network:

volumes:
  mysql-data:

稳定版

version: '3'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: always
    privileged: true
    environment:
      - MYSQL_ROOT_PASSWORD=myrootpass
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=mypass
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
    expose:
      - "3306"
    networks:
      zabbix-net:
    command: --character-set-server=utf8 --collation-server=utf8_bin
  zabbix-gateway:
    image: zabbix/zabbix-java-gateway:6.0-centos-latest
    container_name: zabbix-gateway
    volumes:
      - /etc/localtime:/etc/localtime
    restart: always
    privileged: true
    ports:
      - "10052:10052"
    networks:
      zabbix-net:
  zabbix-snmptraps:
    image: zabbix/zabbix-snmptraps:6.0-centos-latest
    container_name: zabbix-snmptraps
    restart: always
    privileged: true
    ports:
      - "1162:1162/udp"
    networks:
      zabbix-net:
  zabbix-server:
    image: zabbix/zabbix-server-mysql:6.0-centos-latest
    container_name: zabbix-server
    restart: always
    privileged: true
    environment:
      - ZBX_LISTENPORT=10051
      - DB_SERVER_HOST=mysql
      - DB_SERVER_PORT=3306
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=mypass
      - MYSQL_ROOT_PASSWORD=myrootpass
      - ZBX_CACHESIZE=1G
      - ZBX_HISTORYCACHESIZE=512M
      - ZBX_HISTORYINDEXCACHESIZE=16M
      - ZBX_TRENDCACHESIZE=256M
      - ZBX_VALUECACHESIZE=256M
      - ZBX_STARTPINGERS=64
      - ZBX_IPMIPOLLERS=1
      - ZBX_ENABLE_SNMP_TRAPS=true
      - ZBX_STARTTRAPPERS=1
      - ZBX_JAVAGATEWAY_ENABLE=true
      - ZBX_JAVAGATEWAY=zabbix-gateway
      - ZBX_STARTJAVAPOLLERS=1
    ports:
      - "10051:10051"
    networks:
      zabbix-net:
    links:
      - mysql
      - zabbix-gateway
  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:6.0-centos-latest
    container_name: zabbix-web
    volumes:
      - /usr/share/fonts/truetype/simfang.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
      - /etc/localtime:/etc/localtime
    restart: always
    privileged: true
    environment:
      - ZBX_SERVER_NAME=Zabbix 6.0
      - ZBX_SERVER_HOST=zabbix-server
      - ZBX_SERVER_PORT=10051
      - DB_SERVER_HOST=mysql
      - DB_SERVER_PORT=3306
      - MYSQL_DATABASE=zabbix
      - MYSQL_USER=zabbix
      - MYSQL_PASSWORD=mypass
      - MYSQL_ROOT_PASSWORD=myrootpass
      - PHP_TZ=Asia/Shanghai
    ports:
      - "84:8080"
    networks:
      zabbix-net:
    links:
      - mysql
      - zabbix-server
networks:
  zabbix-net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.10.10.0/24
          gateway: 10.10.10.1


docker-compose -d up
docker compose  -f ./docker-compose6.0.yml  up -d

远程下载

docker pull  zabbix/zabbix-server-mysql:6.0-centos-latest
docker pull  zabbix/zabbix-web-nginx-mysql:6.0-centos-latest
docker pull zabbix/zabbix-snmptraps:6.0-centos-latest
docker pull zabbix/zabbix-java-gateway:6.0-centos-latest

docker save -o ~/zabbix-java-gateway.tar zabbix/zabbix-java-gateway:6.0-centos-latest
docker save -o ~/zabbix-snmptraps.tar  zabbix/zabbix-snmptraps:6.0-centos-latest
docker save -o ~/zabbix-web-nginx-mysql.tar  zabbix/zabbix-web-nginx-mysql
docker save -o ~/zabbix-server-mysql.tar zabbix/zabbix-server-mysql:6.0-centos-latest


客户开启snmp

linux 开启

配置文件

 vi /etc/snmp/snmpd.conf        

内容

view   systemonly  included  .1.3.6.1.2.1 
view   systemonly  included  .1.3.6.1.4.1

win10开启

管理员打开 PowerShell 

Get-WindowsCapability -Online -Name "SNMP*"    

Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"

Add-WindowsCapability -Online -Name "WMI-SNMP-Provider.Client~~~~0.0.1.0"


win7 开启

dism /online /enable-feature /featurename:SNMP   #//安装snmp

读取信息

windows


snmpwalk -c ruser -v 2c   192.168.11.136 1.3.6.1.2.1.2.2.1.6  

pc台账自动程序

  • 变成系统服务
  • 读取配置文件
  • 下载和执行文件

map 记录数据 (定义json结构)
读取json文件 
port 提交数据
线程调用


日志监控ELK Stack

http://192.168.0.123:5601/

  • 按类型入库可搜索 [program] == 'xxxxxxx'

  • logstash 使用的默认514端口收集日志

 vi docker-compose-elk.yml 
# elasticsearch数据存储  kibana数据可视化  logstash数据收集
version: '3'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
    ports:
      - "9200:9200"
    environment:
      - discovery.type=single-node

  logstash:
    image: docker.elastic.co/logstash/logstash:7.10.0
    ports:
      - "9601:9601"
      - "5044:5044"
      - "514:514/udp"
      - "9999:9999/udp"
      - "9991:9991/udp"
      - "9996:9996/udp"
      - "6343:6343/udp"
      - "2055:2055/udp"
      

  kibana:
    image: docker.elastic.co/kibana/kibana:7.10.0
    ports:
      - "5601:5601"
docker compose  -f ./docker-compose-elk.yml   up -d

改时区(发送端)

rm -f /etc/localtime 
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date -R
vi /usr/share/elasticsearch/config/elasticsearch.yml  #elasticsearch配置文件
vi /usr/share/kibana/config/kibana.yml  #kibana配置文件  #i18n.locale: "zh-CN"

在接受日志配置

vi /usr/share/logstash/pipeline/logstash.conf  # logstash配置文件

默认配置

input {
    beats {
    port => 5044
  }
}
output {
    stdout { codec => rubydebug}
}

测试配置

vi  /tmp/test-pipeline.conf 
input {
    syslog{
        tags => "test"
        port => 514
    }
}
output {
    stdout { codec => rubydebug}
}
logstash -f /tmp/syslog-pipeline.conf  --path.data=/tmp/logstash

简易配置

input {
    syslog{
        port => 514
    }
}
output {
    elasticsearch {
        hosts => ["elasticsearch:9200"]
        index => "system-syslog-%{+YYYY-MM-dd}"
    }
}

在elasticsearch的管理->索引管理就会收到来之logstash日志

基于判断配置

output {
    if [host] == "192.168.0.2"{
        elasticsearch {
            hosts => ["elasticsearch:9200"]
            index => "huawei_tplv3_%{+YYYY_MM_dd}"
        }
    }
    if [host] == "192.168.0.121" and [logsource] == "vm" {
        elasticsearch {
            hosts => ["elasticsearch:9200"]
            index => "linux_tplv3_%{+YYYY_MM_dd}"
        }
    }
    if [host] == "192.168.0.121" and [program] in ["web_access_log","web_error_log"] {
        elasticsearch {
            hosts => ["elasticsearch:9200"]
            index => "web_tplv3_%{+YYYY_MM_dd}"
        }
    }
}
 

过滤转换

(可在kibana开发工具中调试转换规则)

nginx 过滤规则

filter {
  if [host] == "192.168.0.121" and [program] in ["web_access_log","web_error_log"]   {
      grok{
          match => {"message" => "%{IPV4:remote_addr} - (%{USERNAME:user}|-) \[%{HTTPDATE:log_timestamp}\] \"(%{WORD:request_method}|-) (%{URIPATH:uri}|-) HTTP/%{NUMBER:httpversion}\" %{NUMBER:http_status} (?:%{BASE10NUM:body_bytes_sent}|-) \"(?:%{GREEDYDATA:http_referrer}|-)\" \"(%{GREEDYDATA:user_agent}|-)\""}
      }
      geoip {
          source => "remote_addr"
          target => "geoip"
          add_field => [ "country_name", "%{[geoip][country_name]}" ]
          add_field => [ "city_name", "%{[geoip][city_name]}" ]
          add_field => [ "country_name", "%{[geoip][country_code3][0]}" ]
	    database => "/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-6.0.3-java/vendor/GeoLite2-City.mmdb"
      }
    date {
      match => ["log_timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]  
      target => "@timestamp"   
    }
    useragent {
         target => "agent"    
         source => "user_agent"    
    }
      
      mutate{
        remove_field => ["logsource"]
        remove_field => ["tags"]
        remove_field => ["severity"]
        remove_field => ["facility_label"]
        remove_field => ["facility"]
        remove_field => ["@version"]
        remove_field => ["timestamp"]
        convert => ["[geoip][city_name]", "string"]
        convert => ["[geoip][country_name]", "string"]
      }
  }
}
    date {
         match => [ "timestamp", "MMM d HH:mm", "MMM DD HH:mm", "ISO8601"]
         target => "timestamp" 
    }

ip解析库

/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-6.0.3-java/vendor/GeoLite2-City.mmdb
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-6.0.3-java/vendor/GeoLite2-ASN.mmdb

抓包验证数据

监听查看
sudo netstat -anlup|grep 514
发送日志
logger -n  192.168.0.123 asdfasdasfasdfsad
抓包验证
tcpdump -v -nn -i enp1s0   port 514 and udp
Jan 23 2008 13:27:53 3700 %%01SHELL/6/DISPLAY_CMDRECORD(l)[21]:Record command information. (Task=VT0 , Ip=192.168.20.199, User=admin, Command="d| include info-center")

解析后的数据

1 2024-03-27T08:09:42.417757+08:00 vm jack - - [timeQuality tzKnown="1" isSynced="1" syncAccuracy="223000"] asdfasdasfasdfsad
{
          "priority" => 0,
          "@version" => "1",
              "host" => "192.168.0.121",
              "tags" => [
        [0] "123",
        [1] "_grokparsefailure_sysloginput"
    ],
    "facility_label" => "kernel",
          "facility" => 0,
    "severity_label" => "Emergency",
        "@timestamp" => 2024-03-27T02:05:50.078Z,
          "severity" => 0,
           "message" => "<13>1 2024-03-27T10:05:50.040097+08:00 vm jack - - [timeQuality tzKnown=\"1\" isSynced=\"1\" syncAccuracy=\"634500\"] asdfasdasfasdfsad"
}

日志外发

Nginx日志接入


log_format combined '$remote_addr - $remote_user [$time_local] $http_host $request_method "$uri" "$query_string" '
                  '$status $body_bytes_sent "$http_referer" $upstream_status $upstream_addr $request_time $upstream_response_time '
                  '"$http_user_agent" "$http_x_forwarded_for"' ;
access_log syslog:server=192.168.0.123:514,facility=local7,tag=web_access_log,severity=info;

error_log syslog:server=192.168.0.123:514,facility=local7,tag=web_error_log,severity=info;

识别设备标签 facility_label 通过这个判断 或 识别标签program

{
        "@timestamp" => 2024-03-27T03:12:58.000Z,
         "timestamp" => "Mar 27 03:12:58",
              "type" => "system-syslog",
          "priority" => 190,
    "facility_label" => "local7",
         "logsource" => "c33462a7dc5e",
              "host" => "192.168.0.121",
          "@version" => "1",
           "program" => "nginx_access_log",
    "severity_label" => "Informational",
          "facility" => 23,
           "message" => "123.6.49.18 - - [27/Mar/2024:03:12:58 +0000] \"GET /K3Cloud/html5/script/thirdpart/kendo/messages/kendo.messages.zh-CN.min.js?ver=8.1.410.13 HTTP/1.1\" 200 14710 \"http://oa.ouqiyj.com:8099/K3Cloud\" \"Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36\"",
          "severity" => 6
}

linux日志外发

vi /etc/rsyslog.conf
 *.notice @192.168.0.123:514
sudo systemctl  restart rsyslog
{
    "facility" => 3,
    "facility_label" => "system",
               "pid" => "973401",
         "timestamp" => "Mar 27 15:02:31",
           "program" => "snmpd",
        "@timestamp" => 2024-03-27T15:02:31.000Z,
          "priority" => 30,
          "@version" => "1",
              "type" => "system-syslogaaa",
          "severity" => 6,
    "severity_label" => "Informational",
           "message" => "Cannot statfs /run/user/129/gvfs: Permission denied",
              "host" => "192.168.0.121",
         "logsource" => "vm"
}

docker 日志外发

 --log-driver syslog --log-opt syslog-address=udp://127.0.0.1:514 
docker run -itd  -p 80:80  --name nginx   --log-driver syslog --log-opt syslog-address=udp://127.0.0.1:514  nginx

开发工具

KQL 特有的elasticsearch查询语法

标准查询

GET /linux_syslog_2024_03_29/_search
{
  "query": {
    "match_all": {}
  },
  "size":  2
}

条件查询

GET /linux_syslog_2024*/_search
{
  "query": {
    "term" : {
      "facility_label.keyword" : {"value" : "user-level"}
    }
  },
  "size":2
}

sql查询

POST /_sql/translate
{
    "query": " SELECT * FROM linux_syslog_2024_03_29 where facility_label='user-level' and severity_label='Warning'  LIMIT 2 "
}
"includes" : [
      "@version",
      "facility",
      "facility_label",
      "host",
      "logsource",
      "message",
      "pid",
      "priority",
      "program",
      "severity",
      "severity_label",
      "timestamp"
    ],

sql查询数据

只支持简单sql要复制查询需要json


{
    "query": " SELECT host,logsource,message FROM linux_syslog_2024_03_29 LIMIT 2 "
}
POST /_sql?format=txt
{
    "query": " SELECT \"@timestamp\",host,severity_label,pid,message FROM linux_syslog_2024_03_29 LIMIT 2 "
}
POST /_sql?format=txt
{
  "query": "SELECT state,COUNT(*),MAX(age),AVG(balance) FROM account GROUP BY state LIMIT 10"
}

备份配置

docker cp  elk-logstash-1:/usr/share/logstash/pipeline/logstash.conf /opt/elk/logstash.conf
docker cp  elk-logstash-1:/tmp/test-pipeline.conf  /opt/elk/test-pipeline.conf 

修改docker配置

docker port elk-logstash-1
docker inspect elk-logstash-1

docker inspect elk-logstash-1|grep Id

cd /var/lib/docker/containers

vi hostconfig.json
vi config.v2.json

sflow分析

logstash接收

安装sflow插件

logstash-plugin install logstash-codec-sflow
logstash-plugin install logstash-codec-netflow

接收配置

input {
  udp {
    port  => 2055
    tags => "netflow2055"
    codec => netflow
  }
  udp {
    port => 9999
    tags => "sflow9999"
    codec => sflow {
      # 可选的编解码器配置参数
    }
  }
}

输出配置

output {
   if "sflow9999" in [tags]   {
        elasticsearch {
            hosts => ["elasticsearch:9200"]
            index => "sflow9999_%{+YYYY_MM_dd}"
        }
    }
   if "netflow2055" in [tags]   {
        elasticsearch {
            hosts => ["elasticsearch:9200"]
            index => "netflow2055_%{+YYYY_MM_dd}"
        }
    }
    stdout { codec => rubydebug}
 
}

netflow/sflow测试配置

vi  /tmp/test-sflow.conf 
logstash -f /tmp/test-sflow.conf  --path.data=/tmp/logstash

发送端

sudo softflowd -i eno1 -v 5 -n 192.168.0.123:2055 -D

netflow v9 支持组播广播

sudo softflowd -i eno1 -v 9 -n 192.168.0.123:2055 -L 64 -D

网络分析

抓包离线分析

tcpdump -i enp1s0 -w /home/jack/t10000.cap -c 10000

网段

tcpdump -i br-lan -w /root/t224-8.cap   -c 100  'net 224.0.0.0/8'

tcpdump -i br-lan -w /root/multicast-8.cap   -c 100  ip multicast 

广播

tcpdump -i enp1s0 -w /home/jack/tbroadcast.pak   -c 100  broadcast

综合

tcpdump -i br-lan -w /root/mball-8.cap   -c 5000  'ip multicast  or broadcast '

分析工具

导入科来离线分析

db数据分析

docker run -d -p 12345:3000 --name metabase metabase/metabase-enterprise

自动化运维-管理大量pc资产

有时需要做it的资产盘点,设备如何快速整理。结合预算有计划更新淘汰老设备。

自动上报

将绿色软件安装成系统服务,执行IT资产管理服务卸载.bat

2024/06/08  08:19               199 cfg.json
2024/05/30  08:08                86 IT资产管理服务卸载.bat
2024/06/01  09:12               272 IT资产管理服务安装.bat
2024/06/20  14:00         1,926,024 myheadinfo.log
2024/05/31  10:46         5,721,088 myservice.exe
2024/06/20  13:56               609 硬件信息.json

将收集到如下数据

{
    "主机名": "DESKTOP-6HICFBK",
    "主盘写时间": 126,
    "主盘名称": "C:",
    "主盘读时间": 878,
    "内存使用": 4.159538269042969,
    "内存大小": 7.875347137451172,
    "内存空闲": 3.715808868408203,
    "处理器名称": "Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz",
    "处理器核数": 4,
    "处理器频率": 3.6,
    "来着用户": "张贵敏-人事",
    "生成时间": "2024-06-20 13:10:44",
    "磁盘使用率": 89.9692437270719,
    "磁盘名称": "C:",
    "系统名称": "windows",
    "系统版本": "10.0.17134 Build 17134",
    "网卡IP": "192.168.17.55",
    "网卡名称": "以太网 2",
    "网卡地址": "b4-2e-99-79-de-61",
    "运行时间": 19090
}

转换成表格

非常规远程

如何远距离管理这些pc电脑,加入一个大号自动登入器

WSL

开源/开放软件在企业中的应用,如AI应用 只有能对接才能按需定制。

要求 win10 版本 2004(19041)


前提条件

开启和关闭windows功能

  • 适用于linux的windows 子系统

  • 虚拟机平台

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    

安装

管理员窗口执行

wsl -l --online
wsl --set-default-version 2
wsl --install -d Ubuntu-22.04

手动下载

查看虚拟linux

wsl -l -v

卸载

wsl --unregister Ubuntu

重启wsl虚拟服务

 wsl --shutdown

后台启动指定版本

wsl -d Ubuntu-22.04

运行docker

WSL2下安装Docker-CE

sudo vi /etc/wsl.conf
[boot]
systemd=true

重启wls

 wsl --shutdown
 wsl -d Ubuntu-22.04

修改dns

sudo nano /etc/resolv.conf

关闭防火墙

sudo /etc/init.d/ufw stop

python3 -m http.server 9005
sudo tcpdump -i eth0 port 1314  -vvv -nn

安装ssh

sudo apt update
sudo apt install openssh-server
 
sudo systemctl enable ssh
sudo systemctl start ssh

安装docker

sudo apt  -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

curl -fsSL https://download.docker.com/linux/ubuntu/gpg  | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"


sudo apt update
sudo apt-get install docker-ce  docker-compose

修改源

sudo vi  /etc/docker/daemon.json


 {
       "registry-mirrors": [
          "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
          "https://docker.m.daocloud.io",
          "https://dockerhub.icu",
          "https://dockercf.jsdelivr.fyi",
          "https://docker.jsdelivr.fyi",
          "https://dockertest.jsdelivr.fyi",
          "https://dockerproxy.com",
          "https://docker.m.daocloud.io",
          "https://mirror.iscas.ac.cn",
          "https://docker.rainbond.cc"
          ]
      }

生效

 sudo systemctl daemon-reload
 
 sudo systemctl restart docker

测试

sudo docker run hello-world

使用podman

安装

sudo apt install podman

sudo apt install python3-pip
sudo pip3 install podman-compose

运行hello world

podman run hello-world
podman ps

配置源

nano /etc/containers/registries.conf

unqualified-search-registries = ["docker.io"]

[[registry]]
prefix = "docker.io"
location = "docker.jsdelivr.fyi"
insecure = true

[[registry.mirror]]
# xx
location = "docker.jsdelivr.fyi"
insecure = true
[[registry.mirror]]
# xx
location = "dockercf.jsdelivr.fyi"
insecure = true
[[registry.mirror]]
# xx
location = "dockerproxy.com"
insecure = true
[[registry.mirror]]
# xx
location = "mirror.iscas.ac.cn"
insecure = true


编排

podman-compose

podman-compose --version
podman-compose up -d

启动

podman-compose -f custom-compose.yml up -d

关闭

podman-compose -f custom-compose.yml down

重启

podman-compose -f custom-compose.yml restart

查看日志

podman-compose -f custom-compose.yml logs

图形化

Portainer连接podman 使用9443端口

启用api服务

sudo systemctl enable --now podman.socket
sudo systemctl start --now podman.socket
sudo podman run -d -p 9443:9443 --privileged -v /run/podman/podman.sock:/var/run/docker.sock:Z portainer/portainer-ce
sudo podman run  -d   --name prtainer-pod --privileged  --restart=always  -p 9009:9000  -v /run/podman/podman.sock:/var/run/docker.sock docker.m.daocloud.io/portainer/portainer

查看运行的服务

sudo lsof -i -n 

通过本地地址来访问

http://localhost:9009/

部署n8n自动化

docker run -d \
  --name n8n \
  -p 5678:5678 \
  -v /opt/n8n:/home/node/.n8n \
  n8nio/n8n
 docker exec -it n8n /bin/sh
  • 使用 bcrypt 生成密码

  • 用SQLite 更新值

https://bcrypt-generator.com/   在线密码生成
sqlite3 /opt/n8n/./database.sqlite

用sql更新

UPDATE user 
SET password = '$2a$10$YtSav6DxAawTzK9RyUFt6eKbkSJcBXR8i8o7rob9puoeZ5pRy7pRC' 
WHERE email = 'jack2nb@qq.com';

DLNA串流

就是遥控播放

开启 SSDP Discovery,UPnP Device Host 服务
wmp 播放器 .媒体流.允许远程控制我的播放器

foobar2000 v2.24 32位 +插件(foo_upnp,foo_out_upnp) 设置输出

开源AD服务

mkdir /opt/samba-ad
chmod 777 /opt/samba-ad
cd /opt/samba-ad
nano docker-compose.yml
systemctl stop systemd-resolved
systemctl disable   systemd-resolved  #//避免端口冲突

version: '3.8'

services:
  samba-ad:
    image: nowsci/samba-domain
    container_name: samba-ad
    hostname: samba-ad
    environment:
      - DOMAIN=abc.com
      - ADMIN_PASSWORD=Ad.password
      - DNS_FORWARDER=8.8.8.8
    ports:
      - "53:53"           # DNS
      - "88:88"           # Kerberos
      - "135:135"         # RPC
      - "139:139"         # NetBIOS
      - "389:389"         # LDAP
      - "445:445"         # SMB
      - "464:464"         # Kerberos password change
      - "636:636"         # LDAPS
      - "3268:3268"       # Global Catalog LDAP
      - "3269:3269"       # Global Catalog LDAPS
    volumes:
      - ./samba-data:/var/lib/samba
      - ./etc-samba:/etc/samba
    restart: unless-stopped
docker-compose up -d
 docker exec -it samba-ad  /bin/sh
 docker logs samba-ad 

网络存储

云盘/网盘

debian12 + nas 添加存储

TrueNAS SCALE

TrueNAS-SCALE-24.04.0.iso

omv

独立安装omv7

建议以kvm安装 omv

apt install ifupdown2
systemctl restart networking.service
systemctl enable networking.service

配置管理ip

cat /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.14.219 
netmask 255.255.255.0
gateway 192.168.14.1

换源


deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm main contrib
cp  /etc/apt/sources.list  /etc/apt/sources.list~
sed -i 's|deb.debian.org/debian|mirrors.tuna.tsinghua.edu.cn/debian|g' /etc/apt/sources.list

debian

cp  /etc/apt/sources.list  /etc/apt/sources.list~

sed -i 's|ftp.debian.org/debian|mirrors.tuna.tsinghua.edu.cn/debian|g' /etc/apt/sources.list
sed -i 's|security.debian.org/debian|mirrors.tuna.tsinghua.edu.cn/debian|g' /etc/apt/sources.list

sed -i 's|enterprise.proxmox.com/debian/pve|mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve|g' /etc/apt/sources.list.d/pve-enterprise.list

 
apt update
apt install gnupg wget  apt-transport-https ca-certificates  ntp ntpdate  -y
 

GPG 密钥
wget -O "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" https://packages.openmediavault.org/public/archive.key
apt-key add "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc"


vi /etc/apt/sources.list.d/openmediavault.list

deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public sandworm main
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages sandworm main 
apt update
apt install openmediavault-keyring postfix

apt install openmediavault  


默认账号 admin
默认密码 openmediavault

权限设置

存储器.共享文件夹.创建

通过命令行修改权限

默认权限 rwxrws---

chmod u=rw,g=rw,o=  abcd.txt
chmod u=r,g=r,o=r  abcd.txt

smb权限

可浏览
公开=允许访客

ssh权限

用户必须被分配到 _ssh用户组才能通过 SHH 登录。

内部管理

访问网站管理

金蝶k3

连接端 192.168.0.45:4002 配置

数据库

sql server 备份计划设置

192.168.0.45:1433

共享盘

描述地址管理人
销售生产文件\192.168.0.45\打火机共享
备份文件\192.168.0.107\全备份

访问转发代理

企业邮箱

企业邮箱 https://exmail.qq.com/

cnoqi.com

账号登入 wansf.com

手机:18058553916

密码 查看备注


it@cnoqi.com
wanshifa@cnoqi.com -> joye@cnoqi.com
邮件备份mail backup

域名续费

https://www.hulian.top/reg/forget.asp

账号 2473151694@qq.com

密码 查看备注

0.45开放端口

云原生:分布式

开的远程RPC端口

192.168.0.45

Discovered open port 4002/tcp on 192.168.0.45
Discovered open port 10269/tcp on 192.168.0.45
Discovered open port 80/tcp on 192.168.0.45
Discovered open port 4009/tcp on 192.168.0.45
Discovered open port 4022/tcp on 192.168.0.45
Discovered open port 5504/tcp on 192.168.0.45
Discovered open port 4010/tcp on 192.168.0.45
Discovered open port 16452/tcp on 192.168.0.45
Discovered open port 4035/tcp on 192.168.0.45
Discovered open port 445/tcp on 192.168.0.45
Discovered open port 593/tcp on 192.168.0.45
Discovered open port 4021/tcp on 192.168.0.45
Discovered open port 16453/tcp on 192.168.0.45
Discovered open port 5201/tcp on 192.168.0.45
Discovered open port 4032/tcp on 192.168.0.45
Discovered open port 3389/tcp on 192.168.0.45
Discovered open port 5159/tcp on 192.168.0.45
Discovered open port 16450/tcp on 192.168.0.45
Discovered open port 3388/tcp on 192.168.0.45
Discovered open port 2383/tcp on 192.168.0.45
Discovered open port 135/tcp on 192.168.0.45
Discovered open port 4050/tcp on 192.168.0.45
Discovered open port 4020/tcp on 192.168.0.45
Discovered open port 10268/tcp on 192.168.0.45
Discovered open port 4051/tcp on 192.168.0.45
Discovered open port 139/tcp on 192.168.0.45
Discovered open port 5985/tcp on 192.168.0.45
Discovered open port 47001/tcp on 192.168.0.45
Discovered open port 4004/tcp on 192.168.0.45
Discovered open port 4003/tcp on 192.168.0.45
Discovered open port 4005/tcp on 192.168.0.45
Discovered open port 2179/tcp on 192.168.0.45
Discovered open port 4014/tcp on 192.168.0.45
Discovered open port 4000/tcp on 192.168.0.45
Discovered open port 443/tcp on 192.168.0.45
Discovered open port 8090/tcp on 192.168.0.45
Discovered open port 17001/tcp on 192.168.0.45
Discovered open port 4001/tcp on 192.168.0.45
Discovered open port 3773/tcp on 192.168.0.45
Discovered open port 4025/tcp on 192.168.0.45
Discovered open port 4006/tcp on 192.168.0.45
Discovered open port 4015/tcp on 192.168.0.45
Discovered open port 4016/tcp on 192.168.0.45
Discovered open port 16451/tcp on 192.168.0.45
Discovered open port 3320/tcp on 192.168.0.45
Discovered open port 4008/tcp on 192.168.0.45
Discovered open port 4013/tcp on 192.168.0.45
Discovered open port 1433/tcp on 192.168.0.45
Discovered open port 4018/tcp on 192.168.0.45
Discovered open port 4007/tcp on 192.168.0.45
Discovered open port 5160/tcp on 192.168.0.45
Discovered open port 7887/tcp on 192.168.0.45

外网管理

管理地址

名称地址备注
公司公网ip112.16.172.14 (中国移动)OA部署在着ip上面 (OA内网部署)
公司网站网站 英文站属于香港43.224.155.16/英文站104.21.56.218
OAoa登入 / oa管理后台用了别人的域名恒有 但是指向公司的ip
虚拟化桌面http://oa.ouqiyj.com:8005/驻外办公室

公司阿里巴巴国际站 https://cnoqi.en.alibaba.com/

OA网页版

虚拟化桌面

公司备案信息

微信验证

第三方应用跳转(OAuth)工作台 跳转到欧奇烟具

ouqioa.nb-hengyou.com/112.16.172.14

提示redirect_uri需使用应用可信域名

https://open.work.weixin.qq.com/wwopen/uriconfirm?err_type=domain_err&uri=http%3A%2F%2Fouqioa.nb-hengyou.com%3A8081%2Fouqi%2Fportal%2Fphone%2Fmain.jsp%3Fapplication%3D11e8-b82b-b7056a2c-b266-7907d3bcd381%26action%3Dnull%26returnUrl%3D&retry_time=1676351344233&retry_count=1

跳转到

http://ouqioa.nb-hengyou.com:8081/ouqi/portal/phone/main.jsp?application=11e8-b82b-b7056a2c-b266-7907d3bcd381&action=null&returnUrl=

回调模板

https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE&agentid=AGENTID#wechat_redirect

设置方法

企业微信登入入口

https://work.weixin.qq.com/wework_admin/loginpage_wx

icp 备案

工信部网站 https://beian.miit.gov.cn/#/Integrated/index

流程

所需资料

需要材料份数要求
营业执照1原件电子版彩色照片
备案主体负责人必须为法定代表人1原件电子版彩色照片
网站LOGO1
网站标题1

要求

要求
域名有效期需大于或等于3个月
域名持有者需与主办单位名称或法定代表人姓名一致
身份证有效期大于3个月

OA公司自建 需要联系移动公司帮忙备案

外网开放端口

http://112.16.172.14:8081/ouqi/portal/share/security/login.jsp

http://112.16.172.14/ 直接是路由器

112.16.172.14  


Scanning 1 hosts [65535 ports/host]
Discovered open port 1723/tcp on 112.16.172.14
Discovered open port 8080/tcp on 112.16.172.14
Discovered open port 25872/tcp on 112.16.172.14
Discovered open port 5699/tcp on 112.16.172.14
Discovered open port 8081/tcp on 112.16.172.14
Discovered open port 8999/tcp on 112.16.172.14
Discovered open port 1900/tcp on 112.16.172.14
Discovered open port 5999/tcp on 112.16.172.14
Discovered open port 8890/tcp on 112.16.172.14
Discovered open port 23/tcp on 112.16.172.14
Discovered open port 7666/tcp on 112.16.172.14
Discovered open port 80/tcp on 112.16.172.14
Discovered open port 7999/tcp on 112.16.172.14
Discovered open port 9999/tcp on 112.16.172.14
Discovered open port 3389/tcp on 112.16.172.14
Discovered open port 15872/tcp on 112.16.172.14
Discovered open port 8000/tcp on 112.16.172.14
Discovered open port 8091/tcp on 112.16.172.14

摄像头

选型

海康威视(主机)

名称地址管理账号位置备注
新1号楼192.168.85.254消控室
新2号楼192.168.86.254消控室
新2号楼与1号楼192.168.86.253消控室
门卫监控主机192.168.6.247admin前门卫预 览
电商监控主机192.168.44.241admin电商办公室
1-2楼外围监控192.168.88.250admin1号楼挂壁含部分电商
3-5号楼通道192.168.88.251admin无回放
9,11号楼192.168.88.253admin10号楼DS-7816N-K2
5,7号楼192.168.88.254admin(7号楼挂壁)吸烟室
各个办公室192.168.17.249admin行政办公室预 览
室外过道192.168.88.251admin预 览
注塑车间192.168.87.250admin预 览 DS-8632N-E8
充调,焊接192.168.6.250admin后门卫DS-7932-R4
充调192.168.6.100admin预 览
机房192.168.13.188admin机房预览
总经理192.168.20.108

升级下载

rtsp://admin:123456@192.168.6.4/ch1/sub/av_stream #//海康

云平台监控

下载 Ezviz Studio 电脑版或手机版本

配置和管理通道

常见配置

无法显示视频问题

主菜单->配置->网络->高级配置-平台接入, 取消勾选码流加密

修改摄像头描述

主菜单->配置->图像->OSD设置 修改通道名称

取消萤石云绑定

需要连接显示器 主菜单-》配置-》网络配置-》账号状态-》解绑

网桥

80be-af0a-2888   1#4L/2
80be-af0a-2fca    1#4L/2  
80be-af0a-5940   2#4L/24
80be-af0a-606a   2#4L/24
80be-af0a-288a   2#4L/23
80be-af0a-5b58   1#4L/1
80be-af0a-60c8    1#4L/1


T100P

自动运维

基于ISAPI访问摄像头和录像机

所有通道

http://192.168.85.254/ISAPI/ContentMgmt/InputProxy/channels

摄像头截图

http://192.168.85.57/ISAPI/Streaming/channels/101/picture

osd文字描述

http://192.168.86.26/ISAPI/System/Video/inputs/channels

截取视频

如果没有对应的解码器需要重新编解码

ffmpeg -y -i C:\Users\Administrator\Web\DownloadFiles\2023-04-29\00010003228000000.mp4   -ss 00:50:00 -to 00:55:50 test_cut.mp4  

不转码直接截取

-c:v copy -c:a copy  #//音视频都拷贝

-c:v copy -c:a aac  #//音频重新编码
ffmpeg -y -i C:\Users\Administrator\Web\DownloadFiles\2023-04-29\00010003228000000.mp4  -c:v copy -c:a aac  -ss 00:50:00 -to 00:55:50 test_cut2.mp4  

特殊监控

web远程管理 老监控

192.168.6.128
192.168.6.127 需要安装 QuickTime 7.7.9

ip pc融合

192.168.20.3

ip vlan错位

192.168.6.17 7号楼

特殊设备

打卡机

名称ip位置备注
打卡机192.168.0.11人事部iface702 (端口4370) 管理软件zktime 5.0
打卡机192.168.6.168门卫
打卡机192.168.34.21111号楼
打卡机192.168.34.2025号楼
打卡机192.168.34.2031号楼
打卡机192.168.34.2057号楼
打印复印一体机192.168.20.200二楼办公室http://192.168.20.200/wcd/abbr.xml
bizhub C368
食堂刷卡机192.168.17.203食堂ZKEpos消费管理系统
车间扫码机器192.168.14.147号安卓系统

一体机设置

使用扫描功能需要配置图片上传服务地址比如FTP或smb

苹果电脑驱动 官网地址 https://www.konicaminolta.com.cn/business/support/drivers/

配置方法

考勤机

考勤机通信端口 4370

nmap -T5 -p 4370  192.168.25.*

考勤机只记录一部分人员信息,每个考勤设备记录数有限

刷卡机

每一台设备数据都有需要同步后才能正常使用

监控设备列表

海康设备

设备类型IP地址子网掩码物理地址
DS-7832N-K2192.168.17.249255.255.255.084-9a-40-59-b2-73
DS-8632N-E8192.168.87.250255.255.255.08c-e7-48-6e-bf-80
DS-7832N-K2192.168.88.254255.255.255.068-6d-bc-f6-0e-91
DS-7808N-K1/8P(D)192.168.34.244255.255.255.0c0-6d-ed-2c-d9-64
DS-7104N-F1(B)192.168.6.100255.255.255.0ac-cb-51-de-42-e4
DS-7932N-R4(B)192.168.6.250255.255.255.080-7c-62-02-b8-a1
DS-7816N-K2192.168.88.253255.255.255.04c-bd-8f-90-71-98
DS-7816N-K2192.168.88.250255.255.255.04c-bd-8f-90-71-9c
DS-7816N-K2192.168.88.251255.255.255.04c-bd-8f-90-71-a7
DS-7816N-K2192.168.6.247255.255.255.04c-bd-8f-90-6d-54
HK-IPCAM-HI192.168.6.8255.255.255.0f0-00-00-3a-be-b3
HK-IPCAM-HI192.168.6.12255.255.255.0f0-00-00-3a-be-e5
HK-IPCAM-HI192.168.6.29255.255.255.0f0-00-00-3a-be-af
HK-IPCAM-HI192.168.6.28255.255.255.0f0-00-00-3b-48-5d
HK-IPCAM-HI192.168.6.24255.255.255.0f0-00-00-3a-be-ab
HK-IPCAM-HI192.168.6.32255.255.255.0f0-00-00-3a-be-c0
HK-IPCAM-HI192.168.6.6255.255.255.0f0-00-00-3a-be-c5
HK-IPCAM-HI192.168.6.15255.255.255.0f0-00-00-3b-48-a1
HK-IPCAM-HI192.168.6.22255.255.255.0f0-00-00-3b-48-54
HK-IPCAM-HI192.168.6.20255.255.255.0f0-00-00-3b-48-7f
HK-IPCAM-HI192.168.6.7255.255.255.0f0-00-00-3f-66-9d
HK-IPCAM-HI192.168.6.17255.255.255.0f0-00-00-3b-49-35
HK-IPCAM-HI192.168.6.14255.255.255.0f0-00-00-6c-68-11
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-82-22-58
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-2f-e9-06
HK-IPCAM-HI192.168.87.58255.255.255.0f0-00-00-3f-64-a8
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-87-a1-5a
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-b0-4b-6a
HK-IPCAM-HI192.168.6.13255.255.255.0f0-00-00-6c-66-48
HK-IPCAM-HI192.168.88.109255.255.255.0f0-00-00-6c-81-67
HK-IPCAM-HI192.168.87.245255.255.255.0f0-00-00-3f-58-9e
HK-IPCAM-HI192.168.87.97255.255.255.0f0-00-00-3f-58-bf
DS-2CD1201D-I3192.168.6.128255.255.255.0e0-62-90-8d-99-95
HK-IPCAM-HI192.168.88.105255.255.255.0f0-00-00-6c-81-55
HK-IPCAM-HI192.168.6.4255.255.255.0f0-00-00-3b-49-31
HK-IPCAM-HI192.168.88.2255.255.255.0f0-00-00-6b-da-3e
HK-IPCAM-HI192.168.87.25255.255.255.0f0-00-00-3f-66-9c
DS-2CD3T10D-I3192.168.88.52255.255.255.04c-bd-8f-d5-da-6e
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-dd-08-03
DS-2CD3T10D-I3192.168.88.74255.255.255.04c-bd-8f-79-19-ac
DS-2CD3T10D-I3192.168.88.63255.255.255.04c-bd-8f-d5-db-d4
DS-2SC3Q120MY-TE192.168.17.11255.255.255.04c-f5-dc-97-36-77
HK-IPCAM-HI192.168.88.3255.255.255.0f0-00-00-6c-45-74
DS-2CD3T10D-I3192.168.88.71255.255.255.04c-bd-8f-79-1b-80
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-f6-66-b9
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-eb-04-92
HK-IPCAM-HI192.168.6.30255.255.255.0f0-00-00-3b-49-4a
DS-2CD3T10D-I3192.168.88.20255.255.255.04c-bd-8f-d3-2a-a9
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-32-a9-66
HK-IPCAM-HI192.168.88.106255.255.255.0f0-00-00-6c-67-ee
DS-2CD3T10D-I3192.168.88.16255.255.255.04c-bd-8f-79-1b-53
DS-2CD3232D-I5192.168.87.12255.255.255.044-19-b6-49-87-f4
DS-2SC3Q120MY-TE192.168.17.4255.255.255.04c-f5-dc-97-36-b4
DS-2SC3Q120MY-TE192.168.17.152255.255.255.0ac-b9-2f-46-05-f5
DS-2CD3232D-I5192.168.87.3255.255.255.044-19-b6-49-84-98
DS-2CD3232D-I5192.168.87.15255.255.255.044-19-b6-49-83-af
DS-2CD3232D-I5192.168.87.20255.255.255.044-19-b6-49-86-09
DS-2CD3232D-I5192.168.87.13255.255.255.044-19-b6-49-87-1c
DS-2SC3Q120MY-TE192.168.17.151255.255.255.04c-f5-dc-97-35-a9
DS-2CD3T10D-I3192.168.254.5255.255.255.04c-bd-8f-79-1b-76
DS-2CD3T25D-I3192.168.88.5255.255.255.04c-bd-8f-ba-d0-12
DS-2CD1201D-I3192.168.6.128255.255.255.0e0-62-90-bb-c9-b5
DS-2SC3Q120MY-TE192.168.6.11255.255.255.04c-f5-dc-97-36-6e
DS-2CD3T10D-I3192.168.88.27255.255.255.04c-bd-8f-79-19-ca
DS-2CD3T10D-I3192.168.88.24255.255.255.04c-bd-8f-d5-da-70
DS-2CD3T10D-I3192.168.88.30255.255.255.04c-bd-8f-2c-95-72
DS-2CD3T10D-I3192.168.88.25255.255.255.04c-bd-8f-d5-da-85
HK-IPCAM-HI192.168.6.27255.255.255.0f0-00-00-3b-48-9a
DS-2CD3T10D-I3192.168.6.130255.255.255.04c-bd-8f-cc-90-b6
DS-2CD3T10D-I3192.168.254.5255.255.255.04c-bd-8f-cc-90-b8
DS-2CD3232D-I5192.168.87.9255.255.255.044-19-b6-49-87-14
DS-2CD3T10D-I3192.168.88.26255.255.255.04c-bd-8f-2c-95-97
DS-2SC3Q120MY-TE192.168.17.23255.255.255.04c-f5-dc-97-36-95
DS-2SC3Q120MY-TE192.168.17.150255.255.255.044-a6-42-b6-c0-a3
DS-2SC3Q120MY-TE192.168.6.2255.255.255.04c-f5-dc-97-34-4e
DS-2CD3232D-I5192.168.87.10255.255.255.044-19-b6-49-87-da
DS-2CD3232D-I5192.168.6.23255.255.255.044-19-b6-49-85-75
DS-2SC3Q120MY-TE192.168.17.172255.255.255.04c-f5-dc-97-34-21
DS-2CD3232D-I5192.168.87.21255.255.255.044-19-b6-49-87-17
DS-2CD3232D-I5192.168.87.8255.255.255.044-19-b6-49-87-16
DS-2CD3232D-I5192.168.87.7255.255.255.044-19-b6-49-87-05
DS-2CD3232D-I5192.168.87.6255.255.255.044-19-b6-49-87-09
DS-2CD3T10D-I3192.168.88.59255.255.255.04c-bd-8f-79-1b-84
DS-2CD3T10D-I3192.168.88.28255.255.255.04c-bd-8f-2c-95-7c
DS-2CD3232D-I5192.168.87.22255.255.255.044-19-b6-49-86-fc
DS-IPC-B12HV2-IA192.168.6.3255.255.255.010-12-fb-7a-26-56
DS-2CD3232D-I5192.168.87.14255.255.255.044-19-b6-49-86-19
DS-IPC-B12HV2-IA192.168.6.164255.255.255.024-28-fd-c1-76-99
DS-2CD3232D-I5192.168.87.11255.255.255.044-19-b6-49-87-06
DS-IPC-B12HV2-IA192.168.6.19255.255.255.024-28-fd-c1-76-cc
DS-2CD3232D-I5192.168.87.4255.255.255.044-19-b6-49-87-0f
DS-2CD3232D-I5192.168.87.5255.255.255.044-19-b6-49-85-b6
DS-2CD3T10D-I3192.168.88.19255.255.255.04c-bd-8f-79-19-68
DS-2CD1201D-I3192.168.88.7255.255.255.0e0-62-90-8a-bd-c9
DS-IPC-B12H2-I192.168.88.161255.255.255.058-50-ed-6d-2f-60
DS-2SC3Q120MY-TE192.168.6.9255.255.255.04c-f5-dc-97-34-3e
DS-2CD3232D-I5192.168.87.17255.255.255.044-19-b6-49-87-18
DS-2CD3T10D-I3192.168.88.72255.255.255.04c-bd-8f-79-1b-2a
DS-IPC-B12HV2-IA192.168.6.5255.255.255.024-28-fd-dc-be-9d
DS-IPC-B12H2-I192.168.88.160255.255.255.058-50-ed-6d-2f-7b
DS-IPC-B12HV2-IA192.168.34.64255.255.255.024-28-fd-c1-76-d0
DS-2CD3232D-I5192.168.87.19255.255.255.044-19-b6-49-86-fd
DS-IPC-B12HV2-IA192.168.6.16255.255.255.024-28-fd-c1-73-33
DS-2CD3232D-I5192.168.87.2255.255.255.044-19-b6-49-87-0a
DS-2CD3T10D-I3192.168.88.17255.255.255.04c-bd-8f-d5-da-95
DS-IPC-B12HV2-IA192.168.34.39255.255.255.0c0-51-7e-a4-09-9f
DS-2CD3T10D-I3192.168.88.70255.255.255.04c-bd-8f-d5-da-b0
DS-IPC-B12HV2-IA192.168.6.59255.255.255.024-28-fd-c1-76-98
DS-2CD3T10D-I3192.168.88.55255.255.255.04c-bd-8f-79-1b-7a
DS-2CD3T10D-I3192.168.88.31255.255.255.04c-bd-8f-cc-90-24
DS-2CD3T10D-I3192.168.88.73255.255.255.04c-bd-8f-d5-da-b2
DS-2CD3T10D-I3192.168.88.64255.255.255.04c-bd-8f-d5-db-1e
DS-2CD3T10D-I3192.168.6.124255.255.255.04c-bd-8f-d5-da-71
DS-IPC-B12HV2-IA192.168.88.131255.255.255.024-28-fd-c1-76-a4
DS-IPC-B12HV2-IA192.168.6.18255.255.255.024-28-fd-c1-76-c7
DS-2CD3T25D-I3192.168.88.2255.255.255.04c-bd-8f-ba-d0-22
DS-2CD1201D-I3255.255.255.255255.255.255.255e0-62-90-c9-17-12

网络工具

网络拓扑

查看扫描报告

网络扫描nmap

(没有mac地址)(xml用ie打开或用xsltproc转换成html)

nmap -T5 -O  -F 192.168.254.1/24 --host-timeout 5000 


nmap -T5 -P0  -Pn -sV -n -v   -p 80,3389,445 --host-timeout 5000 

nmap -T5 -A -p135,139,445 --script nbstat 192.168.*.*  #网上邻居开放情况



基于端口扫描

nmap  -A -T5 -n -v   -p 80,3389,139,445 --script nbstat 192.168.*.*  --host-timeout 5000  -oX  x-namp.xml  

arp扫描

nmap -sP -PR 192.168.22.*

nmap  -sP -PR 192.168.34.* -oN carea.txt
nmap   -T5 -n -v   -p 1688,139,445 --script nbstat 10.147.20.*   

导出html扫描结果

 

cd /d D:\欧琦\网络结构\


"D:\欧琦\tools\xslt\bin\xsltproc.exe"  -o "D:\欧琦\网络结构\r1.htm"  "D:\欧琦\tools\nmap-bootstrap.xsl" "D:\欧琦\网络结构\202302100934 Ping scan on 192.168.6.1_24.xml"
 

内网抓包 (Wireshark)

过滤规则

arp

来源过滤

arp.src.hw_mac eq  68:6d:bc:f6:0e:91 
arp.dst.proto_ipv4 eq 192.168.6.1

其他广播

eth.dst==ff:ff:ff:ff:ff:ff

快速网段扫描

cd /d D:\欧琦\tools
#单ip
masscan  -p 1-65535  --rate=500    192.168.0.45
#udp扫描(意义不大)
masscan  -p U:1-61000 --rate=500    192.168.6.9 

#单网段
masscan  -p 80  192.168.1.0/24 --rate=500  

#全网段
masscan  -p80,22 192.168.0.0-192.168.255.255 --rate=500   

#简单存活检查
masscan  -p 139,445,22,23,80,8000   --rate=500    192.168.6.0-192.168.6.255

#ping存活检查
masscan  --ping --rate=500    192.168.6.0-192.168.6.255


单机端口扫描

cd /d D:\欧琦\tools
masscan  -p 1-65535 --rate 200 --open-only  192.168.6.250





整理出整个网段

masscan   -p22,23,25,80,443,445,3389,8000,8080 192.168.0.0-192.168.255.255 --rate 500  -oG mas-port-grep.txt
awk '/Host/ {print $4}' mas-port-grep.txt | sort -u  > live-port.txt  # 转换成ip列表++++

masscan    --ping --rate=100 192.168.0.0-192.168.255.255   -oG mas-ping-grep.txt
awk '/Host/ {print $4}' mas-ping-grep.txt | sort -u  > live-ping.txt  # 转换成ip列表++++


cat live-port.txt  live-ping.txt > live-port-ping.txt
sort live-port-ping.txt | uniq > live-host.txt

拓扑结构

路由跟踪

tracert -d  8.8.8.8     

tracert -d  10.0.01

wifi网络拓扑发现

本机ip 192.168.10.106

tracert -d  112.16.172.14

通过最多 30 个跃点跟踪到 112.16.172.14 的路由

  1     2 ms     2 ms     1 ms  192.168.10.1
  2    12 ms    11 ms    17 ms  192.168.6.1
  3     6 ms     7 ms     5 ms  112.16.172.14

网络唤醒

wakeonlan  a8:5e:45:5a:5a:7c  #办公室设计电脑

wakeonlan  e0:d5:5e:fa:1b:79  #备用测试电脑

测速

iperf -c 10.2.2.3   -t 4   -P 2     

临时tftp

TinyPXEServe_V1.0.0.19

网线示意图

电脑工具

电脑性能评估

cmd中执行命令

winsat formal

> 视频内存吞吐量                                      2099.10 MB/s
> Dshow 视频编码时间                                 0.00000 s
> Dshow 视频解码时间                                 0.00000 s
> 媒体基础解码时间                                     0.00000 s
> Disk  Sequential 64.0 Read                   395.65 MB/s          8.0
> Disk  Random 16.0 Read                       122.41 MB/s          7.3
> 总运行时间 00:01:15.09

powershell中查看

Get-CimInstance Win32_WinSat

CPUScore              : 9.1
D3DScore              : 9.9
DiskScore             : 7.65
GraphicsScore         : 3.9
MemoryScore           : 9.1
TimeTaken             : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel           : 3.9
PSComputerName        :

性能查看

winsat formal
winsat mem

winsat cpu -encryption

win10开启f8启动选项

bcdedit /set  {default}  bootmenupolicy legacy 

开启ping功能


netsh firewall set icmpsetting 8   

c盘腾挪

mklink /j  目标目录   来源目录
mklink /j  d:\Users\Administrator  C:\Users\Administrator

xcopy

xcopy D:\test\1 D:\test\2\ /E

修复win10系文件

扫描和修复系统文件

Dism /Online /Cleanup-Image /ScanHealth (扫描全部系统文件并与官方系统文件对比)
Dism /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-image /RestoreHealth (将与官方系统源文件不同的进行还原)

系统文件保护

sfc /scannow   #//-- 扫描丢失的文件

重装win10 默认app


Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register        "$($_.InstallLocation)\AppXManifest.xml"}

文件加密

anvi folder locker

系统下载站(全)

各个版本下载 office windows

https://msdn.itellyou.cn/

共享文件

命令查看本地共享

net view \\127.0.0.1

linux

smbclient -L 192.168.20.199
smbclient -L 192.168.20.199  -U smb

查看当前的连接

net use 

net use * /delete

创建共享

格式

net share <name>=<device name> [/users=<number> or /unlimited] [/remark:"text"]

例子

mkdir d:\tmpShare

net share "临时 共享"="d:\tmpShare" /grant:everyone,FULL /users:5 /remark:"测试"

net share print="print"  /grant:everyone,FULL /users:5 /remark:"测试"

删除共享

net share c$ /delete

共享需要密码

win7访问有密码的共享

运行输入

secpol.msc

打开“本地安全策略”

在本地安全策略窗口中依次打开“本地策略”-->“安全选项”->网络安全:LAN管理器身份验证级别”

仅发送NTLMV2响应

win10共享有密码

共享参考

打印机共享

本地账户的共享 - 仅来宾

gpedit.msc   # 组策略

计算机配置/windows设置/安全设置/本地策略/安全选项/网络访问:本地账户的共享==仅来宾

计算机配置/windows设置/安全设置/本地策略/安全选项/账户:来宾账户状态==启用

计算机配置/windows设置/安全设置/本地策略/安全选项/账户:使用空密码==禁用

参考

策略设置强制更新

gpupdate /force

还要重启打印服务,在管理员cmd下执行

net stop "Print Spooler"
net start "Print Spooler"

重新关闭共享(控制面板\所有控制面板项\网络和共享中心\高级共享设置)再开启

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print]

分支在其下新建32位DWORD值RpcAuthnLevelPrivacyEnabled 赋值为0即可

重启计算机

用ip无法访问用主机名可以 建议关闭防火墙

secpol.msc  #启动本地安全策略

安全设置\本地策略\用户权限分配\拒绝从网络访问这台计算机 :删除guest

安全设置\本地策略\用户权限分配\从网络访问此计算机:加入guest

windows防火墙

加一条规则:

netsh advfirewall firewall add rule name=RDP dir=in action=allow protocol=tcp localport=3389


netsh advfirewall firewall add rule name=snmpd dir=in action=allow protocol=udp localport=161

获取到错误的IP

169.254.X.X ip冲突

NETSH INT IP RESET,
IPCONFIG /FLUSHDNS


netsh winsock reset catalog
netsh int ip reset reset.log

常用软件

超级工具(Dism++)

Dism++ 可以在非系统中管理服务 , 常用工具->启动项管理

杀毒软件

推荐使用 火绒 http://192.168.0.121:89/

专杀工具

专杀
https://down7.huorong.cn/hrkill-1.0.0.83.exe

勒索病毒解密
https://www.huorong.cn/download/tools/wannaren_decryptor/HRDecryptor.exe


浏览器

win7 使用chrom 109版本

win10 使用chrome 最新版

打印机

PaperCut 打印机共享服务

通过url访问打印机 Web Services Device (WSD)
需要手工添加打印机 相当于raw共享

http://192.168.35.176:9163/printers/HP%20LaserJet%201020%20%28%E6%9C%AC%E5%9C%B0%29/.printer
http://192.168.15.56:9163/printers/Canon%20LBP3000/.printer
http://192.168.6.165:9163/printers/EPSON L310 Series/.printer

LPD打印服务

netstat -an | find "515"

共享打印机错误修复PrintFix(709&11b等错误代码) 补丁导致打印机共享问题的修复包

Fixprint.exe

WorkWin

电脑pc端管控

Usb共享

usbip 实现共享 usb 设备

VirtualHere USB Client

pdf 查看工具

极速pdf

pdf虚拟打印

wps 打印 to pdf

金山打印 to pdf

服务器管理

删除虚拟化服务

删除微软的虚拟化power shell下执行

UnInstall-WindowsFeature -Name Hyper-V -Restart

打印机相关

004005错误

打印机驱动不全

04005

非原装驱动,win自带驱动问题

0709错误

访问打印机未授权  关闭防火墙 
设置 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print]
RpcAuthnLevelPrivacyEnabled = 0 
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint\RestrictDriverInstallationToAdministrators

RestrictDriverInstallationToAdministrators

C:\Windows\System32\spool,点击drivers文件夹,右键属性共享

011b 更新补丁导致

替换文件
共享打印机错误修复PrintFix(709&11b等错误代码)

一键修复系统更新造成的打印机共享提示11b及709错误解决方法

虚拟打印

clawPDF

pdf合并

PDFsam Basic

linux终端使用发现协议

lldp 链路发现协议

apt install lldpd
/etc/sysconfig/lldpd  #配置文件

lldpd 命令

lldpcli  lldpctl 

lldpcli show nei sum  #收到的邻居
lldpcli show int  #本机发送信息

老系统套打工具

Grid++Report6

交换机上的发现结果

思科系列

show lldp neighbors   #交换机上的发现结果

锐捷交换机

show lldp neighbors interface GigabitEthernet 0/1-0/48

win终端使用发现协议

Powershell命令安装功能

Get-WindowsCapability -Name RSAT* -Online | Ft Displayname,State,Name #查询可用服务

Enable-WindowsOptionalFeature -Online -FeatureName 'DataCenterBridging'

Add-WindowsCapability -Online -Name "Rsat.LLDP.Tools~~~~0.0.1.0"  

 

查询链路信息

Get-NetLldpAgent

Enable-NetLldpAgent  -NetAdapterName "本地连接"

Disable-NetLldpAgent  -NetAdapterName "本地连接"

通过curl上报电脑信息(shell脚本)

net config workstation | find "计算机全名"  | curl -X POST http://httpbin.org/post  -d @-

第三方lldp

LLDP Agent 数据发送软件(HaneWinLLDPService)

LDWin.exe 数据接收软件

静默安装

Silent Install Builder 录制安装指令

vmware thinapp msi+写入注册表

批量安装系统

Tiny PXE

winpe系统

Win11PEx64_22000.2538_网络版_内置360se浏览器.iso

cn_windows_10_business_editions_version_20h2_updated_march_2021_x64_dvd_ca61aaaa.iso

  • OpenHardwareMonitor 硬件信息查看
  • NetSetMan IP快速切换
  • AnyTXT Searcher 全局文件检索工具

安全中心

统一管理定期下发杀毒

查看配置

修改密码

cd /opt/apps/huorong/escenter/bin 
 sudo ./hrcenter config --all
  ./hrcenter config --set root.password="你的密码"
图文加载中...请稍后....

一图胜千言

常用排版: ▌▍◆★☆☁➤➜❤➊➋➌

TodoList: ✅☑✓✔√☓☒✘ㄨ✕✖✗❌❎

进度图(甘特)

gantt
    title 工作计划
    dateFormat  YYYY-MM-DD
section 开发
    登入功能           :a1, 2020-01-01, 30d
    数据查询功能     :after a1  , 20d
section 测试
    界面测试      :2020-01-12  , 12d
    联调api      : 24d
sequenceDiagram    
    土豪 ->> 取款机 : 查询余额
    取款机 -->> 土豪 : 余额
    
    alt 余额 > 5000
        土豪 ->> 取款机 : 取上限值 5000 块
    else 5000 < 余额 < 100
        土豪 ->> 取款机 : 有多少取多少
    else 余额 < 100
        土豪 ->> 取款机 : 退卡
    end
    
    取款机 -->> 土豪 : 退卡
quadrantChart
    title 宣传活动的范围和参与度
    x-axis "低覆盖宣传" --> "高覆盖宣传"
    y-axis "低参与度" --> "高参与度"
    quadrant-1 "1应该扩大宣传范围"
    quadrant-2 "2需要扩大宣传范围"
    quadrant-3 "3重新评估"
    quadrant-4 "4可以改进"
    "活动 A": [0.3, 0.6]
    "活动 B": [0.45, 0.23]
    "活动 C": [0.57, 0.69]
    "活动 D": [0.78, 0.34]
    "活动 E": [0.40, 0.34]
    "活动 F": [0.35, 0.78]

并行流

flowchart LR

a-->|开始|B;
a-->|开始|C;

subgraph B和C同时进行
B-->|步骤|D1;
C-->|步骤2|D2;
end

流程图

flowchart LR
A --> B
C -.箭头虚线.-> D
E -.->|箭头虚线| F



A --- B --文字--> C -.- D -.文字.- E === F ==文字==> G
graph TB;
A & B --> C & D

流程图(mermaid)

flowchart LR
    id1(Start)-->id2(Stop)
    style id1 fill:#f9f, stroke:#333, stroke-width:4px
    style id2 fill:#bbf, stroke:#f66, stroke-width:2px, color:#fff, stroke-dasharray: 5 5
%% graph TD; comment
graph LR
Zero
A(This is A)
B[This is B]
C([This is C])
D[[This is D]]
E[(Database E)]
F((This is F))
G>This is G]
H{This is H}
I{{This is I}}
J[/J/]
K[\K\]
L[/L\]
M[\ M/]

Zero --> A --> B --> C --> D --> E --> F --> G --> H --> I --> J --> K --> L --> M
flowchart LR
%% this is a comment A -- text --> B{node}
   A -- text --> B -- text2 --> C

思维导图

	graph LR
	思维导图--> 第一部分
	第一部分-->1.1小节
	第一部分-->1.2小节
	
	思维导图--> 第二部分
	第二部分-->2.2小节
	
	思维导图--> 第三部分
	第三部分--> 3.1小节
	思维导图--> 若干

饼图

pie
    title 工作时间安排
    "网络优化" : 42.96
    "erp报表梳理" : 50.05
    "OA办公流程整理" : 10.01
    "服务器监控" :  5

视频