杀毒软件更新相关

简介:

用了一个杀毒软件的更新工具,不过它不会自动删除过时的。然后用刚学的python折腾了一个。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/python
 
import  os
import  shutil
 
xxx_dir  =  "/var/www/xxx/rel"
tmp_dir  =  {}
 
#run update
os.system( 'sh /etc/xxx/start.sh' )
 
for  i  in  os.listdir(xxx_dir):
   tmp  =  i.split( '_' )
   tmp_key  =  "_" .join(tmp[: - 1 ])
   if  tmp_dir.has_key(tmp_key):  #exist key value
     if  int (tmp_dir[tmp_key]) <  int (tmp[ - 1 ]):
       #shutil.rmtree 可以直接删除目录
       shutil.rmtree(xxx_dir  +  "/"  +  tmp_key  +  "_"  +  tmp_dir[tmp_key])
       tmp_dir[tmp_key]  =  tmp[ - 1 ]
     else :
       shutil.rmtree(xxx_dir  +  "/"  +  tmp_key  +  "_"  +  tmp[ - 1 ])
   else :
     tmp_dir[tmp_key]  =  tmp[ - 1 ]
 
print  "Update OK"


上面那个是用另一个工具更新时用的, 那个现在不好用了,又换了一个服务器. 然后再折腾一个脚本.

本来不想折腾,不过杀毒软件用相关许可去更新时会进程卡死,奇怪. 于是这样折腾了...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
 
import  urllib
import  hashlib
import  os
import  sys
import  time
 
www  =  "C:\\Python27\\nod32\\"
ser  =  "http://user:pass@update.com/"
num  =  0
 
def  reporthook(count, block_size, total_size):  #下载进度
     global  start_time
     if  count  = =  0 :
         start_time  =  time.time()
         return
     duration  =  time.time()  -  start_time
     progress_size  =  int (count  *  block_size)
     speed  =  int (progress_size  /  ( 1024  *  duration))
     percent  =  int (count  *  block_size  *  100  /  total_size)
     if  percent >  100 : percent  =  100
     sys.stdout.write( "\r...%d%%, %d KB, %d KB/s, %d seconds passed, Filesize %d KB"  %
                     (percent, progress_size / 1024 , speed, duration, total_size / 1024 ))
     sys.stdout.flush()
     
def  download(u, f, n):
     try :
         print  "\n" ,n,os.sep.join(f.split(os.sep)[ - 2 :])
         urllib.urlretrieve(u, f, reporthook)
     except :
         print  "Download %s Failed"  %  os.sep.join(f.split(os.sep)[ - 2 :])
         sys.exit( 1 )
 
# cb54b290a1a825b29403f7ad285837b4  /var/www/html/v4-rel-sta/mod_008_epfw/em008_64_n3.nup
if  __name__  = =  "__main__" :
     download(ser  +  "nod32.md5" , www  +  "nod32.md5" ,  0 )
     if  os.path.isfile(www  +  "nod32.md5" ):
         with  open (www  +  "nod32.md5" ) as f:
             for  i  in  f:
                 num  + =  1
                 if  "/var/www/html"  not  in  i:  continue
                 md5, url, filename, dirname  =  i.split()[ 0 ], ser  +  "/" .join(i.split()[ 1 ].split( "/" )[ 4 :]), www  +  os.sep.join(i.split()[ 1 ].split( "/" )[ 4 :]), www  +  os.sep.join(i.split()[ 1 ].split( "/" )[ 4 : - 1 ])
                 if  not  os.path.isdir(dirname):
                     os.makedirs(dirname)
                 if  os.path.isfile(filename):
                     # 查文件md5时,读文件要用 rb 模式
                     with  open (filename, "rb" ) as n:
                         if  hashlib.md5(n.read()).hexdigest() ! =  md5:
                             download(url, filename, num)
                 else :
                     download(url, filename, num)


另外:rsync 时 ssh端口不是22

1
rsync  -az --progress  '-e ssh -p 1234'  /var/www/html/ * 1.2.3.4: /home/nod32/


