杀毒软件更新相关

简介:

用了一个杀毒软件的更新工具,不过它不会自动删除过时的。然后用刚学的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  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  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,如需转载请自行联系原作者
相关文章
|
4月前
|
人工智能 监控 JavaScript
从零开始学MCP(4) | 连接 MCP 客户端:从聊天机器人到智能体
本指南详解2025年如何打通Claude、Cursor及自定义客户端,构建企业级AI智能体系统。涵盖MCP双向通信架构、主流客户端连接配置、智能体系统实战、安全认证、性能优化及部署方案,助你掌握下一代AI应用核心技术。
|
5月前
|
人工智能 JSON Shell
go mod依赖管理
本文介绍了Go语言中如何管理并使用自己的包以及导入第三方包的方法。内容涵盖包的目录结构、go.mod文件的初始化、import的正确使用方式、init函数的作用及执行顺序,以及如何下载和管理第三方库。通过具体示例演示了包的导入、别名设置、函数调用和运行方式,帮助开发者更好地理解和掌握Go模块化编程的核心技巧。
237 5
|
传感器 物联网 数据安全/隐私保护
低功耗蓝牙和 Wi-Fi 相比有什么优缺点
低功耗蓝牙(BLE)与Wi-Fi相比,功耗更低、成本更少,适用于短距离、小数据量传输,如智能手环等;但传输速度和距离不如Wi-Fi,适合对实时性和带宽要求不高的场景。
1231 4
|
数据库 数据中心 C++
|
存储 安全 网络安全
静态IP与动态IP的使用区别
静态IP与动态IP主要区别在于分配方式与稳定性。静态IP固定不变,适用于远程访问、服务器及需要稳定网络服务的场景,但可能增加安全风险和成本。动态IP自动分配,变化无常,利于大规模网络和移动设备,提高安全性和效率,通常无需额外费用。选择取决于具体需求。
|
关系型数据库 MySQL 网络安全
连接MySQL错误:Can't connect to MySQL server (10060)
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/51406712 ...
3394 0
|
Ubuntu 测试技术 网络安全
配制在线版r-studio
配制在线版r-studio
|
前端开发 网络协议 Java
JavaWeb 速通Servlet(Servlet和HttpServlet)
JavaWeb——Servlet,HttpServlet及其底层原理 内容分享。
318 0
|
SQL 关系型数据库 MySQL
数据管理DMS重磅发布:移动版,随时随地管理云端数据
阿里云数据管理DMS 移动版已于2017.8.31发布,一期提供RDS MySQL和ECS自建MySQL的数据管理服务,提供实例列表、库/表/列管理、SQL查询、实时性能、实例会话和授权审计等功能。
38145 0
|
数据可视化 安全 Java
QuickBI关于OpenAPI的使用问题梳理及高频需求实现样例
Quick BI企业客户所购买的多为专业版,且企业存在自有oa(办公)系统,组织架构庞大、复杂,系统多,权限分配及管理存在自有的集成系统统一管理,用以做到精准的权限管控。而Quick BI官方提供的OpenAPI提供了多样化的权限控制统一接口用以满足不同企业权限统一且自动化管控的的集成需求,本文针对Quick BI的工作流程、使用方法及限制以及针对高频场景从OpenAPI Explorer到封装python SDK由浅入深的给出了多种调用方式的使用样例。

热门文章

最新文章