python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序
python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序
psutil是一个跨平台的库(http://code.google.com/p/psutil/),能够轻松的实现获取系统运行的进程和系统利用率(CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。
psutil是第三方库需要安装。pip install psutil
利用socket,psutil实现阻止远程主机运行特定的程序,本例的黑名但是直接写死的,也可以加载一个黑名单文件,方便以后扩展
客户端:
#控制进程,客户端
import sys
import psutil
import socket
import time server=sys.argv[1]
s=socket.socket()
while 1:
try:
s.connect((server,1234)) #建立tcp连接
break
except:
time.sleep(5) data=s.recv(1024).decode() #接收服务器发送的黑名单
blacklist=data.split(",") #str-->list
print(blacklist)
s.close() #接受到黑名单,关闭资源 while 1:
pids=psutil.pids() #pids所有进程的进程id (list)
for i in pids:
try:
if psutil.Process(i).name() in blacklist: #psutil.Process().name() 进程ID对应的程序名
psutil.Process(i).terminate() #terminate 关闭程序
except:
pass
time.sleep(1)
服务端:
##控制进程,服务端
import sys
import psutil
import socket
import time
from threading import Thread
s=socket.socket()
s.bind(("0.0.0.0",1234))
s.listen(5)
blacklist=['Calculator.exe','QQ.exe']
msg=','.join(blacklist) def tcplink(sock,addr): #把黑名单发送给客户端
sock.send(msg.encode())
print(addr,'OK!')
sock.close()
while 1:
con,addr=s.accept()
ts=[]
t=Thread(target=tcplink,args=(con,addr)) #创建线程来处理tcp连接
ts.append(t)
t.start()
for i in ts:
i.join()
测试:
运行QQ和计算器,发现刚运行就被关闭了。
python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序的更多相关文章
- 安卓利用Handlers,AsyncTask和Loaders运行后台程序
安卓的用户界面线程(user interface thread) 1.1 主线程 安卓修改用户界面并从一个单一用户界面线程中处理输入事件,这个线程也被称作主线程(main thread) Androi ...
- Python 监控脚本
Python 监控脚本 整体通过psutil模块动态获取资源信息.下为示例图: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time: 2019- ...
- python程序—利用socket监控端口
利用socket监控服务器端口,端口不通时,发邮件提醒 import yagmail #导入yagmail模块 import re #导入re模块,进行正则匹配 import socket #导入so ...
- python为运维人员打造一个监控脚本
0x00前言: 一直想写一个监控方面的脚本,然后想到了运维这方面的 后来就写了个脚本. 0x001准备: psutil模块 0x02正文: import os import time import r ...
- 洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天
由于本篇博文的项目都很简单,所以本次开个特例,本次解析两个项目,但是都很简单的 项目一:用socket实现文件传输 本项目很简单,作为小项目的预热的,前面刚学完socket,这里马上又利用socket ...
- Python 监控脚本(硬盘、cpu、内存、网卡、进程)
#磁盘使用率disk = psutil.disk_partitions()for i in disk: print "磁盘:%s 分区格式:%s"%(i.device,i ...
- 一个用python简单的封装了aria2的jsonrpc中adduri的脚本
aria2是一个十分牛逼的下载神器,有时候项目需要一个很牛逼的下载中间件的话,aria2是一个不错的选择.其中支持jsonrpc和websocket的特性尤其诱人.但是python用起来还是有点不爽, ...
- 利用socket.io+nodejs打造简单聊天室
代码地址如下:http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...
- python 写一个类似于top的监控脚本
最近老板给提出一个需要,项目需求大致如下: 1.用树莓派作为网关,底层接多个ZigBee传感节点,网关把ZigBee传感节点采集到的信息通过串口接收汇总,并且发送给上层的HTTP Serve ...
随机推荐
- Thrown "KeeperErrorCode = Unimplemented for /services" exception
1.环境 spring-boot 2.1.3 依赖项:spring-cloud-starter-zookeeper-discovery 版本2.1.1 使用的zookeeper3.4.11 代码如下: ...
- Mysql加锁过程详解(3)-关于mysql 幻读理解
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的 ...
- LeetCode哈希表
1. Two Sum https://leetcode.com/problems/two-sum/description/ 不使用额外空间需要n*n的复杂度 class Solution { publ ...
- JS-面向对象编程-对象方法添加属性
A-对象扩展属性及方法: obj.属性名=属性值 obj[属性名]=属性值 方式一: var obj={}; obj.Name="liming"; obj.Age="27 ...
- 结构型---代理模式(Proxy Pattern)
代理模式的详细介绍 代理模式按照使用目的可以分为以下几种: 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象.这个不同的地址空间可以是本电脑中,也可以在另一台电脑中.最典型 ...
- lambda List实现某列去重的解决方案采用扩展方法
public class CommonEqualityComparer<T, V> : IEqualityComparer<T> { private Func<T, V& ...
- Maven(五)Eclipse配置Maven插件
较新版本的Eclipse内置Maven插件 1. 设置installation 一般不适用内置的 指定核心程序的位置 2. 设置user settings 指定本地仓库的位置 1.如果setting. ...
- 微信小程序性能优化技巧
摘要: 如果小程序不够快,还要它干嘛? 原文:微信小程序性能优化方案--让你的小程序如此丝滑 作者:杜俊成要好好学习 Fundebug经授权转载,版权归原作者所有. 微信小程序如果想要优化性能,有关键 ...
- Js 转动抽奖实现
一.样本 地址:http://js.zhuamimi.cn/choujiang/index.htm 源码:https://pan.baidu.com/s/15KhesfcLf1WMOom6PhzCjA ...