本文转自 nonono11 51CTO博客,原文链接:http://blog.51cto.com/abian/1582886,如需转载请自行联系原作者
相关文章
|
3月前
|
运维 数据可视化 Serverless
DeepSeek云端部署全流程指南:阿里云提供6种方法部署满血版或蒸馏版DeepSeek,新手0基础教程
DeepSeek-R1是主打强逻辑推理的开源大模型,在数学推演、代码生成、复杂长文本问答、多步骤逻辑任务上表现突出,仅需少量标注数据即可实现高精度推理输出。针对不同开发人群、业务规模、预算成本需求,阿里云完整提供六大差异化部署方案,覆盖MaaS托管API、PaaS可视化一键部署、IaaS自主集群推理三层架构,分别适配满血完整版大参数模型与轻量化蒸馏小模型,最快5分钟即可完成线上调用,最低成本仅十几元即可搭建专属推理服务,无任何开发经验的新手也能快速落地。本文完整拆解六大部署路径的适用人群、部署耗时、预估成本、核心优势,配套Python调用代码、vLLM推理启动命令、Serverless部署脚本
563 2
|
11月前
|
机器学习/深度学习 数据采集 自然语言处理
搜索引擎:输入搜索词以后,搜索引擎是怎么工作的?
搜索引擎通过爬虫抓取网页,经索引系统处理生成倒排索引,再由检索系统结合分词、纠错、推荐等技术理解用户意图,利用位置信息和最小窗口排序,精准返回结果。其核心在于以查询词为约束,实现高效相关性匹配。
|
5月前
|
弹性计算 安全 应用服务中间件
云服务器部署实战:ECS上从零搭建生产级Web服务全记录
本文手把手教你将本地Web项目部署到阿里云ECS服务器:从安全组配置、SSH初始化、Nginx反向代理,到应用进程管理(systemd)、安全加固(fail2ban/防火墙)及日志监控,全程覆盖Linux云服务器生产级部署要点,助新手快速实现“代码→公网服务”闭环。
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
1278 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
5月前
|
SQL JavaScript 关系型数据库
SQL改写实战:子查询、CTE、窗口函数性能对比
本文聚焦SQL性能优化,实测对比子查询、CTE与窗口函数在复杂统计、分组排名、递归查询等场景的执行效率。基于MySQL 8.0真实数据(千万级表),揭示窗口函数在“每组取最值”“部门排名”中提速3倍以上,CTE提升可读性与递归能力,而相关子查询易成性能瓶颈。干货满满,避坑必备!
|
5月前
|
人工智能 JSON API
MCP 从入门到实战:让大模型真正「动手」
本文系统讲解MCP(模型上下文协议)原理与实战,厘清Host、Server、Tool角色分工,解析AI如何基于描述与Schema智能选工具,并提供可直连Cherry Studio的Python监控服务示例,助你让大模型真正“动手”。
MCP 从入门到实战:让大模型真正「动手」
|
9月前
|
算法 前端开发 安全
深度解析:如何在浏览器端构建一个无限关卡的数独游戏
豫唐工具集推出纯前端数独游戏《Sudoku Challenge》,支持无限关卡动态生成:采用“对角线填充+回溯求解+唯一解挖洞”算法,毫秒级出题;双模操作、智能高亮、实时反馈;专研打印模式,适配A4纸与二维码跨端续玩;零服务端、全离线、100%隐私安全。
784 2
|
人工智能 监控 JavaScript
从零开始学MCP(4) | 连接 MCP 客户端:从聊天机器人到智能体
本指南详解2025年如何打通Claude、Cursor及自定义客户端,构建企业级AI智能体系统。涵盖MCP双向通信架构、主流客户端连接配置、智能体系统实战、安全认证、性能优化及部署方案,助你掌握下一代AI应用核心技术。
|
12月前
|
存储 搜索推荐 JavaScript
医院随访管理系统源码开发,患者随访管理系统成品源码,智能随访系统源码,出院随访系统源码
医院随访管理系统源码,基于Java+Vue前后端分离架构,集成患者信息管理、智能随访计划、自动提醒、录音上传、数据统计等功能。支持个性化随访模板、科研随访、多级审核与数据分析,提升医院随访效率与患者满意度。
398 11
|
人工智能 JSON Shell
go mod依赖管理
本文介绍了Go语言中如何管理并使用自己的包以及导入第三方包的方法。内容涵盖包的目录结构、go.mod文件的初始化、import的正确使用方式、init函数的作用及执行顺序,以及如何下载和管理第三方库。通过具体示例演示了包的导入、别名设置、函数调用和运行方式,帮助开发者更好地理解和掌握Go模块化编程的核心技巧。
830 5

热门文章

最新文章