当前位置: 首页 > news >正文

江西营销网站建设公司网站建设 意义

江西营销网站建设,公司网站建设 意义,住房城乡建设部门户网站烟气脱硫,号卡分销系统一、paramiko简介 1.paramiko是一个基于SSHv2协议的纯Python库。需要单独安装。 2.它提供了客户端和服务器的功能。 3.可以实现SSH2远程安全连接#xff0c;支持用户名、密码连接#xff0c;也支持密钥连接 4.一般用于执行远程命令、传输文件、中间SSH代理等 安装 pip3 in…一、paramiko简介 1.paramiko是一个基于SSHv2协议的纯Python库。需要单独安装。 2.它提供了客户端和服务器的功能。 3.可以实现SSH2远程安全连接支持用户名、密码连接也支持密钥连接 4.一般用于执行远程命令、传输文件、中间SSH代理等 安装 pip3 install paramiko在linux中安装过程报错 Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-obpexfgv/bcrypt/解决 pip3 install --upgrade pip3 setuptools二、SSH连接 1.基于用户名和密码的连接 import paramikocommand cat /etc/passwd |awk -F: {print $1}|head# 要连接的主机的信息以下是必填项 host_info {hostname: 192.168.1.23,port: 22,username: root,password: 服务器密码 }def ssh_host(hostinfo):# 实例化一个SSHClient 对象用于连接linux服务器使用ssh_client paramiko.SSHClient()# 当使用用户名和密码首次连接linux服务器时会有连接提示也是输入yes/no的提示。这里的设置就是会自动输入yesssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)try:# 开始连接目标linux服务器ssh_client.connect(**host_info)except Exception:print(f连接{host_info[hostname]}失败)else:# 远程执行shell命令stdin,stdout,stderr ssh_client.exec_command(command)# 这里decode的作用 1是解码 2是格式化print(stdout.read().decode())# 判断执行命令是否有报错如果有报错就打印if not stderr is None:print(stderr.read().decode())ssh_client.close()if __name__ __main__:ssh_host(host_info) 执行结果如下 root bin daemon adm lp sync shutdown halt mail operator2.基于密钥的连接 import paramiko command awk -F: {print $1} /etc/passwd# 读取私钥文件 private_key paramiko.RSAKey.from_private_key_file(/root/.ssh/id_rsa)host_info {hostname: 192.168.1.106,port: 22,username: root,# 这里就是传递私钥文件pkey: private_key }def main(host_info):ssh_client paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:ssh_client.connect(**host_info)except Exception:print(f连接{host_info[hostname]}失败)else:stdin, stdout, stderr ssh_client.exec_command(command)# 这里decode的作用 1是解码 2是格式化print(stdout.read().decode())# 判断执行命令是否有报错如果有报错就打印if not stderr is None:print(stderr.read().decode())ssh_client.close()if __name__ __main__:main(host_info)三、远程文件操作 1.STPClient类简介 SFTPClient作为一个SFTP客户端对象根据SSH传输协议的sftp会话实现远程操作比如文件上传下载权限状态等端口就是SSH端口 方法含义from_transport()创建一个已连通的SFTP客户端通道put()上传本地文件到远程服务器get()从远程服务器下载文件到本地mkdir()在远程服务器上创建目录remove()删除远程服务器中的文件rmdir()删除远程服务器中的目录rename()重命名远程服务器中的文件或目录stat()获取远程服务器中文件的详细信息listdir()列出远程服务器中指定目录下的内容 2.代码实例 import paramikohost_addr (192.168.1.23,22 ) user_info {username: root,password: 666666} def sftp_host():tran paramiko.Transport(*host_addr)tran.connect(**user_info)sftp_client paramiko.SFTPClient.from_transport(tran)local_path D:/服务临时交付文件/zabbix_agent-6.0.3-linux-4.12-ppc64le-static.tar.gzremote_path /root/zabbix_agent-6.0.3-linux-4.12-ppc64le-static.tar.gz# 上传文件(下发文件)sftp_client.put(local_path,remote_path)# 下载文件sftp_client.get(remote_path,local_path)tran.close()if __name__ __main__:sftp_host() 四、django的文件上传 1.前端代码 准备工作 1.安装node 2.使用npm 安装pnpm工具这里使用前端代码做测试的原因 1.原生html input typefile 太丑了 2.必须在input typefile中加入enctypemultipart/form-data属性此属性的含义是规定在发送到服务器之前应该如何对表单数据进行编码。如果没有这一行django的 request.FILES的值是空的。所以在这里使用UI组件进行测试。看看是否也存在request.FILES为空的问题1.1 配置代理地址 淘宝的地址使用vite创建项目报错所以这里重新配置代理 npm config set registry https://registry.npmjs.org/1.2 使用vite创建vue项目 pnpm create vitecd 项目名称# 安装依赖 pnpm install # 启动项目 pnpm run dev1.3 安装UI组件 1.3.1 安装ant-design-vue pnpm install ant-design-vue --save查看安装的版本 E:\code\project\前端项目\vue_test1\vue_test_projectpnpm list |findstr /i ant ant-design-vue 4.1.21.3.2 安装icon组件 pnpm install --save ant-design/icons-vue1.4 引入UI组件 编辑main.js import { createApp } from vue import App from ./App.vue# 引入ant-desgin-vue组件的button按钮 import { Button } from ant-design-vueconst app createApp(App)# 使用Button按钮组件 app.use(Button)app.mount(#app)1.5 测试 在浏览器中能够看到漂亮的按钮就说明这里已经成功引用了ant-desgin-vue UI组件了. script setup/scripttemplatedivh1app.vue/h1!-- 使用引入的button按钮 --a-button typeprimary按钮/a-button/div /templatestyle scoped/style 1.6 上传文件完整代码 编辑App.vue文件 template diva-upload v-model:file-listfileList list-typepicture :max-count10 multipletrueaction/upload namefile changehandleChangea-button typeprimaryupload-outlined/upload-outlined上传文件/a-button/a-uploada-button typeprimary danger classClearBt clickclearfileListDeleteOutlined /清空列表/a-button /div /templatescript langjs export default {name: App }/scriptscript langjs setup import { ref } from vue; import { UploadOutlined,DeleteOutlined } from ant-design/icons-vue import { message } from ant-design-vue;const fileList ref([ ]);function clearfileList(){fileList.value []; }function handleChange(info){if (info.file.status done){message.success(${info.file.name} 上传成功!)}if (info.file.status error){message.error(${info.file.name} 上传失败)} } /scriptstyle scoped div {position: relative;margin: 0px auto;width: 30%;height: 800px;background: #f5f5f5;border-radius: 20px; }.ClearBt {position: absolute;top: 0px;left: 111px; }/style参数解释 list-type 显示图片 max-count 限制文件上传的数量 multiple允许一次上传多个文件而不是一次只允许上传单个文件 name 这个参数必须要定义否则后端无法获取前端提交的数据main.js代码如下 import { createApp } from vue import App from ./App.vueimport { Button,Upload } from ant-design-vueconst app createApp(App)app.use(Button) app.use(Upload)app.mount(#app)1.7 编译前端代码 pnpm run build编译成功后在 项目目录下生成dist目录此目录下就是编译成功后的代码 2.部署前端代码 搭建nginx,过程省略 2.1 nginx server配置 server {listen 16666;server_name localhost;root /data/wwwroot;location / {index index.html;try_files $uri $uri/ /index.html;}location /upload {proxy_pass http://127.0.0.1:18888/files/upload/;} }nginx -s reload2.2 上传前端代码 将编译好的所有的代码上传到/data/wwwroot目录下。访问: http://IP地址:166663.部署后端代码 基础环境安装就不在说了 3.1 创建应用 django-admin startapp files3.2 主路由 编辑项目目录下的urls.py文件 from django.urls import path,includeurlpatterns [path(files/,include(files.urls)) ] 3.3 子路由 在files应用下新建urls.py文件 from django.urls import path,include from .views import *urlpatterns [path(upload/, file_view.as_view()), ]3.4 视图类 from rest_framework.views import APIView from rest_framework.response import Response import ossave_url /data/pic/class file_view(APIView):def post(self,request):# 获取前端上传的文件注意这里get的 file 一定和前端upload 的name的值对应pic_data request.FILES.get(file)# 判断是否能够获取到前端传输的数据主要是看前端upload的name值是不是fileif not pic_data is None:pic_name pic_data.namepicFullUrl save_url pic_name# 判断上传的文件是否重名if not os.path.exists(picFullUrl):with open(save_url pic_name,wb) as fp:# 这里使用chunks函数是为分块处理为了避免如果文件很大一次性读取文件所有而造成的内存不足现象for chunk in pic_data.chunks():fp.write(chunk)return Response({message:文件上传成功},status200)else:# 这里之所有没有使用键值对的形式进行返回是因为这个异常结果会显示在图片的悬浮提示上。return Response(文件已经存在,status409)else:# 这里之所有没有使用键值对的形式进行返回是因为这个异常结果会显示在图片的悬浮提示上。return Response(文件上传失败,status505) 3.5 启动项目 python3 manage.py runserver 0.0.0.0:188884.访问测试 访问页面查看图片是否能够上传成功
http://www.zqtcl.cn/news/128508/

