Ajout rendus TP
This commit is contained in:
parent
bd7082e887
commit
e3e4b6291f
|
@ -0,0 +1 @@
|
|||
.~lock*
|
|
@ -0,0 +1 @@
|
|||
/ReverseBid2017.rar
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
/EBoutiqueJeux.tar.gz
|
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
.vscode
|
|
@ -0,0 +1,86 @@
|
|||
# TD Rest Api Python
|
||||
|
||||
## Requirements
|
||||
* Python 2.7 (tested on 2.7.13)
|
||||
* PIP (tested on 9.0.1)
|
||||
|
||||
## Installation
|
||||
|
||||
$ git clone git@github.com:clementtournier/td-python-rest.git
|
||||
$ cd td-python-rest
|
||||
$ git checkout develop
|
||||
$ pip install -r requirements.txt
|
||||
$ python server.py
|
||||
|
||||
Now the server is listening on 127.0.0.1:5000
|
||||
|
||||
## API endpoints
|
||||
|
||||
### GET /disk_usage
|
||||
```
|
||||
[
|
||||
{
|
||||
"available": "3.9G",
|
||||
"filesystem": "udev",
|
||||
"mountpoint": "/dev",
|
||||
"size": "3.9G",
|
||||
"used": "0",
|
||||
"used_percent": "0%"
|
||||
},
|
||||
{
|
||||
"available": "778M",
|
||||
"filesystem": "tmpfs",
|
||||
"mountpoint": "/run",
|
||||
"size": "787M",
|
||||
"used": "9.8M",
|
||||
"used_percent": "2%"
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
#### SAMPLE CALL
|
||||
````
|
||||
curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://localhost:5000/disk_usage
|
||||
````
|
||||
### GET /processes
|
||||
```
|
||||
[
|
||||
{
|
||||
"c": "0",
|
||||
"cmd": "/sbin/init",
|
||||
"pid": "1",
|
||||
"ppid": "0",
|
||||
"stime": "17:26",
|
||||
"time": "00:00:01",
|
||||
"tty": "?",
|
||||
"uid": "root"
|
||||
},
|
||||
{
|
||||
"c": "0",
|
||||
"cmd": "[ksoftirqd/0]",
|
||||
"pid": "3",
|
||||
"ppid": "2",
|
||||
"stime": "17:26",
|
||||
"time": "00:00:00",
|
||||
"tty": "?",
|
||||
"uid": "root"
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
### POST /processes
|
||||
```
|
||||
POST /processes HTTP/1.1
|
||||
Host: 127.0.0.1:5000
|
||||
Cache-Control: no-cache
|
||||
Postman-Token: 48a0ea07-b1e6-f0a1-184b-fe23c7172b91
|
||||
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
|
||||
|
||||
------WebKitFormBoundary7MA4YWxkTrZu0gW
|
||||
Content-Disposition: form-data; name="process"
|
||||
|
||||
apache2
|
||||
```
|
||||
|
||||
return True is service is stopped or False.
|
|
@ -0,0 +1,2 @@
|
|||
flask
|
||||
flask-restful
|
|
@ -0,0 +1,82 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
from flask import Flask, request
|
||||
from flask_restful import Resource, Api
|
||||
import os
|
||||
import json
|
||||
|
||||
|
||||
|
||||
app = Flask(__name__)
|
||||
api = Api(app)
|
||||
|
||||
class DiskUsage(Resource):
|
||||
def df_h(self):
|
||||
df = []
|
||||
dfCmd = os.popen("df -h ")
|
||||
i = 0
|
||||
while True:
|
||||
line = dfCmd.readline()
|
||||
if line != '':
|
||||
i = i + 1
|
||||
if i > 1: #Suppression de la première ligne du df -h
|
||||
lineDatas = line.split()[0:6] #Pour parser le fichier
|
||||
df.append({ #Les attributs d'un objet pour le JSON de fin
|
||||
"filesystem" : lineDatas[0],
|
||||
"size" : lineDatas[1],
|
||||
"used" : lineDatas[2],
|
||||
"available" : lineDatas[3],
|
||||
"used_percent" : lineDatas[4],
|
||||
"mountpoint" : lineDatas[5],
|
||||
})
|
||||
else:
|
||||
break
|
||||
return df
|
||||
|
||||
def get(self):
|
||||
return self.df_h()
|
||||
|
||||
class Processes(Resource):
|
||||
def listProcesses(self):
|
||||
content = []
|
||||
statusCmd = os.popen("ps -ef")
|
||||
i = 0
|
||||
while True:
|
||||
line = statusCmd.readline()
|
||||
if line != '':
|
||||
i = i + 1
|
||||
if i > 1:
|
||||
lineDatas = line.split()[0:8]
|
||||
content.append({
|
||||
'uid': lineDatas[0],
|
||||
'pid': lineDatas[1],
|
||||
'ppid': lineDatas[2],
|
||||
'c': lineDatas[3],
|
||||
'stime': lineDatas[4],
|
||||
'tty': lineDatas[5],
|
||||
'time': lineDatas[6],
|
||||
'cmd': lineDatas[7]
|
||||
})
|
||||
else:
|
||||
break
|
||||
return content
|
||||
|
||||
def killService(self):
|
||||
data = request.form
|
||||
if 'process' in data:
|
||||
os.popen("systemctl stop " + data['process'])
|
||||
return { True }
|
||||
return { False }
|
||||
|
||||
def get(self):
|
||||
return self.listProcesses()
|
||||
|
||||
def post(self):
|
||||
return self.killService()
|
||||
|
||||
api.add_resource(DiskUsage, '/disk_usage')
|
||||
api.add_resource(Processes, '/processes')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
Loading…
Reference in New Issue