shellinabox web 页面 交互、函数 mysql操作事务性、<pre>显示的内容为原格式</pre>、多进程 Popen 拿到进程号 。 杀掉子进程号、os创建目录、paramiko上传下载、打包并提供下载

1、shellinabox web页面交互shell工具安装

https://github.com/shellinabox/shellinabox

2、函数mysql操作事务性

from django.db.transaction import atomic

@atomic
def F(self):
"""mysql操作"""

 

3、显示内容为原格式的标签

<pre>显示的内容为原格式</pre>

 

4、多进程 Popen拿到进程号。杀掉进程号

import signal # 导入信号模块,用于杀掉子进程

p = subprocess.Popen('sleep 30',stdout=subprocess.PIPE,shell=True)
pid = p.pid # 获得父级进程号

import os
os.killpg(pid) # 杀掉进程的组

# 创建目录
os.mkdir('path')
os.makedirs('path/path',exist_ok=True) # 递归创建,如果目标已存在也不报错


# paramiko 上传下载
import paramiko
t = paramiko.Transport(('192.168.111.1',22))
t.connect(username='root',password='123')

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('local_path/filename','remote_path/filename') # 上传文件
sftp.get('remote_path/filename','local_path/filename') # 只能下载文件

t.close()

# 打包并提供下载
wrapper = FileWrapper(open(zip_file_name,'rb'))
response = HttpResponse(wrapper,conten_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=%s.zip' % zip_file_name
response['Content-Length'] = os.path.getsize(zip_file_name)
return response


posted @ 2018-07-23 10:59  G500  阅读(148)  评论(0)    收藏  举报