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

网站建设最新技术seo营销名词解释

网站建设最新技术,seo营销名词解释,网站开发课程安排,在南宁做家教兼职的网站❝本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes❞1 简介日常工作中经常需要通过SSH连接到多台远程服务器来完成各种任务,当需要操作的服务器众多,且要执行的任务涉及命令繁多时,如果可以以自…

本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

日常工作中经常需要通过SSH连接到多台远程服务器来完成各种任务,当需要操作的服务器众多,且要执行的任务涉及命令繁多时,如果可以以自动化的方式模拟SSH连接及执行命令的繁琐过程,对工作效率的提升是非常可观的。

本文我就将带大家学习在Python中使用非常强大的fabric库来对常用的远程服务器连接管理操作进行自动化😋:

7461ceeb2f74af7f08ac2e69ba4780fa.png

2 使用fabric玩转远程服务器管理

fabric基于强大的paramikoinvoke等库,构建出一整套简单易用的API,使得我们使用简洁的语句就可以应付常见的各种远程服务器操作,使用pip install fabric完成安装,本文演示对应版本为2.6

2.1 连接到远程服务器并执行终端命令

要建立并保持对远程服务器的连接,我们需要对fabric.Connection()进行实例化,其基础参数有:

  • 「host:」 str型,格式如'用户名@host:端口',其中':端口'部分可以省略,默认端口为22

  • 「connect_kwargs:」 dict型,用于传入其他连接所需参数,常用的有:

    其他可用参数你可以前往https://docs.paramiko.org/en/latest/api/client.html#paramiko.client.SSHClient.connectParameters了解更多

    • 「password:」 str型,当以密码方式连接时,用于传入与host参数对应的密码

    • 「pkey:」 str型,当以私钥方式连接时,用于设置对应密钥

    • 「timeout:」 float型,用于设置TCP连接的超时时长(单位:秒)

  • 「config:」 fabric.Config型,用于设置更多复杂功能参数,详见https://docs.fabfile.org/en/2.6/api/config.html

先来看一个最基础的例子:

from fabric import Connection# 建议将ssh连接所需参数变量化
user = '用户名'
host = 'host地址'
password = '密码'# 利用fabric.Connection快捷创建连接
c = Connection(host=f'{user}@{host}',connect_kwargs=dict(password=password))# 利用run方法直接执行传入的命令
c.run('pwd');
04a291899a119ec806350d02cb19db21.png

可以看到,非常简单就完成了连接服务器及执行指定命令的过程,且run()方法所执行的命令打印出的结果,可以通过stdout属性进行保存:

# hide=True抑制run()过程对执行结果的自动打印
output = c.run('df -h', hide=True).stdout
print(output)
2e674ea2e2393d821af4e1da3b376780.png

获悉了fabric的基础使用后,接下来我们来学习一些进阶内容:

2.2 配置sudo命令密码自动预填入

我们都知道,对于非root用户,在执行某些权限较高的命令时需要添加sudo前缀,并在会话的初次执行时需要手动输入当前用户的密码,而在fabric中,有两种方式可以实现这个步骤的自动化:

2.2.1 方式1:配合invoke.Responder

我们可以配合invoke.Responder来实现当命令行返回密码输入提示时,自动输入并执行指定的命令:

from invoke import Responder# 配置命令行内容监听规则
sudopass = Responder(pattern=f'\[sudo\] password for {user}:',response=password+'\n'
)# 注意需要设置pty=True
c.run('sudo pwd', pty=True, watchers=[sudopass]);
8b54ebe9b3f88d8b3f944386fe3901e1.png

2.2.2 方式2:利用fabric.Config设置sudo密码

除了上一种方式外,我们还可以使用fabric.Config在创建连接时就一次性提前配置好sudo密码,之后需要执行sudo命令时用sudo()方法代替run()方法即可:

from fabric import Config# 预先配置sudo密码
config = Config(overrides={'sudo': {'password': password}
})c = Connection(host=f'{user}@{host}', connect_kwargs={'password': password},config=config)c.sudo('pwd');
091e28270b8a1132f08ae1e6a421a909.png

2.3 远程文件传输

很多朋友都知道可以使用pscpxshell之类的工具手动进行服务器与本地之间的文件相互传输,这些任务我们同样可以在fabric中自动化进行:

2.3.1 从本地上传文件到服务器

使用put()方法可以将指定的本地文件上传至服务器的指定位置,remote参数对应服务器目标保存位置:

c = Connection(host=f'{user}@{host}', connect_kwargs={'password': password})# 创建示例文件
with open('file_transfer.txt', 'w') as d:d.write('1')# 利用put方法上传至服务器
c.put('file_transfer.txt', remote='/home/feffery/')# 打印已上传文件内容
c.run('cat /home/feffery/file_transfer.txt');
ea581d119d4f13592c1fc3e70e8fef72.png

2.3.2 从服务器下载指定文件到本地

相反的,当我们需要从服务器取回指定文件到本地时,就可以使用get()方法:

c = Connection(host=f'{user}@{host}', connect_kwargs={'password': password})# 向文件末尾追加行
c.run('echo "\n2" >> file_transfer.txt')c.get('/home/feffery/file_transfer.txt')print(open('file_transfer.txt').read())
151058a78a1103277ba6de51633f38fe.png

以上就是本文的全部内容,欢迎在评论区与我进行讨论~

觉得还不错就给我一个小小的鼓励吧!
http://www.lbrq.cn/news/2446903.html

相关文章:

  • 我有虚拟服务器怎么快速做网站搜索引擎查询
  • 正能量网站免费下载试分析网站推广和优化的原因
  • 如何做网站店铺的模板郑州新闻发布
  • 山东省城乡住房和建设厅网站热点新闻事件今日最新
  • 做网站 赚钱app推广实名认证接单平台
  • 做网站手把手网站制作设计
  • wordpress文章底部插件seo如何去做优化
  • 本地生活网站 源码seo对网络推广的作用是什么?
  • 辽宁省人民政府国有资产监督管理委员会搜索引擎seo优化平台
  • 文化类网站的前置审批站长之家域名查询
  • 政府网站建设验收方案及标准百度竞价推广是什么工作
  • 怎么做网站报价表百度指数分是什么
  • wordpress下载站主题宁波seo教程推广平台
  • 公开招标网站销售怎么做
  • 网站好玩新功能十大免费网站推广入口
  • 个人网站 bootstrap线上营销推广方案
  • 去哪儿网站排名怎么做crm系统网站
  • 做旅游攻略去什么网站网络平台运营是做什么的
  • 网站制作 搜索怎样在百度上发帖子
  • 代驾软件系统多少钱一套成都关键词优化排名
  • 郴州网站制作电子商务与网络营销教案
  • 网站 建设可行性报告军事最新消息
  • 做网站书面报告申请推广方案怎么写模板
  • 网站模板开发网络营销就是seo正确吗
  • 个人网站 如何备案网络营销策划包括哪些内容
  • 网站排名优化效果自己做网站
  • 多城市网站建设西安网站排名优化培训
  • axure做网站原型模板竞价托管
  • 海口网站制作案例网站系统开发
  • 电子商务网站建设自服务器每日新闻简报
  • 网络编程2(应用层协议,传输层协议)
  • 图解网络-小林coding笔记(持续更新)
  • C++连接MySQL完整教程
  • 备份一下我的 mac mini 的环境变量配置情况
  • nginx的 `root` 和 `alias` 笔记250726
  • 工程师实践出真知