我就在想,如果我不在电脑前,我能不能“看它正在干什么?”这个系统实现了:
技术栈:
⚙️ 更新系统、安装Python&pip环境、安装项目依赖:apt update && apt upgrade -yapt install python3 python3-pip -ypip3 install flask flask-socketio gevent gevent-websocket pillow
mkdir screen-monitorcd screen-monitortouch app.pymkdir uploadsmkdir templatestouch templates/index.html
app = Flask(__name__)app.secret_key = "super_secret_key"socketio = SocketIO(app, cors_allowed_origins="*", async_mode='gevent')UPLOAD_FOLDER = 'uploads'THUMB_FOLDER = 'thumbs'os.makedirs(..., exist_ok=True)USERS = { "admin": "123456", "user1": "111111"}
作用:
secret_key 用于登录 sessionuploads:存原图thumbs:存缩略图自动创建目录(避免报错)简单账号密码(写死的),用于登录验证
@app.route('/login')@app.route('/')
@app.route('/upload', methods=['POST'])
做了4件事:
socketio.emit('new_image', {...})
@app.route('/delete/<filename>')
作用:
@app.route('/api/images')/uploads/<user>/<filename>/thumbs/<user>/<filename>
socketio.run(app, host='0.0.0.0', port=5000)
作用:
Running on http://0.0.0.0:5000
或者没有任何输出,则证明启动成功,只要不报错就行。http://你的服务器IP:5000/login
我这里使用的是PyCharm进行编码,然后打包exe程序。pip install pyautogui requests pyinstaller
创建一个client.py的文件,然后将以下代码输入进去:进入 client.py 所在目录,执行打包命令:pyinstaller -F -w client.py
参数解释
打包完成后
会生成:
之后就可以运行客户端,运行之后后台会有进程,不会有任何窗口。之后回到网页,你就能在网页看到上传到服务器的屏幕截图,每5秒截一次。这个项目还可以扩展很多,例如:键盘记录、实时视频流等。你们可以自行发挥。