相关文章:

  • 公司网站怎么自己做织梦品牌集团公司网站模板(精)
  • 西安市高陵区建设局网站产品网站做营销推广
  • 网站开发费是无形资产吗深圳网站建设简介
  • 网站开发架构mvc重庆巫山网站设计哪家专业
  • 广州高档网站建设电子商务网站建设的期中考试
  • 九江建设公司网站新网 网站空间
  • 网站开发时的闭包写法手机网站创建站点成功
  • 中山做网站联系电话可以做全景的网站
  • 南京网站开发推南京乐识网络站点推广的方法有哪些
  • 沧州企业网站深圳建筑招聘网
  • 汽车网站开发的需求分析怎样策划一个营销型网站
  • 网站建设公司彩铃网站模板是怎么制作
  • 代做毕设网站推荐一键安装微信
  • 网站建设评比标准人工智能的网站
  • 网站 提示建设中计算机网站建设和维护
  • 网站菜单分类怎么做wordpress黄页插件
  • 安防网站下载营销型网站建设 高校邦
  • 一个几个人做网站的几个故事电影网站开发设计的完成情况
  • 如何开个人网站网站建设技能考试试题三
  • 做网站都要学什么工程造价询价网站
  • 东莞市官网网站建设企业福田做商城网站建设哪家服务周到
  • 网站界面设计技巧宁波seo排名优化价格
  • 做外贸经常用的网站需要优化的网站有哪些
  • 俄语网站建设注意事项seo公司优化排名
  • jsp做的当当网站的文档专业电子科技网站建设
  • 有免费的微网站是什么推广普通话调查问卷
  • 滁州市南谯区住房和建设局网站网站服务器规划 用户数
  • 静态企业网站源码网站sem托管
  • 17网站一起做网店打不开专业做网站公司 前景
  • 哪个网站可以做围棋作业游览有关小城镇建设的网站