工作简介(内部)
-
形成规则
-
建立流程
-
IT平台固化
最终形成团队
企业管理三角
愿景:一切皆数据,行为可度量。
信息化关键指标:
- 目标(管理):
- 打通各系统之间信息的壁垒(个人主页一览多业务系统)(人为定义使系统割裂)
- 有电脑的办公人员使用okr目标自我管理
- 自由流程新业务跨部门协同
- 目标(生产)
- 模块可对接
- 生产虚拟调试(仿真)simpy
- 目标(后勤)
- it运作自动化可视化
数字化管理+数据BI
自己动手,丰衣足食
部门文化: 持续改善【提升,复制】
(人-事-物)都在系统中
精益生产:质量+时间+成本
类型 | 特点 | 方向 |
---|---|---|
信息化 | 人管机器 | 工具的延伸 |
数字化 | 机器管人 | 能力的拓展 |
数造化 | 数据管机器 | 由人设计,无人制造 |
精神:说到、做到、看到、得到
【模块化 +通信规范 】
服务器
编号 | 设备名 | 位置 | 内存 | 存储 | 连接地址 | 备注 |
---|---|---|---|---|---|---|
1 | dell R440 | 机房2号机柜 | 32GB | 4T+480g | 192.168.0.123 | 1U |
2 | dell R740 | 机房2号机柜 | 128GB | 8T+480g | 192.168.0.48 | 2U |
3 | dell R740+ | 机房2号机柜 | 128GB | 4T+480g | 192.168.0.45 | 2U (旧) |
4 | 台式机 | 机房2号机柜(下) | 16 | 4T | 192.168.0.121 | |
5 | 台式机 | 机房2号机柜(下) | 16 | 128G | 192.168.11.122 |
功能服务与vm虚拟化
服务名称 | 访问地址 | 包含服务 | 备注 |
---|---|---|---|
金蝶云 | 192.168.0.48 | 金蝶云 | |
k3WISE | 192.168.0.45 | k3WISE+mes(1.0) | |
oa | 192.168.0.107 | OA恒有 | |
网盘 | 192.168.0.48 | 生产部门网盘 | |
pve虚拟化 | 192.168.14.126 | pev | 8006端口 |
qemu虚拟化 | 192.168.0.121 | 备份,it网盘 | |
dns服务 | 192.168.0.121 | dns 域名劫持 | |
docker | 192.168.0.121 | sql service 2019, 测速,smaba | |
软路由 | 192.168.0.1 | route路由 | |
pve服务 | 192.168.11.144 | 8006端口 | |
火绒后台 | 192.168.0.121:8080 | 杀毒软件企业版本地部署 用户: admin | 前端89端口 |
h3cAC控制台 | 192.168.26.1 | 新厂房wifi | |
ipkvm | 192.168.14.20 | 连接pve集群 | |
pve2 | 192.168.14.126 | only office / nas | 8006 |
pve1 | 192.168.0.126 | openwrt / nas.122 | 16G 500G*2 |
only office | 192.168.14.220 | 8080端口 | |
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 |
4 | 7号楼 | 192.168.11.202 | POE交换机接入摄像头+办公电脑 | S1850V2-28P-HPWR |
5 | 3号楼 | 192.168.11.203 | POE交换机接入摄像头+办公电脑 | S1850V2-28P-HPWR |
6 | 9号楼 | 192.168.11.205 | 本楼层监控和办公室 | S1850V2-28P-HPWR |
7 | 10号楼 | 无 | 本楼层 | |
8 | 5号楼 | 无 | 本楼层 | |
9 | 1号楼 | 无 | 本楼层 | |
10 | 11号楼 | 无 | 本楼层 | |
11 | 服装电商 | 无 | 本楼层 | |
12 | 门卫 | 无 |
无线接入
接入 | ip | 设备位置 | 备注 |
---|---|---|---|
wsf-vip | 访客网络 | - | 访客网络 密码wsf12345678 |
left2lou | 192.168.11.1 | 二楼机房 | 覆盖范围:二楼会议室,设计办公室 |
wsf-lou | 192.168.25.8 | 一楼大办公室 | 覆盖范围:大厅,小会议,大办公室,行政办公室 |
sale_true | 192.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 | 财务 | 彭 | |
2 | PMC | 车 | |
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.1 | PMC | 车 | |
3.2 | 财务部 | 彭 | |
4 | 总经理 | 翁 | |
5 | 结束 | ||
发货--工作流程图
步骤 | 所属职位 | 所属人 | 备注 |
---|---|---|---|
1 | 外贸业务员 | 根据单据类型走不同的工作流程来审批 | |
2 | 财务 | 彭 | |
2 | PMC | 车 | |
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认证
四步走
- 识别问题
- 推荐方案
- 推动变革
- 带来价值(可衡量)
变革全貌
- 需求 (痛点/机会/动机)
- 方案 (匹配需求)
- 相关方 (受变更影的人)
- 价值 (投入产出)
- 环境(可行性)
流程框架
公司可以按照这些流程模块检查现有做法
- 识别现状:在“采购订单管理”中,公司当前的采购订单响应时间较长。
- 基准分析:将自己的采购订单管理流程与APQC中的流程进行对比,看哪些步骤存在改进空间。
- 改进优化:根据最佳实践建议,调整采购流程,比如实施自动化审批系统,减少人为延迟。
如何开会
首先要分区楚会议类型,不通过的会议有不同的氛围和流程。
- 决策型 (项目评审会,危机处理会)[主决议 ]
- 同步型 (每日站会,周例会)[不讨论]
- 共创型 (头脑风暴会,设计冲刺会) [不点评]
会议原则
-
明确会议目的
-
提前24小时分发材料
-
严格限制时间 (放个倒计时)
-
确定会议领导
最常见的会议
- 会而必议
- 议而必决
- 决而必行
- 行而必果
领导最后发布观点
有效沟通
33法则
最多讲三个点
三个阐述角度
- 观点
- 原因
- 案例
三个结构维度
弱电网络
Moi 3D设计 / arkoai / veras渲染
sd图生图
(在线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.0 | 192.168.16.0 | 统一划入办公区端 |
行政 | 192.168.16.0 | 192.168.16.0 | 统一划入办公区端 |
部分监控(门卫) | 192.168.88.0 | 不变 | |
财务 | 192.168.15.0 | 192.168.15.0 | 统一划入办公区端 |
内外销售 | 192.168.14.0 | 192.168.14.0 | 统一划入办公区端 |
技术/设计 | 192.168.19.0 | 192.168.19.0 | 统一划入办公区端 |
仓库 | 192.168.34.0 | 192.168.34.0 | 办公区 |
注塑车间 | 192.168.34.0 | 192.168.31.0 | 工厂车间 |
焊接 | 192.168.34.0 | 192.168.32.0 | 工厂车间 |
点火枪 | 192.168.34.0 | 192.168.33.0 | 工厂车间 |
独立电商 | 192.168.24.0 | 192.168.24.0 | 划入驻外办公区 |
AP无线 | 192.168.22.0 | 无线ap |
备注:需要采购管理型交换机,监控部分独立划区域
IP地址使用规划
开始ip | 结束ip | 用途 | 备注 |
---|---|---|---|
192.168.0.0 | 192.168.10.0 | 保留 | 0段已用于服务器区域 |
192.168.11.0 | 192.168.20.255 | 办公使用 | 11段用于网络设备,12-19用于测试,20-29办公大楼,30-39工厂车间 其他空余 |
192.168.21.0 | 192.168.30.255 | 无线网络 | 45段办公无线 ,49段访客无线 (使用dhcp) |
192.168.41.255 | 192.168.50.255 | 办公使用 | 未来扩建使用/新网络接入点 |
192.168.81.0 | 192.168.90.0 | 用于安防 | 81用于安抚网络主控 85-89用于安防设备(独立分割) |
192.168.100.0 | 192.168.200.0 | 不适用 | 留给未来规划 |
192.168.200.0 | 192.168.250.0 | 保留 | 暂时不使用 |
设备选型
路由防火墙 | ||||
---|---|---|---|---|
华三 | SecPath F1000-AI-25(双电源)含原厂部署服务 | 台 | 1 | 原厂三年质保 |
华三 | LIS-F1000-AI-25-IPS3-3Y | 套 | 1 | 入侵检测,可选功能 |
华三 | LIS-F1000-AI-25-AV-3Y | 套 | 1 | 网络防病毒,可选功能 |
行为管理 | |||||
---|---|---|---|---|---|
华三 | SecPath ACG1000-AI-30(含1年特征库授权) | 台 | 1 | 原厂三年质保 | |
华三 | LIS-ACG1000-AI-30-APP&URL-1Y | 套 | 2 |
核心 | |||||
---|---|---|---|---|---|
华三 | S5560X-34S-EI | 台 | 1 | 原厂五年质保 | 建议更换为独立电源设备,通常电源故障概率高。 |
汇聚 | |||||
---|---|---|---|---|---|
华三 | LS-5570S-28S-EI(双电源) | 台 | 4 | 原厂五年质保 | 1号楼、2号楼、监控 |
接入 | |||||
华三 | S5130S-28P-EI | 台 | 10 | 原厂五年质保 | 每楼层+办公室隔间 |
监控交换机 | ||||
---|---|---|---|---|
华三 | S5130S-28P-HPWR-EI-AC | 台 | 9 | 每楼层、室外 |
监控设备 | |||
---|---|---|---|
DS-2CD2T46F筒型 | 只 | 0 | |
DS-2DE3C140M-DE球机 | 只 | 0 | |
DS-2SC3Q140MY-TE球机 | 只 | 40 | |
DS-7916N-R4录像机 | 台 | 1 | |
DS-8864N-R8录像机 | 台 | 2 | |
32寸监控电视 | 台 | 4 |
核心端口现状
端口 | 对端 | 网段 | 备注 |
---|---|---|---|
p10 | 10号,9号 | .34 | 核心 |
p11 | 二层交换机 | .34 | |
p12 | 7号 | .34 | 串联到5,3,1楼 |
p13 | 前门卫 | .6 | |
p15 | 后门 | .6 | |
p9 | 内销2楼 | .20 | |
p8 | 人事部 | .17 | |
p5 | 财务2楼 | .15 |
监控IP端规划
楼层 | ip范围 | 备注 |
---|---|---|
1#1L | 20-60 | 每层预留40IP地址 |
1#2L | 60-100 | |
1#3L | 100-140 | |
1#4L | 140-180 | |
外围和楼梯 | 180-220 |
服务器规划
规划免于混乱
硬件虚拟化规划
调整前
名称 | ip | 位置 | 备注 |
---|---|---|---|
vm | 192.168.0.121 | 机房2机柜 台式机 | linux kvm系统 云桌面 |
vm2 | 192.168.0.122 | 机房2机柜 台式机 | linux kvm系统 测试和云桌面 |
Edge-R440 | 192.168.0.123 | 机房2机柜 1U | 用于 OA |
R740xd | 192.168.0.124 | 机房2机柜 4U | 用于k3wis |
调整后
pve8集群
宿主机 | 容器名称 | ip | 备注 |
---|---|---|---|
pve 01 | 共享文件 | 192.168.0.122 | |
pve 01 | oa | 192.168.0.107 | |
pve 03 | backupserver | 192.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
检查
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 -
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需要程序配置启用)
瘦客户机
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()
打通企业微信
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常用
调用工具
vscode + cline
首次登入
新账号会有一个初始密码,在第一次登入时系统会提示修改密码。
通过预留的手机号码获得验证码,根据自己的喜好设置独有密码。
操作如图:
收藏常用菜单
通过菜单和搜索使用系统
条件查单据
通过自定条件 和 通用条件快速查找单据
显示设置
审批工作
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
成本中心
参数设置
共耗设置
成本为0处理
费用分配
成本项目
成本项目匹配
定额因子
作业活动
只有辅助生产部门需要设置,比如供电,供水
这里先忽略
启用和初始化
基础
会计政策
【基础管理】--【基础资料】--【财务会计】--【会计政策】
启用核算范围
【成本管理】--【存货核算】--【基础资料】
这个先要启用才能到存货核算系统
启用存货核算系统(1)
【成本管理】--【存货核算】--【初始化】--【启用存货核算系统】
所有相关库存数据要【已审核】
通过启用出存货核算
存货核算初始化(结束)
【成本管理】--【存货核算】--【初始化】--【存货核算初始】
组织(100[培训账套])核算体系(KJHSTX01_SYS[财务会计核算体系])会计政策(KJZC01_SYS[中国准则会计政策])
仓库核对初始核算数据中物料数量与初始库存中物料数量不一致,
请使用初始核算数据维护功能进行处理
初始核算数据录入
【成本管理】--【存货核算】--【初始化】--【初始核算数据录入】
必须填入价格
关联【库存数量价格】到【出库成本单价】
存货核算初始化结束
【成本管理】--【存货核算】--【初始化】--【存货核算初始化】
启用产品成本核算(2)
【成本管理】--【产品成本核算】--【初始化】--【启用产品成本核算】
先要完成 存货初始化
通过启用产品成本
(处理)期初在产品成本
【期初在产品】来自于基于【期初生产订单】 ,根据开工日期确定是否为期初
引出引入在产品成本
引入为空问题
订单计划开工日期和执行下单日期要小于启用月份。需要手动执行下达
如果无法下达 【存货核算期末关账】反关账一下(反关账要符合 2反2启)
引入错误
成本项目
编码为【CBXM00003_SYS】的成本项目不存在或未在成本项目匹配方案中设置!
完成引入
产品成本核算初始化(结束)
【成本管理】--【产品成本核算】--【初始化】--【产品成本核算初始化】
加入没有引入【期初在产品成本】就会提示
组织(100[培训账套])核算体系(KJHSTX01_SYS[财务会计核算体系])
会计政策(KJZC01_SYS[中国准则会计政策])存在订单未完成成本系统初始化,
请通过菜单【期初在产品成本录入-选项-引出-下载期初在产订单数据】
下载期初订单,并维护在产品数量和金额,
然后通过菜单【选项-引入-外部引入】把期初订单引入到成本系统。
下面是具体的未完成初始化的订单(仅显示前100行订单)。
费用分配标准设置
费用项目(系统自带)
制造费用分配及取值科目:分配标准公式=标准工时*完工入库数量;
费用公式
【成本管理】--【产品成本核算】--【基础资料】--【费用分配标准】
费用分配标准
费用分配标准设置
【成本管理】--【产品成本核算】--【分配标准设置】--【费用分配标准设置】
产品分配标准设置
【成本管理】--【产品成本核算]--【分配标准设置】--【在产品分配标准设置】
费用引入方案
【成本管理】--【产品成本核算】--[费用归集】--【费用引入方案】
成本计算
【成本管理】--【产品成本核算】--【产品成本核算】--【成本计算】
执行结果
原因明细
去 【产品分配标准设置】为其他车间设置分配标准
委外成本不做计算
完成成本计算
处理警告
入库成本维护
【成本管理】--【存货核算】--【存货核算】--【入库成本维护】
选择成本批量维护,1.要产品成本核算【反初始】 2.产品成本核算【反启用】
选用一种价格填充方式
组织(100[培训账套])核算体系(KJHSTX01_SYS[财务会计核算体系])
会计政策(KJZC01_SYS[中国准则会计政策])工单编号【MO000007】,行号【3】未完成成本系统初始化。
过程需要返工,所以2启2结之前提前检查。
完成成本计算
查看相关明细
成本计算单(以不同角度展示)
【成本管理】--【产品成本核算】--【报表分析】--【成本计算单】
列表
横向
成本性能诊断报告
总账报表
流程逻辑
graph TB;
subgraph 凭证模板
业务分类--映射-->财务科目
end
subgraph 报表
配置报表方案-->通过报表对账 -->达到平衡
end
过账后不能反过账
基础配置
凭证模板
凭证生成
财务会计--智能会计平台--账务处理--凭证生成
很多菜单内都由【凭证生成】只有【智能会计平台】内可以生成各种凭证
业务单据到业务凭证
凭证生成错误
凭证生成失败,请检查凭证模版074设置:
1、凭证模板设置的凭证日期是否在账簿所选期间对应的日期范围,
2、凭证模板设置的来源组织在会计核算体系下的核算组织是否和账簿的核算组织一致,
3、若单据上的会计核算体系不为空,是否和账簿的会计核算体系一致。
总账管理参数
可以做未来的配置
批量生成单据
生成错误
模版编码030第1行业务分类下第16行分录科目的核算维度取不到
(可能原因:
1.核算维度未指定;
2.基础资料未分配;
3.基础资料或辅助资料被删除或被禁用;
4.单据上对应字段值为空。)
- 根据提示:第1行业务分类--第16行分录科目
银行==付款单明细.我方银行账号.开户银行
银行账号==付款单明细.我方银行账号
生成异常
模版编码030第1行业务分类下第6行分录取不到对应的科目,
详情可点击菜单【凭证生成异常检查指引】。
-
第1行业务分类--第6行分录 : 科目不存在
模版编码030第1行业务分类下第16行分录取不到对应的科目,
详情可点击菜单【凭证生成异常检查指引】。
- 承兑票据--背书
科目取值--新增行
结算方式 等于 '应收票据背书'
模版编码007第1行业务分类下第1行分录科目的核算维度与凭证模版
设置不一致,请检查科目或凭证模版设置
凭证查询
凭证过账
凭证整理
自动转账(凭证)
期末调汇
业务报表对账方案
业务报表对账
【财务会计】--【只能会计平台】--【对账管理】--【业务报表对账】
未审核的单据也参与对账,让未过账的单据参与对账
业务单据对账方案
核查明细账(2级)
其他查询
科目余额表
核算维度余额表
总分类账
相关设置
会计政策
基础管理--基础资料--财务会计--会计政策
存货核算按费用项目明细核算
总账初始化(结束)
账簿
账簿可以有多个,来符合业务对应多套财务准则
【财务会计】--【总账】--【基本资料】--【账簿】
科目初始数据录入
比如期初余额
审批业务参考
动画演示
1.进入金蝶云
公司内部请使用:http://192.168.0.48/K3Cloud ,如果有客户端可以直接打开客户端。
登入
要审批首先先要进入系统才可以操作
2.查看审批
进入系统可以看到左上角有两个图标,点击房子图案来到首页
点击代办任务的标题进入审批处理
3.处理审批
审批可以看到单据的相关信息,最后做出判断是否同意还是驳回要求修改等。
4.查看审批进度
进入流程图
再审批处理中点击 查看流程图
进入流程图查看
查看完成流程
销售出库对账
操作流程
- 联系客户核对收货数量
- 修改对应单据添加对账附件
- 完成对账流程
01.进入对应应单据
收到客户的收货确认来到对应的单据,打开已经审核的单据进行修改在附件中新增对账的图片或文件。
02.来到对应代办任务
销售出库单有对应的代办任务,需要和客户确认后进行数量确认并录入系统。
在这里的附件只能查看添加新附件或证据图片需要在列表里点击此单据修改
0.3 查看完整流程
发货数量确认分为【发货与客户收货相同、发货与客户收货不同】最后由财务接收对账资料调整应收等
前倒冲领料
批量修改物料
bom物料清单
批量修改(发料方式)
注意
只修改倒冲物料,其他不变
领料方式
总仓(配件仓)和车间仓分别下推领料单
如有异常删除条目
原调拨物料正常调拨
生产管理
直接生产流程
生产订单
【生产制造】--【生产管理】--【生产订单】
生产领料
通过【生产订单】下推
生产补料
通过【生产订单】下推
生产订单变更
通过【生产订单】下推
用料清单变更
通过【用料清单】下推
返工业务流程
【生产制造】--【生产管理】--【生产订单】
单据类型==直接入库-返工生产
查看返工物料清单
通过【业务查询】--【用料清单查询】 添加新物料来返工
不良品管理
通过【用料清单】下推
来料不良
余料退料
同上
生产入库
通过【生产订单】下推
生产结案
通过【 生产订单列表】【行执行】操作
生产订单用料明细++
工序报工入库
前提配置
管理工序控制码
创建作业
【生产制造】--【车间管理】--【工艺建模】--【作业列表】
创建工艺
工序汇报入库
【生产制造】--【车间管理】--【工艺建模】--【工序控制码列表】
汇报入库单
选用工艺
开工
生成工序计划
工序计划
【生成制造】--【车间管理】--【车间作业计划】--【工序计划列表】
逐级完成汇报
通过【列表选中】下推
汇报入库
通过最后一个工序【汇报单】下推
工序汇报委外
汇报后转移(主组织-供应商)
加工完毕后转入
委外提前设置
工艺委外费用
工序单流程
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工序转移-->下一个工序-->工序汇报单-->入库
单据类型设置
【基础管理】--【基础资料】--【单据类型】
工序计划
工序汇报入库单
监控方案
流程
规则设置
监控条件
采购价格管控
思路
(项目🔶-任务🟥-工作🔺)
-
🔶通过下推财务应付控制采购价格。发票价格等于采购价格。如果不同需要修改采购订单
-
🟥采购订单创建时 管理价格
- 使用价目表
- 没有价目表 单价可修改
-
🟥应付单时管理价格 (单据页)
-
保存后可获取采购订单价格
- 🔺制作 单据页获取价格按钮
- 🔺 捕获事件 执行修改数据并刷新
- 🔺制作 单据页获取价格按钮
-
🔺价格和应付价格不相等可以保存,但是不能提交
- 🔺通过插件拦截提交,除非价格和应付一样
-
-
🟥应付单时管理价格 (单据页)
- 批量获取
-
建议用插件实现,不用实体规则
目标通过 对指定物料开启 价格管控来
- 确保发票价格=采购价格
首先选出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
论坛参考
销售出库例子
修改单据
表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异常采购控制
签入
相当于修改到系统文件。通过签入签出加锁
概念
采购订单,保存时条件控制
- 启用和禁用设置
批量修改属性
编辑操作条目
勾选为启用控制
bos价格管控+收款条件管控
1.销售 - 价格管控
c类客户
- 物料--上勾上是否价格管控
- 维护价目表
- 采购调价表
2.收款条件管控
- c类客户 现销转赊销账期自动45天
- c类客户,赊销45天 收款条件(通过实体服务-值更新)
触发低价选择
价格管控流程条件
控制c类客户收款条件
控制交货数量
实体服务 定义公式的值更新
bos销售单位控制
概念
通过销售只变为销售盒/箱 ,更加直观
- 首先物料属性的销售-销售计价单位
- 修改单据实体服务规则
物料修改
修改单价实体服务规则
业务功能授权
销售隔离
访问权限授权
应收款明细表
备份
需要8000端口登入
备份设置
填写备份路径等
恢复
选择来源备份文件和恢复路径
销售工作流
特殊操作
加签、会签
销售订单定制流程
【定制类销售使用,工厂定制订单使用,工厂渠道订单使用,】
订单种类
销售订单流程 | 别名(单据类型) | 层级 | 持有人 | 消息通知人 |
---|---|---|---|---|
1、宁外定制订单审批 | 定制类销售订单 | 2 | 财务,生产,总经理 | bom专员,生产主管 |
2、工厂定制订单审批 | 渠道非标 | 3 | 内销总监,财务,总经理 | bom专员,生产主管 |
3、工厂渠道订单审批 | 渠道标准 | 2 | 内销总监,总经理 | bom专员,生产主管 |
4、预测订单审批 | 无客户;生产--预测冲销 | 2 | 内销总监,生产 | bom专员,生产主管 |
1、宁外定制订单审批
简版流程 通知到计划主管
节点 | 作业 | 节点名称 |
---|---|---|
财务核价、通知到生产部 | 价格是否合理、生产是否可行 | 财务并通知计划生产 |
总经理 | 最终决定 | 总经理决定 |
通知信息
---- 核价
您有{入口单据名称} {销售订单号} 的订单需要核价
---- 审批
您有{入口单据名称} {单据类型} 的订单需要审批
---- 计划
销售订单{销售订单号}类型{单据类型}需要关注
----最后通知
订单{销售订单号}流程完结
财务设置细节
财务YN判断
把1级中的财务驳回重审
操作,转换成正向
不管同意还是驳回都会往下走。
连接线N
连接线Y
总经理节点细节
驳回重审要操作表单,修改表单状态【重新审核】
完成节点设置细节
同时发送消息
通知发起人
[发起人,bom专员(王飞),生产主管(杨丽勇)]
2、工厂定制订单审批
节点 | 作业 | 节点名称 |
---|---|---|
内销部门经理() | 是否符合市场 | |
财务核价 | 售价是否合理 | 财务核价 |
总经理 | 最终决定 | 总经理定价 |
通知信息
----- 最后通知
有销售订单下达{销售订单号}
流程截图
通用设置细节
{Consent:'审核通过',Reject:'驳回重审',Dissent:'终止流程'}
也可以自定添加,关键是审批类型【正向,驳回,终止】
财务设置细节
总经理设置细节
配置工作流
设计发布
配置使用
名称: 工厂定制订单使用
3、工厂渠道订单审批
节点 | 作业 | 节点名称 |
---|---|---|
内销部门经理() | 是否符合市场 | 内销经理定夺 |
总经理 | 售价是否合理 | 总经理定夺 |
流程图
工厂渠道订单使用
配置
4、预测订单审批
节点 | 作业 | 节点名称 |
---|---|---|
内销部门经理() | 是否符合市场需求 | 内销经理定夺 |
计划主管 | 生产安排是否可行 | 生产部定夺 |
完结 | 通知 :下单人,生产主管,总经理 |
通知信息
---- 内销部门经理
{入口单据名称}编号{单据编号}需要进行处理
----计划主管
{入口单据名称}编号{单据编号}需要进行评估
---- 完结
预测{入口单据名称}{单据编号}完结
流程图
预测订单使用
配置
启用配置
钉钉+云星空
使用限制
步骤1
pc客户端下操作
步骤2
步骤3
web端设置
首次配置
连接私有云
设置1
设置2
设置 3
设置4
用使用配置
进入应用
使用量查看
模块管理
移动版 金蝶云
开始销售
首次进入
确认员工和账号权限
后台配置
管理员账号登入
【基础管理】--【移动设置】--【轻应用字段显示设置】--【移动销售显示设置】
单据配置
需要显示的字段
前端操作
新版销售
设置移动端api版本
【基础管理】--【公共设置】--【参数设置】
设置为最新版
v5版本界面
商品列表
选物料
销售 点火枪成品(6.03.01.0402)
下单
结果
???? 计划跟踪号未填
订单明细
订单列表
入口
订单列表明细
销售订单显示设置
基础管理>公共设置>单据设置 -- 移动平台单据启用设置
添加显示
发货通知
通过 销售订单下推
发货通知
发货通知单列表
移动端显示设置
配置发货通知单字段信息 ???
发货通知单配置入口
通知单 明细设置
移动端发货通知单效果
并行流程设计
结果
流程
投票模式
接口访问金蝶
erp系统通过IP访问数据,同时可以当无头系统来实现UI重定义
文档介绍
程序调用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蓝图
极简业务流程建模图
简单蓝图流程
新账套创建
流程
-
账套管理 :新建一个
-
用户管理 :导入用户
-
客户端:创建基础数据
-
批量导入:科目等
-
填入起初科目余额
-
结束初始化
-
录凭证,过账,结转受损,关账
-
创建报表
初始数据导入
组件配置测试
常用表
基础
账套查询
KDAcctDB数据库下
select * from t_ad_kdAccount_gl
账套(AIS20240227123408)
表含义 | 表名 | |
---|---|---|
科目表 | t_Account | FPeriod:月份 |
余额表 | 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 无法解决问题,就只能重启整个服务器
也需要先连接到服务器
重启服务器
确认重启
需要填写重启服务器的理由
钉钉上下班打卡
加入公司邀请码
1.正常打卡
1-1.打开钉钉APP
1-2.找到打卡入口
1-3.通过定位打卡
2.异常情况处理
请假,忘打卡,出差
2-1.申请界面
3.考勤报表
3-1.进入考勤功能
3-2.查看考勤报表
销售相关
销售流程
| 内销
步骤 | 所属职位 | 所属人 | 备注 |
---|---|---|---|
1 | 申请人 | ||
2 | 营销总监 | ||
3 | PMC | ||
4 | 财务部 | ||
5 | 总经理 | 条件已废弃 | |
6 | 财务部 | 抄送 | |
7 | 结束 | ||
| 外贸
步骤 | 所属职位 | 所属人 | 备注 |
---|---|---|---|
1 | 申请人 | ||
2 | Pmc | ||
3 | Pmc经理 | ||
4 | 已经跳过 | ||
5 | 风控会计 | ||
6 | 总经理 | ||
7 | 结束 |
1、首先下载钉钉
扫码二维码下载
点击下载
点击钉钉下载到下载界面完成下载
2、注册钉钉
使用手机号码或支付登入二选一即可
2、加入公司
使用钉钉来扫码加入公司
首批注册人
帮助文档
https://www.yuque.com/yida/support/hufzoo
轻应用
https://qing.ik3cloud.com/install/
移动设备上完成审批
1.打开钉钉APP
首次使用
第一次使用参考如何使用钉钉
选择公司
没有选择正确的公司无法使用公司内的应用
2.进入工作台
进入工作台界面
3.登入云心空
这里输入的账号密码和电脑端云星空一样
4.查看代办
5.审批
6.查看完整流程
当前流程
完整的业务流程
移动销售
1.打开钉钉APP
首次使用
第一次使用参考如何使用钉钉
选择公司
没有选择正确的公司无法使用公司内的应用
2.进入工作台
进入工作台界面
3.登入云心空
首次进入这里输入的账号密码和电脑端云星空一样
发货通知单
进入销售首页
1找到对应的单据
2.创建通知单
3.确认发货单
填入相关信息
钉钉新建流程
常用菜单
自定义流程
工作台--oa审批--创建新表单
查看已有流程
工作台--oa审批--管理后台--表单管理
表单设计
-
基础设计
-
表单设计
表单内容
-
流程设计
审批流
-
高级设置
包含 电子签名
优质客户分析
报表
通过《金蝶云星空集成开发平台》创建新的报表
步骤1 创建
步骤2 数据源
编辑sql
带入参数
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 保存发布
发布位子
前台使用
要重新登入
库查询数据库文件
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.8 | Enterprise 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 切割字符串
对应表格
USERID | CHECKTIME | CHECKTYPE | VERIFYCODE | SENSORID | Memoinfo | WorkCode | sn | UserExtFmt | mask_flag | temperature |
---|---|---|---|---|---|---|---|---|---|---|
2859 | 2023-05-01 | I | 1 | 1 | NULL | 0 | CQDT223160859 | 1 | 0 | 0 |
插入对应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 路由
接口 | 目标 | 网关 | 跃点数 | 表 |
---|---|---|---|---|
lan2 | 0.0.0.0/0 | 192.168.2.1 | 0 | 44 |
ipv4规则
优先级 | 传入接口 | 源地址 | 传出接口 | 目标地址 | 表 |
---|---|---|---|---|---|
自动 | br-lan | 192.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状态; | 得到对方rid | vm主机不能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
梳理冗余配置
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
防火墙
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 胖瘦一体
H3C WA2600系列无线接入点 配置调测 配置指导 H3C WA系列无线接入点 配置指导
无缝漫游 需要支持kvr协议
本地转发
需要下发配置到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地址清单
MAC | Address | CEVLAN | Port |
---|---|---|---|
00e0-4c37-ace4 | 34 | Eth0/0/11 | dynamic |
00e0-4cff-2c14 | 34 | Eth0/0/11 | dynamic |
7427-eae8-fef9 | 15 | Eth0/0/5 | dynamic |
e0d5-5e56-7edb | 17 | Eth0/0/7 | dynamic |
5cde-3414-a887 | 26 | Eth0/0/16 | dynamic |
e447-9054-4484 | 20 | Eth0/0/9 | dynamic |
f4b5-203b-2404 | 26 | Eth0/0/16 | dynamic |
70b5-e874-5844 | 34 | Eth0/0/11 | dynamic |
b42e-9904-6dda | 34 | Eth0/0/2 | dynamic |
f4b5-2024-f44c | 34 | Eth0/0/11 | dynamic |
f000-006c-8155 | 34 | Eth0/0/11 | dynamic |
f000-006c-8167 | 34 | Eth0/0/11 | dynamic |
b42e-99e6-3c49 | 15 | Eth0/0/5 | dynamic |
e062-9087-a15a | 34 | Eth0/0/11 | dynamic |
00e0-4f03-2e24 | 34 | Eth0/0/14 | dynamic |
4419-b649-83af | 24 | Eth0/0/14 | dynamic |
6045-cb7f-c902 | 34 | Eth0/0/14 | dynamic |
e247-1f2c-0f6d | 34 | Eth0/0/11 | dynamic |
b42e-999d-1f99 | 15 | Eth0/0/5 | dynamic |
8469-9386-4585 | 34 | Eth0/0/2 | dynamic |
2cea-7feb-b118 | 100 | Eth0/0/20 | dynamic |
e062-9082-2258 | 34 | Eth0/0/11 | dynamic |
408d-5c1d-9e3e | 20 | Eth0/0/9 | dynamic |
4cbd-8f90-71a7 | 88 | Eth0/0/11 | dynamic |
0c9d-92cc-8c94 | 26 | Eth0/0/16 | dynamic |
b42e-9968-3f8c | 34 | Eth0/0/14 | dynamic |
4cbd-8f90-719c | 88 | Eth0/0/11 | dynamic |
4cbd-8f90-7198 | 88 | Eth0/0/14 | dynamic |
4cbd-8fba-d022 | 34 | Eth0/0/11 | dynamic |
b42e-9944-2e6e | 34 | Eth0/0/14 | dynamic |
b42e-9979-de61 | 17 | Eth0/0/7 | dynamic |
309c-23b9-101a | 20 | Eth0/0/9 | dynamic |
4cbd-8fba-d012 | 34 | Eth0/0/11 | dynamic |
18c0-4d1b-c69e | 15 | Eth0/0/5 | dynamic |
4cbd-8fcc-9024 | 24 | Eth0/0/14 | dynamic |
e0d5-5efc-0d5f | 26 | Eth0/0/16 | dynamic |
309c-2365-209e | 20 | Eth0/0/9 | dynamic |
e0d5-5e6d-bd23 | 34 | Eth0/0/2 | dynamic |
4cbd-8fcc-90b8 | 24 | Eth0/0/14 | dynamic |
4cbd-8fcc-90b6 | 26 | Eth0/0/16 | dynamic |
4cf5-dc9a-c39e | 20 | Eth0/0/9 | dynamic |
0017-6112-b286 | 100 | Eth0/0/22 | dynamic |
c06d-ed2c-d964 | 34 | Eth0/0/2 | dynamic |
4cf5-dc97-3471 | 20 | Eth0/0/9 | dynamic |
f4b5-2018-50e7 | 100 | Eth0/0/21 | dynamic |
4cf5-dc97-344e | 26 | Eth0/0/16 | dynamic |
e062-90eb-0492 | 34 | Eth0/0/11 | dynamic |
4419-b649-8609 | 24 | Eth0/0/14 | dynamic |
4cf5-dc97-343e | 26 | Eth0/0/16 | dynamic |
4419-b649-8619 | 24 | Eth0/0/14 | dynamic |
4cf5-dc97-3421 | 17 | Eth0/0/7 | dynamic |
e0d5-5e51-ea27 | 34 | Eth0/0/11 | dynamic |
f000-003f-64a8 | 24 | Eth0/0/14 | dynamic |
4419-b649-86fc | 24 | Eth0/0/14 | dynamic |
4419-b649-86fd | 24 | Eth0/0/14 | dynamic |
0492-265b-262c | 15 | Eth0/0/5 | dynamic |
f4b5-2024-f19b | 34 | Eth0/0/11 | dynamic |
e0d5-5efa-1b79 | 100 | Eth0/0/24 | dynamic |
f000-006c-4574 | 34 | Eth0/0/2 | dynamic |
5475-959c-548b | 34 | Eth0/0/14 | dynamic |
4419-b649-8709 | 24 | Eth0/0/14 | dynamic |
4419-b649-870a | 24 | Eth0/0/14 | dynamic |
4419-b649-870f | 24 | Eth0/0/14 | dynamic |
4419-b649-8705 | 24 | Eth0/0/14 | dynamic |
4419-b649-8706 | 24 | Eth0/0/14 | dynamic |
4419-b649-8718 | 24 | Eth0/0/14 | dynamic |
4419-b649-871c | 24 | Eth0/0/14 | dynamic |
4419-b649-8714 | 24 | Eth0/0/14 | dynamic |
4419-b649-8716 | 24 | Eth0/0/14 | dynamic |
4419-b649-8717 | 24 | Eth0/0/14 | dynamic |
4419-b649-87da | 24 | Eth0/0/14 | dynamic |
4419-b649-87f4 | 24 | Eth0/0/14 | dynamic |
4cf5-dc97-3677 | 17 | Eth0/0/7 | dynamic |
e062-90f6-66b9 | 34 | Eth0/0/11 | dynamic |
4cf5-dc97-366e | 26 | Eth0/0/16 | dynamic |
020f-ed77-7960 | 14 | Eth0/0/11 | dynamic |
acb9-2f46-05f5 | 17 | Eth0/0/7 | dynamic |
4cbd-8f2c-9597 | 24 | Eth0/0/14 | dynamic |
0c82-6858-7222 | 200 | GE0/0/3 | dynamic |
f000-006c-6648 | 26 | Eth0/0/16 | dynamic |
d258-42b8-7696 | 20 | Eth0/0/9 | dynamic |
b83a-080e-f650 | 20 | Eth0/0/9 | dynamic |
2cea-7fed-051c | 100 | Eth0/0/18 | dynamic |
849a-4059-b273 | 17 | Eth0/0/7 | dynamic |
44a6-42b6-c0a3 | 17 | Eth0/0/7 | dynamic |
f000-003f-669d | 26 | Eth0/0/16 | dynamic |
0017-6112-279e | 34 | Eth0/0/11 | dynamic |
0017-6112-27a1 | 26 | Eth0/0/16 | dynamic |
4cf5-dc97-36b4 | 17 | Eth0/0/7 | dynamic |
408d-5c8f-2aca | 15 | Eth0/0/5 | dynamic |
4419-b649-8498 | 24 | Eth0/0/14 | dynamic |
a85e-45a0-0b0e | 34 | Eth0/0/14 | dynamic |
4cf5-dc97-3695 | 17 | Eth0/0/14 | dynamic |
0020-6ba3-4d7c | 20 | Eth0/0/9 | dynamic |
f000-003f-669c | 87 | Eth0/0/14 | dynamic |
4cbd-8f2c-957c | 24 | Eth0/0/14 | dynamic |
4cbd-8f2c-9572 | 24 | Eth0/0/14 | dynamic |
a85e-45a0-0ace | 20 | Eth0/0/9 | dynamic |
4419-b649-8575 | 24 | Eth0/0/14 | dynamic |
c051-7ea4-099f | 34 | Eth0/0/14 | dynamic |
a85e-45a0-0ab7 | 34 | Eth0/0/2 | dynamic |
2428-fddc-be9d | 26 | Eth0/0/16 | dynamic |
e062-90c9-1712 | 34 | Eth0/0/11 | dynamic |
f000-006c-67ee | 34 | Eth0/0/11 | dynamic |
d45d-6439-a7a3 | 20 | Eth0/0/9 | dynamic |
f4b5-2024-f365 | 34 | Eth0/0/11 | dynamic |
4419-b649-85b6 | 24 | Eth0/0/14 | dynamic |
b42e-997a-2570 | 34 | Eth0/0/11 | dynamic |
4ced-fb6c-ef9f | 15 | Eth0/0/5 | dynamic |
e86a-642e-0446 | 20 | Eth0/0/9 | dynamic |
0017-6112-a93b | 34 | Eth0/0/11 | dynamic |
b42e-997a-2550 | 34 | Eth0/0/11 | dynamic |
f000-003b-485d | 34 | Eth0/0/11 | dynamic |
4cbd-8fd5-db1e | 34 | Eth0/0/11 | dynamic |
4cbd-8f79-1b84 | 34 | Eth0/0/11 | dynamic |
f000-003b-487f | 34 | Eth0/0/11 | dynamic |
4cbd-8f79-1b80 | 34 | Eth0/0/11 | dynamic |
f000-006c-6811 | 26 | Eth0/0/16 | dynamic |
6461-4046-fc4d | 26 | Eth0/0/16 | dynamic |
f000-003b-4854 | 24 | Eth0/0/14 | dynamic |
f000-003b-489a | 34 | Eth0/0/11 | dynamic |
74d4-356d-891e | 34 | Eth0/0/11 | dynamic |
4cbd-8f79-1b76 | 34 | Eth0/0/11 | dynamic |
4cbd-8f79-1b7a | 34 | Eth0/0/11 | dynamic |
4cbd-8fd5-dbd4 | 34 | Eth0/0/11 | dynamic |
e062-90dd-0803 | 34 | Eth0/0/11 | dynamic |
8ca6-df43-6b43 | 15 | Eth0/0/5 | dynamic |
4cbd-8f79-1b53 | 34 | Eth0/0/11 | dynamic |
f000-003b-48a1 | 34 | Eth0/0/11 | dynamic |
f000-003f-589e | 24 | Eth0/0/14 | dynamic |
40b0-765f-6e47 | 20 | Eth0/0/9 | dynamic |
4cbd-8f79-1b2a | 34 | Eth0/0/11 | dynamic |
f000-003f-58bf | 87 | Eth0/0/14 | dynamic |
00e0-4c75-1451 | 34 | Eth0/0/11 | dynamic |
0c9d-920f-c668 | 20 | Eth0/0/9 | dynamic |
4cbd-8fd5-da70 | 24 | Eth0/0/14 | dynamic |
4cbd-8fd5-da71 | 26 | Eth0/0/16 | dynamic |
f000-003b-4931 | 26 | Eth0/0/16 | dynamic |
e062-9032-a966 | 34 | Eth0/0/11 | dynamic |
4cbd-8fd5-da6e | 34 | Eth0/0/11 | dynamic |
f000-003b-4935 | 34 | Eth0/0/11 | dynamic |
f000-003b-494a | 34 | Eth0/0/11 | dynamic |
e062-908d-9995 | 24 | Eth0/0/14 | dynamic |
8269-c0e2-cbe1 | 14 | Eth0/0/11 | dynamic |
e062-902f-e906 | 34 | Eth0/0/11 | dynamic |
081f-7130-405c | 26 | Eth0/0/16 | dynamic |
0030-1bba-02db | 34 | Eth0/0/11 | dynamic |
e062-90bb-c9b5 | 24 | Eth0/0/14 | dynamic |
081f-7150-30de | 34 | Eth0/0/11 | dynamic |
f4ee-0823-956a | 100 | Eth0/0/24 | dynamic |
e0d5-5ed5-47ee | 34 | Eth0/0/2 | dynamic |
7297-ae6a-3527 | 20 | Eth0/0/9 | dynamic |
b42e-99ea-043c | 34 | Eth0/0/14 | dynamic |
4cbd-8fd5-da95 | 34 | Eth0/0/11 | dynamic |
4cbd-8fd3-2aa9 | 34 | Eth0/0/11 | dynamic |
4cbd-8fd5-da85 | 24 | Eth0/0/14 | dynamic |
4cbd-8fd5-dab2 | 34 | Eth0/0/11 | dynamic |
4cbd-8fd5-dab0 | 34 | Eth0/0/11 | dynamic |
8ca6-dfc4-490d | 100 | Eth0/0/24 | dynamic |
4cbd-8f79-19ca | 24 | Eth0/0/14 | dynamic |
00e0-4f03-c582 | 34 | Eth0/0/11 | dynamic |
4cbd-8f79-19ac | 34 | Eth0/0/11 | dynamic |
686d-bcf6-0e91 | 88 | Eth0/0/11 | dynamic |
5850-ed6d-2f7b | 34 | Eth0/0/2 | dynamic |
0017-6112-ab50 | 34 | Eth0/0/11 | dynamic |
f000-006b-da3e | 34 | Eth0/0/2 | dynamic |
f4b5-203b-1eec | 26 | Eth0/0/16 | dynamic |
5850-ed6d-2f60 | 34 | Eth0/0/2 | dynamic |
4cbd-8f79-1968 | 34 | Eth0/0/11 | dynamic |
e062-90bb-da7a | 24 | Eth0/0/14 | dynamic |
2428-fdc1-7333 | 26 | Eth0/0/16 | dynamic |
807c-6202-b8a1 | 26 | Eth0/0/16 | dynamic |
7405-a563-fba3 | 34 | Eth0/0/14 | dynamic |
f4b5-203b-1e44 | 34 | Eth0/0/11 | dynamic |
8ce7-486e-bf80 | 87 | Eth0/0/14 | dynamic |
e062-90b0-4b6a | 34 | Eth0/0/11 | dynamic |
fcaa-1422-a331 | 34 | Eth0/0/11 | dynamic |
0840-f360-a0d8 | 34 | Eth0/0/11 | dynamic |
74d4-356c-8a6b | 15 | Eth0/0/5 | dynamic |
f4b5-2024-ef6b | 26 | Eth0/0/16 | dynamic |
0017-6111-1ad0 | 34 | Eth0/0/14 | dynamic |
4ced-fb41-fba5 | 15 | Eth0/0/5 | dynamic |
00e0-4c3c-a0db | 26 | Eth0/0/16 | dynamic |
7486-e218-0a99 | 34 | Eth0/0/2 | dynamic |
7486-e218-1afe | 34 | Eth0/0/2 | dynamic |
e0d5-5efc-0288 | 34 | Eth0/0/14 | dynamic |
00d8-610c-3d58 | 34 | Eth0/0/14 | dynamic |
807c-62bb-4e1e | 20 | Eth0/0/9 | dynamic |
408d-5ce7-408c | 26 | Eth0/0/16 | dynamic |
5404-a6a1-7fb1 | 20 | Eth0/0/9 | dynamic |
e062-908a-bdc9 | 34 | Eth0/0/11 | dynamic |
00e0-66ff-1b5f | 100 | Eth0/0/19 | dynamic |
1012-fb7a-2656 | 26 | Eth0/0/16 | dynamic |
94d9-b36c-2a90 | 26 | Eth0/0/16 | dynamic |
00e0-4c57-9160 | 20 | Eth0/0/9 | dynamic |
b42e-9968-4090 | 26 | Eth0/0/16 | dynamic |
24cf-24a4-2da8 | 34 | Eth0/0/14 | dynamic |
4ced-fb61-b9ae | 34 | Eth0/0/11 | dynamic |
00e0-4c85-826d | 34 | Eth0/0/14 | dynamic |
70b5-e874-56e5 | 26 | Eth0/0/16 | dynamic |
4cbd-8f90-6d54 | 26 | Eth0/0/16 | dynamic |
00e0-4d95-1326 | 34 | Eth0/0/2 | dynamic |
f000-003a-beab | 24 | Eth0/0/14 | dynamic |
f000-003a-beb3 | 34 | Eth0/0/11 | dynamic |
f000-003a-beaf | 34 | Eth0/0/11 | dynamic |
9ca6-15d8-f7a1 | 100 | Eth0/0/24 | dynamic |
00e0-7070-de71 | 34 | Eth0/0/14 | dynamic |
f000-003a-bec5 | 34 | Eth0/0/11 | dynamic |
8630-12f1-da35 | 20 | Eth0/0/9 | dynamic |
f000-003a-bec0 | 24 | Eth0/0/14 | dynamic |
f000-003a-bee5 | 34 | Eth0/0/11 | dynamic |
b42e-991d-4210 | 34 | Eth0/0/11 | dynamic |
2428-fdc1-76a4 | 88 | Eth0/0/11 | dynamic |
2428-fdc1-76e4 | 20 | Eth0/0/9 | dynamic |
2428-fdc1-76d0 | 34 | Eth0/0/14 | dynamic |
f4b5-2024-ebaf | 34 | Eth0/0/11 | dynamic |
2428-fdc1-76c7 | 26 | Eth0/0/16 | dynamic |
2428-fdc1-76cc | 26 | Eth0/0/16 | dynamic |
2428-fdc1-7699 | 26 | Eth0/0/16 | dynamic |
2428-fdc1-7698 | 26 | Eth0/0/16 | dynamic |
b42e-99e6-329b | 34 | Eth0/0/11 | dynamic |
00e0-4c52-032d | 17 | Eth0/0/7 | dynamic |
b42e-99e6-3279 | 26 | Eth0/0/16 | dynamic |
309c-237d-6c73 | 34 | Eth0/0/11 | dynamic |
accb-51de-42e4 | 26 | Eth0/0/16 | dynamic |
70b5-e874-5732 | 15 | Eth0/0/5 | dynamic |
arp清单
来自核心交换机
ip | mac | port | vlan |
---|---|---|---|
192.168.254.6 | 80fb-06c9-6db9 | Vlanif1 | |
192.168.254.5 | Incomplete | Eth0/0/2 | 1 |
192.168.11.1 | 80fb-06c9-6db9 | Vlanif11 | |
192.168.12.1 | 80fb-06c9-6db9 | Vlanif12 | |
192.168.13.1 | 80fb-06c9-6db9 | Vlanif13 | |
192.168.14.1 | 80fb-06c9-6db9 | Vlanif14 | |
192.168.14.14 | 020f-ed77-7960 | Eth0/0/11 | 14 |
192.168.14.13 | 8269-c0e2-cbe1 | Eth0/0/11 | 14 |
192.168.15.1 | 80fb-06c9-6db9 | Vlanif15 | |
192.168.15.254 | 8ca6-df43-6b43 | Eth0/0/5 | 15 |
192.168.15.163 | 0492-265b-262c | Eth0/0/5 | 15 |
192.168.15.63 | 4ced-fb41-fba5 | Eth0/0/5 | 15 |
192.168.15.88 | b42e-99e6-3c49 | Eth0/0/5 | 15 |
192.168.15.200 | 408d-5c8f-2aca | Eth0/0/5 | 15 |
192.168.15.178 | 18c0-4d1b-c69e | Eth0/0/5 | 15 |
192.168.15.21 | 74d4-356c-8a6b | Eth0/0/5 | 15 |
192.168.15.177 | 4ced-fb6c-ef9f | Eth0/0/5 | 15 |
192.168.16.1 | 80fb-06c9-6db9 | Vlanif16 | |
192.168.17.1 | 80fb-06c9-6db9 | Vlanif17 | |
192.168.17.152 | acb9-2f46-05f5 | Eth0/0/7 | 17 |
192.168.17.4 | 4cf5-dc97-36b4 | Eth0/0/7 | 17 |
192.168.17.150 | 44a6-42b6-c0a3 | Eth0/0/7 | 17 |
192.168.17.249 | 849a-4059-b273 | Eth0/0/7 | 17 |
192.168.17.11 | 4cf5-dc97-3677 | Eth0/0/7 | 17 |
192.168.17.172 | 4cf5-dc97-3421 | Eth0/0/7 | 17 |
192.168.17.23 | 4cf5-dc97-3695 | Eth0/0/14 | 17 |
192.168.17.55 | b42e-9979-de61 | Eth0/0/7 | 17 |
192.168.17.54 | 00e0-4c52-032d | Eth0/0/7 | 17 |
192.168.18.1 | 80fb-06c9-6db9 | Vlanif18 | |
192.168.19.1 | 80fb-06c9-6db9 | Vlanif19 | |
192.168.20.1 | 80fb-06c9-6db9 | Vlanif20 | |
192.168.20.2 | 4cf5-dc97-3471 | Eth0/0/9 | 20 |
192.168.20.3 | 4cf5-dc9a-c39e | Eth0/0/9 | 20 |
192.168.20.200 | 0020-6ba3-4d7c | Eth0/0/9 | 20 |
192.168.20.188 | 807c-62bb-4e1e | Eth0/0/9 | 20 |
192.168.20.64 | 2428-fdc1-76e4 | Eth0/0/9 | 20 |
192.168.20.85 | f46d-2fcf-c3ed | Eth0/0/9 | 20 |
192.168.20.142 | 309c-2365-209e | Eth0/0/9 | 20 |
192.168.20.65 | 40b0-765f-6e47 | Eth0/0/9 | 20 |
192.168.20.74 | d45d-6439-a7a3 | Eth0/0/9 | 20 |
192.168.20.182 | 408d-5c1d-9e3e | Eth0/0/9 | 20 |
192.168.20.134 | e86a-642e-0446 | Eth0/0/9 | 20 |
192.168.20.116 | 00e0-4c57-9160 | Eth0/0/9 | 20 |
192.168.20.198 | 309c-23b9-101a | Eth0/0/9 | 20 |
192.168.20.66 | 0c9d-920f-c668 | Eth0/0/9 | 20 |
192.168.20.131 | e0d5-5ef6-fdd6 | Eth0/0/9 | 20 |
192.168.20.101 | a85e-45a0-0ace | Eth0/0/9 | 20 |
192.168.20.187 | 5404-a6a1-7fb1 | Eth0/0/9 | 20 |
192.168.21.1 | 80fb-06c9-6db9 | Vlanif21 | |
192.168.22.1 | 80fb-06c9-6db9 | Vlanif22 | |
192.168.24.1 | 80fb-06c9-6db9 | Vlanif24 | |
192.168.24.10 | Incomplete | Eth0/0/2 | 24 |
192.168.25.1 | 80fb-06c9-6db9 | Vlanif25 | |
192.168.6.1 | 80fb-06c9-6db9 | Vlanif26 | |
192.168.6.59 | 2428-fdc1-7698 | Eth0/0/16 | 26 |
192.168.6.5 | 2428-fddc-be9d | Eth0/0/16 | 26 |
192.168.6.16 | 2428-fdc1-7333 | Eth0/0/16 | 26 |
192.168.6.216 | 5cde-3414-a887 | Eth0/0/16 | 26 |
192.168.6.3 | 1012-fb7a-2656 | Eth0/0/16 | 26 |
192.168.6.130 | 4cbd-8fcc-90b6 | Eth0/0/16 | 26 |
192.168.6.124 | 4cbd-8fd5-da71 | Eth0/0/16 | 26 |
192.168.6.215 | 6461-4046-fc4d | Eth0/0/16 | 26 |
192.168.6.247 | 4cbd-8f90-6d54 | Eth0/0/16 | 26 |
192.168.6.168 | 0017-6112-27a1 | Eth0/0/16 | 26 |
192.168.6.250 | 807c-6202-b8a1 | Eth0/0/16 | 26 |
192.168.6.19 | 2428-fdc1-76cc | Eth0/0/16 | 26 |
192.168.6.18 | 2428-fdc1-76c7 | Eth0/0/16 | 26 |
192.168.6.78 | 94d9-b36c-2a90 | Eth0/0/16 | 26 |
192.168.6.13 | f000-006c-6648 | Eth0/0/16 | 26 |
192.168.6.7 | f000-003f-669d | Eth0/0/16 | 26 |
192.168.6.4 | f000-003b-4931 | Eth0/0/16 | 26 |
192.168.6.9 | 4cf5-dc97-343e | Eth0/0/16 | 26 |
192.168.6.100 | accb-51de-42e4 | Eth0/0/16 | 26 |
192.168.6.164 | 2428-fdc1-7699 | Eth0/0/16 | 26 |
192.168.6.2 | 4cf5-dc97-344e | Eth0/0/16 | 26 |
192.168.6.11 | 4cf5-dc97-366e | Eth0/0/16 | 26 |
192.168.6.198 | 081f-7130-405c | Eth0/0/16 | 26 |
192.168.6.14 | f000-006c-6811 | Eth0/0/16 | 26 |
192.168.6.25 | 408d-5ce7-408c | Eth0/0/16 | 26 |
192.168.6.184 | b42e-99e6-3279 | Eth0/0/16 | 26 |
192.168.6.31 | f4b5-203b-2404 | Eth0/0/16 | 26 |
192.168.6.21 | b42e-9971-29cd | Eth0/0/16 | 26 |
192.168.6.172 | f4b5-203b-1eec | Eth0/0/16 | 26 |
192.168.6.171 | f4b5-2024-ef6b | Eth0/0/16 | 26 |
192.168.6.102 | e0d5-5efc-0d5f | Eth0/0/16 | 26 |
192.168.6.45 | 0c9d-92cc-8c94 | Eth0/0/16 | 26 |
192.168.6.60 | 00e0-4c3c-a0db | Eth0/0/16 | 26 |
192.168.6.128 | Incomplete | Eth0/0/2 | 26 |
192.168.28.1 | 80fb-06c9-6db9 | Vlanif28 | |
192.168.34.1 | 80fb-06c9-6db9 | Vlanif34 | |
192.168.34.174 | 081f-7150-30de | Eth0/0/11 | 34 |
192.168.34.109 | b42e-997a-2570 | Eth0/0/11 | 34 |
192.168.34.44 | fcaa-1422-a331 | Eth0/0/11 | 34 |
192.168.34.4 | b42e-99e6-329b | Eth0/0/11 | 34 |
192.168.34.166 | 7405-a563-fba3 | Eth0/0/14 | 34 |
192.168.34.243 | 24cf-24a4-2da8 | Eth0/0/14 | 34 |
192.168.34.26 | b42e-99ea-043c | Eth0/0/14 | 34 |
192.168.34.7 | 00e0-4f03-2e24 | Eth0/0/14 | 34 |
192.168.34.78 | e0d5-5efc-0288 | Eth0/0/14 | 34 |
192.168.34.211 | 0017-6111-1ad0 | Eth0/0/14 | 34 |
192.168.34.90 | 00e0-7070-de71 | Eth0/0/14 | 34 |
192.168.34.8 | b42e-9968-3f8c | Eth0/0/14 | 34 |
192.168.34.254 | 5475-959c-548b | Eth0/0/14 | 34 |
192.168.34.64 | 2428-fdc1-76d0 | Eth0/0/14 | 34 |
192.168.34.39 | c051-7ea4-099f | Eth0/0/14 | 34 |
192.168.34.202 | 0017-6112-ab50 | Eth0/0/11 | 34 |
192.168.34.203 | 0017-6112-a93b | Eth0/0/11 | 34 |
192.168.34.196 | 0840-f360-a0d8 | Eth0/0/11 | 34 |
192.168.34.99 | e247-1f2c-0f6d | Eth0/0/11 | 34 |
192.168.34.205 | 0017-6112-279e | Eth0/0/11 | 34 |
192.168.34.111 | f4b5-2024-f365 | Eth0/0/11 | 34 |
192.168.34.158 | 00e0-4f03-c582 | Eth0/0/11 | 34 |
192.168.34.180 | f4b5-2024-f19b | Eth0/0/11 | 34 |
192.168.34.227 | b42e-9944-2e6e | Eth0/0/14 | 34 |
192.168.34.75 | f4b5-203b-1e44 | Eth0/0/11 | 34 |
192.168.34.176 | 00e0-4c85-826d | Eth0/0/14 | 34 |
192.168.34.188 | b42e-997a-2550 | Eth0/0/11 | 34 |
192.168.34.47 | 70b5-e874-5844 | Eth0/0/11 | 34 |
192.168.34.77 | 309c-237d-6c73 | Eth0/0/11 | 34 |
192.168.34.84 | 00e0-4c37-ace4 | Eth0/0/11 | 34 |
192.168.34.81 | f4b5-2024-ebaf | Eth0/0/11 | 34 |
192.168.34.147 | a85e-45a0-0b0e | Eth0/0/14 | 34 |
192.168.34.155 | b42e-991d-4210 | Eth0/0/11 | 34 |
192.168.34.191 | 74d4-356d-891e | Eth0/0/11 | 34 |
192.168.34.128 | b42e-9904-6dda | Eth0/0/2 | 34 |
192.168.34.125 | e0d5-5e6d-bd23 | Eth0/0/2 | 34 |
192.168.34.244 | c06d-ed2c-d964 | Eth0/0/2 | 34 |
192.168.34.56 | 00e0-4d95-1326 | Eth0/0/2 | 34 |
192.168.34.107 | 00e0-4cff-2c14 | Eth0/0/11 | 34 |
192.168.34.212 | 7486-e218-1afe | Eth0/0/2 | 34 |
192.168.34.79 | f4b5-2024-f44c | Eth0/0/11 | 34 |
192.168.34.46 | 8469-9386-4585 | Eth0/0/2 | 34 |
192.168.34.148 | a85e-45a0-0ab7 | Eth0/0/2 | 34 |
192.168.34.45 | e0d5-5ed5-47ee | Eth0/0/2 | 34 |
192.168.34.72 | e0d5-5e51-ea27 | Eth0/0/11 | 34 |
192.168.34.150 | 6045-cb7f-c902 | Eth0/0/14 | 34 |
192.168.34.70 | 00e0-4c75-1451 | Eth0/0/11 | 34 |
192.168.34.74 | e0d5-5ec3-191d | Eth0/0/11 | 34 |
192.168.34.10 | 00d8-610c-3d58 | Eth0/0/14 | 34 |
192.168.34.153 | f484-8df7-5db7 | Eth0/0/2 | 34 |
192.168.34.121 | 408d-5cfd-e739 | Eth0/0/14 | 34 |
192.168.87.1 | 80fb-06c9-6db9 | Vlanif87 | |
192.168.87.97 | f000-003f-58bf | Eth0/0/14 | 87 |
192.168.87.25 | f000-003f-669c | Eth0/0/14 | 87 |
192.168.87.250 | 8ce7-486e-bf80 | Eth0/0/14 | 87 |
192.168.88.1 | 80fb-06c9-6db9 | Vlanif88 | |
192.168.88.253 | 4cbd-8f90-7198 | Eth0/0/14 | 88 |
192.168.88.250 | 4cbd-8f90-719c | Eth0/0/11 | 88 |
192.168.88.251 | 4cbd-8f90-71a7 | Eth0/0/11 | 88 |
192.168.88.131 | 2428-fdc1-76a4 | Eth0/0/11 | 88 |
192.168.88.254 | 686d-bcf6-0e91 | Eth0/0/11 | 88 |
192.168.88.160 | Incomplete | Eth0/0/2 | 88 |
192.168.88.5 | Incomplete | Eth0/0/2 | 88 |
192.168.88.161 | Incomplete | Eth0/0/2 | 88 |
192.168.88.25 | Incomplete | Eth0/0/2 | 88 |
192.168.88.31 | Incomplete | Eth0/0/2 | 88 |
192.168.88.59 | Incomplete | Eth0/0/2 | 88 |
192.168.88.7 | Incomplete | Eth0/0/2 | 88 |
192.168.0.1 | 80fb-06c9-6db9 | Vlanif100 | |
192.168.0.107 | 2cea-7fed-051c | Eth0/0/18 | 100 |
192.168.0.114 | f4b5-2018-50e7 | Eth0/0/21 | 100 |
192.168.0.45 | 2cea-7feb-b118 | Eth0/0/20 | 100 |
192.168.0.11 | 0017-6112-b286 | Eth0/0/22 | 100 |
192.168.0.189 | 8ca6-dfc4-490d | Eth0/0/24 | 100 |
192.168.0.252 | f4ee-0823-956a | Eth0/0/24 | 100 |
192.168.0.99 | e0d5-5efa-1b79 | Eth0/0/24 | 100 |
192.168.0.120 | 00e0-66ff-1b5f | Eth0/0/19 | 100 |
10.0.0.2 | 80fb-06c9-6db9 | Vlanif200 | |
192.168.201.1 | 80fb-06c9-6db9 | Vlanif201 |
无线
无线 | 密码 | 备注 |
---|---|---|
wsf-lou | a12345678a | 覆盖范围:大厅,小会议,大办公室,行政办公室 |
left2lou | a12345678a | 覆盖范围:二楼会议室,设计办公室 |
sale-true | 63770535 | 覆盖范围:二楼财务办公室,总经理办公室 |
漫游测试
安全防护
- 纵向防护入口防火墙
- 三层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访问
申请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
磁盘管理
启动菜单
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-R440 | 192.168.0.123 | OA系统 |
Edge-R740xd | 192.168.0.48 | 金蝶云 |
Edge-R740 | 192.168.0.45 | k3 |
虚拟化服务器管理
虚拟化 管理入口 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电脑为例
新建连接
2.连接
3.测试
打开一下地址测试
http://192.168.0.48/k3Cloud
http://192.168.11.111/cgi-bin/luci/
http://192.168.0.121:9090/
临时账号
用户名 | 密码 | 备注 |
---|---|---|
oq-nb | * | 宁波外贸使用 |
wsf | ***** | 临时使用 |
设置金蝶客户端
路由互通
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的安装源
- 定制下载建议
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
外网管理
管理地址
名称 | 地址 | 备注 |
---|---|---|
公司公网ip | 112.16.172.14 (中国移动) | OA部署在着ip上面 (OA内网部署) |
公司网站 | 网站 英文站 | 属于香港43.224.155.16/英文站104.21.56.218 |
OA | oa登入 / 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 | 原件电子版彩色照片 |
网站LOGO | 1 | |
网站标题 | 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.247 | admin | 前门卫 | 预 览 |
电商监控主机 | 192.168.44.241 | admin | 电商办公室 | |
1-2楼外围监控 | 192.168.88.250 | admin | 1号楼挂壁 | 含部分电商 |
3-5号楼通道 | 192.168.88.251 | admin | 无回放 | |
9,11号楼 | 192.168.88.253 | admin | 10号楼 | DS-7816N-K2 |
5,7号楼 | 192.168.88.254 | admin | (7号楼挂壁) | 吸烟室 |
各个办公室 | 192.168.17.249 | admin | 行政办公室 | 预 览 |
室外过道 | 192.168.88.251 | admin | 预 览 | |
注塑车间 | 192.168.87.250 | admin | 预 览 DS-8632N-E8 | |
充调,焊接 | 192.168.6.250 | admin | 后门卫 | DS-7932-R4 |
充调 | 192.168.6.100 | admin | 预 览 | |
机房 | 192.168.13.188 | admin | 机房 | 预览 |
总经理 | 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.211 | 11号楼 | |
打卡机 | 192.168.34.202 | 5号楼 | |
打卡机 | 192.168.34.203 | 1号楼 | |
打卡机 | 192.168.34.205 | 7号楼 | |
打印复印一体机 | 192.168.20.200 | 二楼办公室 | http://192.168.20.200/wcd/abbr.xml bizhub C368 |
食堂刷卡机 | 192.168.17.203 | 食堂 | ZKEpos消费管理系统 |
车间扫码机器 | 192.168.14.14 | 7号 | 安卓系统 |
一体机设置
使用扫描功能需要配置图片上传服务地址比如FTP或smb
苹果电脑驱动 官网地址 https://www.konicaminolta.com.cn/business/support/drivers/
考勤机
考勤机通信端口 4370
nmap -T5 -p 4370 192.168.25.*
考勤机只记录一部分人员信息,每个考勤设备记录数有限
刷卡机
每一台设备数据都有需要同步后才能正常使用
监控设备列表
海康设备
设备类型 | IP地址 | 子网掩码 | 物理地址 |
---|---|---|---|
DS-7832N-K2 | 192.168.17.249 | 255.255.255.0 | 84-9a-40-59-b2-73 |
DS-8632N-E8 | 192.168.87.250 | 255.255.255.0 | 8c-e7-48-6e-bf-80 |
DS-7832N-K2 | 192.168.88.254 | 255.255.255.0 | 68-6d-bc-f6-0e-91 |
DS-7808N-K1/8P(D) | 192.168.34.244 | 255.255.255.0 | c0-6d-ed-2c-d9-64 |
DS-7104N-F1(B) | 192.168.6.100 | 255.255.255.0 | ac-cb-51-de-42-e4 |
DS-7932N-R4(B) | 192.168.6.250 | 255.255.255.0 | 80-7c-62-02-b8-a1 |
DS-7816N-K2 | 192.168.88.253 | 255.255.255.0 | 4c-bd-8f-90-71-98 |
DS-7816N-K2 | 192.168.88.250 | 255.255.255.0 | 4c-bd-8f-90-71-9c |
DS-7816N-K2 | 192.168.88.251 | 255.255.255.0 | 4c-bd-8f-90-71-a7 |
DS-7816N-K2 | 192.168.6.247 | 255.255.255.0 | 4c-bd-8f-90-6d-54 |
HK-IPCAM-HI | 192.168.6.8 | 255.255.255.0 | f0-00-00-3a-be-b3 |
HK-IPCAM-HI | 192.168.6.12 | 255.255.255.0 | f0-00-00-3a-be-e5 |
HK-IPCAM-HI | 192.168.6.29 | 255.255.255.0 | f0-00-00-3a-be-af |
HK-IPCAM-HI | 192.168.6.28 | 255.255.255.0 | f0-00-00-3b-48-5d |
HK-IPCAM-HI | 192.168.6.24 | 255.255.255.0 | f0-00-00-3a-be-ab |
HK-IPCAM-HI | 192.168.6.32 | 255.255.255.0 | f0-00-00-3a-be-c0 |
HK-IPCAM-HI | 192.168.6.6 | 255.255.255.0 | f0-00-00-3a-be-c5 |
HK-IPCAM-HI | 192.168.6.15 | 255.255.255.0 | f0-00-00-3b-48-a1 |
HK-IPCAM-HI | 192.168.6.22 | 255.255.255.0 | f0-00-00-3b-48-54 |
HK-IPCAM-HI | 192.168.6.20 | 255.255.255.0 | f0-00-00-3b-48-7f |
HK-IPCAM-HI | 192.168.6.7 | 255.255.255.0 | f0-00-00-3f-66-9d |
HK-IPCAM-HI | 192.168.6.17 | 255.255.255.0 | f0-00-00-3b-49-35 |
HK-IPCAM-HI | 192.168.6.14 | 255.255.255.0 | f0-00-00-6c-68-11 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-82-22-58 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-2f-e9-06 |
HK-IPCAM-HI | 192.168.87.58 | 255.255.255.0 | f0-00-00-3f-64-a8 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-87-a1-5a |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-b0-4b-6a |
HK-IPCAM-HI | 192.168.6.13 | 255.255.255.0 | f0-00-00-6c-66-48 |
HK-IPCAM-HI | 192.168.88.109 | 255.255.255.0 | f0-00-00-6c-81-67 |
HK-IPCAM-HI | 192.168.87.245 | 255.255.255.0 | f0-00-00-3f-58-9e |
HK-IPCAM-HI | 192.168.87.97 | 255.255.255.0 | f0-00-00-3f-58-bf |
DS-2CD1201D-I3 | 192.168.6.128 | 255.255.255.0 | e0-62-90-8d-99-95 |
HK-IPCAM-HI | 192.168.88.105 | 255.255.255.0 | f0-00-00-6c-81-55 |
HK-IPCAM-HI | 192.168.6.4 | 255.255.255.0 | f0-00-00-3b-49-31 |
HK-IPCAM-HI | 192.168.88.2 | 255.255.255.0 | f0-00-00-6b-da-3e |
HK-IPCAM-HI | 192.168.87.25 | 255.255.255.0 | f0-00-00-3f-66-9c |
DS-2CD3T10D-I3 | 192.168.88.52 | 255.255.255.0 | 4c-bd-8f-d5-da-6e |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-dd-08-03 |
DS-2CD3T10D-I3 | 192.168.88.74 | 255.255.255.0 | 4c-bd-8f-79-19-ac |
DS-2CD3T10D-I3 | 192.168.88.63 | 255.255.255.0 | 4c-bd-8f-d5-db-d4 |
DS-2SC3Q120MY-TE | 192.168.17.11 | 255.255.255.0 | 4c-f5-dc-97-36-77 |
HK-IPCAM-HI | 192.168.88.3 | 255.255.255.0 | f0-00-00-6c-45-74 |
DS-2CD3T10D-I3 | 192.168.88.71 | 255.255.255.0 | 4c-bd-8f-79-1b-80 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-f6-66-b9 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-eb-04-92 |
HK-IPCAM-HI | 192.168.6.30 | 255.255.255.0 | f0-00-00-3b-49-4a |
DS-2CD3T10D-I3 | 192.168.88.20 | 255.255.255.0 | 4c-bd-8f-d3-2a-a9 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-32-a9-66 |
HK-IPCAM-HI | 192.168.88.106 | 255.255.255.0 | f0-00-00-6c-67-ee |
DS-2CD3T10D-I3 | 192.168.88.16 | 255.255.255.0 | 4c-bd-8f-79-1b-53 |
DS-2CD3232D-I5 | 192.168.87.12 | 255.255.255.0 | 44-19-b6-49-87-f4 |
DS-2SC3Q120MY-TE | 192.168.17.4 | 255.255.255.0 | 4c-f5-dc-97-36-b4 |
DS-2SC3Q120MY-TE | 192.168.17.152 | 255.255.255.0 | ac-b9-2f-46-05-f5 |
DS-2CD3232D-I5 | 192.168.87.3 | 255.255.255.0 | 44-19-b6-49-84-98 |
DS-2CD3232D-I5 | 192.168.87.15 | 255.255.255.0 | 44-19-b6-49-83-af |
DS-2CD3232D-I5 | 192.168.87.20 | 255.255.255.0 | 44-19-b6-49-86-09 |
DS-2CD3232D-I5 | 192.168.87.13 | 255.255.255.0 | 44-19-b6-49-87-1c |
DS-2SC3Q120MY-TE | 192.168.17.151 | 255.255.255.0 | 4c-f5-dc-97-35-a9 |
DS-2CD3T10D-I3 | 192.168.254.5 | 255.255.255.0 | 4c-bd-8f-79-1b-76 |
DS-2CD3T25D-I3 | 192.168.88.5 | 255.255.255.0 | 4c-bd-8f-ba-d0-12 |
DS-2CD1201D-I3 | 192.168.6.128 | 255.255.255.0 | e0-62-90-bb-c9-b5 |
DS-2SC3Q120MY-TE | 192.168.6.11 | 255.255.255.0 | 4c-f5-dc-97-36-6e |
DS-2CD3T10D-I3 | 192.168.88.27 | 255.255.255.0 | 4c-bd-8f-79-19-ca |
DS-2CD3T10D-I3 | 192.168.88.24 | 255.255.255.0 | 4c-bd-8f-d5-da-70 |
DS-2CD3T10D-I3 | 192.168.88.30 | 255.255.255.0 | 4c-bd-8f-2c-95-72 |
DS-2CD3T10D-I3 | 192.168.88.25 | 255.255.255.0 | 4c-bd-8f-d5-da-85 |
HK-IPCAM-HI | 192.168.6.27 | 255.255.255.0 | f0-00-00-3b-48-9a |
DS-2CD3T10D-I3 | 192.168.6.130 | 255.255.255.0 | 4c-bd-8f-cc-90-b6 |
DS-2CD3T10D-I3 | 192.168.254.5 | 255.255.255.0 | 4c-bd-8f-cc-90-b8 |
DS-2CD3232D-I5 | 192.168.87.9 | 255.255.255.0 | 44-19-b6-49-87-14 |
DS-2CD3T10D-I3 | 192.168.88.26 | 255.255.255.0 | 4c-bd-8f-2c-95-97 |
DS-2SC3Q120MY-TE | 192.168.17.23 | 255.255.255.0 | 4c-f5-dc-97-36-95 |
DS-2SC3Q120MY-TE | 192.168.17.150 | 255.255.255.0 | 44-a6-42-b6-c0-a3 |
DS-2SC3Q120MY-TE | 192.168.6.2 | 255.255.255.0 | 4c-f5-dc-97-34-4e |
DS-2CD3232D-I5 | 192.168.87.10 | 255.255.255.0 | 44-19-b6-49-87-da |
DS-2CD3232D-I5 | 192.168.6.23 | 255.255.255.0 | 44-19-b6-49-85-75 |
DS-2SC3Q120MY-TE | 192.168.17.172 | 255.255.255.0 | 4c-f5-dc-97-34-21 |
DS-2CD3232D-I5 | 192.168.87.21 | 255.255.255.0 | 44-19-b6-49-87-17 |
DS-2CD3232D-I5 | 192.168.87.8 | 255.255.255.0 | 44-19-b6-49-87-16 |
DS-2CD3232D-I5 | 192.168.87.7 | 255.255.255.0 | 44-19-b6-49-87-05 |
DS-2CD3232D-I5 | 192.168.87.6 | 255.255.255.0 | 44-19-b6-49-87-09 |
DS-2CD3T10D-I3 | 192.168.88.59 | 255.255.255.0 | 4c-bd-8f-79-1b-84 |
DS-2CD3T10D-I3 | 192.168.88.28 | 255.255.255.0 | 4c-bd-8f-2c-95-7c |
DS-2CD3232D-I5 | 192.168.87.22 | 255.255.255.0 | 44-19-b6-49-86-fc |
DS-IPC-B12HV2-IA | 192.168.6.3 | 255.255.255.0 | 10-12-fb-7a-26-56 |
DS-2CD3232D-I5 | 192.168.87.14 | 255.255.255.0 | 44-19-b6-49-86-19 |
DS-IPC-B12HV2-IA | 192.168.6.164 | 255.255.255.0 | 24-28-fd-c1-76-99 |
DS-2CD3232D-I5 | 192.168.87.11 | 255.255.255.0 | 44-19-b6-49-87-06 |
DS-IPC-B12HV2-IA | 192.168.6.19 | 255.255.255.0 | 24-28-fd-c1-76-cc |
DS-2CD3232D-I5 | 192.168.87.4 | 255.255.255.0 | 44-19-b6-49-87-0f |
DS-2CD3232D-I5 | 192.168.87.5 | 255.255.255.0 | 44-19-b6-49-85-b6 |
DS-2CD3T10D-I3 | 192.168.88.19 | 255.255.255.0 | 4c-bd-8f-79-19-68 |
DS-2CD1201D-I3 | 192.168.88.7 | 255.255.255.0 | e0-62-90-8a-bd-c9 |
DS-IPC-B12H2-I | 192.168.88.161 | 255.255.255.0 | 58-50-ed-6d-2f-60 |
DS-2SC3Q120MY-TE | 192.168.6.9 | 255.255.255.0 | 4c-f5-dc-97-34-3e |
DS-2CD3232D-I5 | 192.168.87.17 | 255.255.255.0 | 44-19-b6-49-87-18 |
DS-2CD3T10D-I3 | 192.168.88.72 | 255.255.255.0 | 4c-bd-8f-79-1b-2a |
DS-IPC-B12HV2-IA | 192.168.6.5 | 255.255.255.0 | 24-28-fd-dc-be-9d |
DS-IPC-B12H2-I | 192.168.88.160 | 255.255.255.0 | 58-50-ed-6d-2f-7b |
DS-IPC-B12HV2-IA | 192.168.34.64 | 255.255.255.0 | 24-28-fd-c1-76-d0 |
DS-2CD3232D-I5 | 192.168.87.19 | 255.255.255.0 | 44-19-b6-49-86-fd |
DS-IPC-B12HV2-IA | 192.168.6.16 | 255.255.255.0 | 24-28-fd-c1-73-33 |
DS-2CD3232D-I5 | 192.168.87.2 | 255.255.255.0 | 44-19-b6-49-87-0a |
DS-2CD3T10D-I3 | 192.168.88.17 | 255.255.255.0 | 4c-bd-8f-d5-da-95 |
DS-IPC-B12HV2-IA | 192.168.34.39 | 255.255.255.0 | c0-51-7e-a4-09-9f |
DS-2CD3T10D-I3 | 192.168.88.70 | 255.255.255.0 | 4c-bd-8f-d5-da-b0 |
DS-IPC-B12HV2-IA | 192.168.6.59 | 255.255.255.0 | 24-28-fd-c1-76-98 |
DS-2CD3T10D-I3 | 192.168.88.55 | 255.255.255.0 | 4c-bd-8f-79-1b-7a |
DS-2CD3T10D-I3 | 192.168.88.31 | 255.255.255.0 | 4c-bd-8f-cc-90-24 |
DS-2CD3T10D-I3 | 192.168.88.73 | 255.255.255.0 | 4c-bd-8f-d5-da-b2 |
DS-2CD3T10D-I3 | 192.168.88.64 | 255.255.255.0 | 4c-bd-8f-d5-db-1e |
DS-2CD3T10D-I3 | 192.168.6.124 | 255.255.255.0 | 4c-bd-8f-d5-da-71 |
DS-IPC-B12HV2-IA | 192.168.88.131 | 255.255.255.0 | 24-28-fd-c1-76-a4 |
DS-IPC-B12HV2-IA | 192.168.6.18 | 255.255.255.0 | 24-28-fd-c1-76-c7 |
DS-2CD3T25D-I3 | 192.168.88.2 | 255.255.255.0 | 4c-bd-8f-ba-d0-22 |
DS-2CD1201D-I3 | 255.255.255.255 | 255.255.255.255 | e0-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
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共享
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