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

浙公网安备 33010602011771号