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

厦门网站设计开发网页公司市场营销手段13种手段

厦门网站设计开发网页公司,市场营销手段13种手段,自己建设网站容易吗,女教师遭网课入侵直播录屏曝光c此文分享一个python脚本,用于向指定的ssh服务器配置公钥,以达到免密登录ssh服务器的目的。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,确认 or 选择ssh服务器 👇第三步,输入ssh登录密码,以完成公钥配置 👇验证,我们通过ssh登录…

此文分享一个python脚本,用于向指定的ssh服务器配置公钥,以达到免密登录ssh服务器的目的。

效果演示

  • 🔥完整演示效果
    20231225155237_rec_

  • 👇第一步,显然,我们需要选择功能
    20231225155401

  • 👇第二步,确认 or 选择ssh服务器
    20231225155508

  • 👇第三步,输入ssh登录密码,以完成公钥配置
    20231225155606

  • 👇验证,我们通过ssh登录该服务器时,已经不需要再输入密码了
    20231225155812

配置文件

我们需要在配置文件中记录和管理一些配置信息,例如上文中提到的ssh登录信息,例如用于文档搜索的everything接口信息等。这是一个json文档(cfg.json),如下👇;或者,您可以直接下载文档

{
"ssh接口列表":[{"主机名称":"virtualBox","主机地址":"192.168.56.1","端口号":22,"用户名":"dyy","密码":"123456"}],
"everythingIP":"127.0.0.1",
"everythingPort":"22"
}

python脚本

👇以下脚本,提供了以上👆所演示的功能;或者,您可以直接下载脚本

# -*- coding:UTF-8 -*-
"""
@author: dyy
@contact: douyaoyuan@126.com
@time: 2023/11/16 22:37
@file: ssh工具.py
@desc: 脚本提供了ssh登录,ssh文档上传,ssh文档下载,ssh公钥配置等功能,以及优良的用户体验
"""# region 引入必要的依赖
import os
from enum import Enum
import json模块名 = 'DebugInfo'
try:from DebugInfo.DebugInfo import *
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:from DebugInfo.DebugInfo import *except ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)模块名 = 'paramiko'
try:import paramiko
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:import paramikoexcept ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)模块名 = 'difflib'
try:import difflib  # 需要安装 difflib 模块,以支持字符差异对比操作
except ImportError as impErr:print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")print(f"尝试安装 {模块名} 模块:")try:os.system(f"pip install {模块名}")except OSError as osErr:print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")exit(0)else:try:import difflibexcept ImportError as impErr:print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")exit(0)# endregion# 定义一个 命令行参数类,用于解析和记录命令行参数
class 命令行参数类(入参基类):def __init__(self):super().__init__()self._添加参数('srcDir', str, '引用的路径')self._添加参数('srcDoc', str, '引用的文档')self._添加参数('everythingIP', str, 'everything HTTP 服务地址', '127.0.0.1')self._添加参数('everythingPort', str, 'everything HTTP 服务端口', '22')# 添加定制属性self.ssh接口列表: list[ssh接口类] = []# region 访问器@propertydef jsonCfg(self) -> str:if 'jsonCfg' in self._参数字典:return self._参数字典['jsonCfg'].else:return ''@jsonCfg.setterdef jsonCfg(self,: str):if 'jsonCfg' in self._参数字典:self._参数字典['jsonCfg'].= str()@propertydef srcDir(self) -> str:if 'srcDir' in self._参数字典:return self._参数字典['srcDir'].else:return ''@srcDir.setterdef srcDir(self,: str):if 'srcDir' in self._参数字典:self._参数字典['srcDir'].= str()@propertydef srcDoc(self) -> str:if 'srcDoc' in self._参数字典:return self._参数字典['srcDoc'].else:return ''@srcDoc.setterdef srcDoc(self,: str):if 'srcDoc' in self._参数字典:self._参数字典['srcDoc'].= str()@propertydef everythingIP(self) -> str:if 'everythingIP' in self._参数字典:return self._参数字典['everythingIP'].else:return ''@everythingIP.setterdef everythingIP(self,: str):if 'everythingIP' in self._参数字典:self._参数字典['everythingIP'].= str()@propertydef everythingPort(self) -> str:if 'everythingPort' in self._参数字典:return self._参数字典['everythingPort'].else:return ''@everythingPort.setterdef everythingPort(self,: str):if 'everythingPort' in self._参数字典:self._参数字典['everythingPort'].= str()# endregion# region ssh候选列表def 解析Json(self,jsonCfg: str = None,encoding: str = 'utf-8',画板: 打印模板 = None):"""从指定的json文档中(如果不指定,则从 jsonCfg 参数指定的json文档中)读取配置参数,将值赋值给同名的命令行参数:param jsonCfg: 可以指定jsonCfg文档:param encoding: 可以指定jsonCfg文档的编码格式,默认为 utf-8:param 画板: 提供消息打印渠道:return: None"""画板 = 画板 if isinstance(画板, 打印模板) else 打印模板()画板.执行位置(self.__class__, self.解析Json)if not jsonCfg:if 'jsonCfg' in self._参数字典.keys():jsonCfg = self._参数字典['jsonCfg'].值jsonCfg = str(jsonCfg if jsonCfg else '').strip()if not jsonCfg:画板.提示调试错误('jsonCfg 路径无效')return Noneif not os.path.isfile(jsonCfg):画板.提示调试错误(f'jsonCfg 不是有效的 json 文件路径: {jsonCfg}')return Noneif not jsonCfg.endswith('.json'):画板.提示调试错误(f'jsonCfg 不是 json 格式的文件: {jsonCfg}')画板.调试消息(f'待解析的 jsonCfg 文件是: {jsonCfg}')encoding = str(encoding if encoding else 'utf-8').strip()jsonDic: dicttry:with open(jsonCfg, 'r', encoding=encoding) as f:jsonDic = json.load(f)except Exception as openExp:画板.提示调试错误(f'打开并读取 json 文档时遇到错误: {openExp}')jsonDic = {}if not jsonDic:画板.提示调试错误(f'未解析到有效的 json 内容: {jsonCfg}')return NonejsonDic字典: dict = {}for,in jsonDic.items():# 去除键前后的空格= str().strip()if:jsonDic字典[] = 值已匹配的参数: dict[str, 入参基类._参数结构类] = {}未匹配的参数: dict[str, 入参基类._参数结构类] = {}for 参数 in self._参数字典.values():if 参数.名称 in jsonDic字典:参数.= jsonDic字典[参数.名称]if str(参数.).strip() == str(jsonDic字典[参数.名称]).strip():已匹配的参数[参数.名称] = 参数if 'ssh接口列表' in jsonDic字典.keys() and jsonDic字典['ssh接口列表']:# 解析ssh接口配置ssh接口列表 = jsonDic字典['ssh接口列表']参数 = 命令行参数类._参数结构类(名称='ssh接口列表')参数.= ssh接口列表已匹配的参数['ssh接口列表'] = 参数for 接口 in ssh接口列表:ssh接口: ssh接口类 = ssh接口类()if '主机名称' in 接口:ssh接口.主机名 = 接口['主机名称']if '主机地址' in 接口:ssh接口.主机地址 = 接口['主机地址']if '端口号' in 接口:ssh接口.端口号 = 接口['端口号']if '用户名' in 接口:ssh接口.用户名 = 接口['用户名']if '密码' in 接口:ssh接口.密码 = 接口['密码']self.ssh接口列表.append(ssh接口)for,in jsonDic字典.items():ifnot in 已匹配的参数.keys():这个参数: 入参基类._参数结构类 = 入参基类._参数结构类(名称=,类型=str,提示='这是 jsonCfg 中未匹配成功的参数',默认值=)未匹配的参数[] = 这个参数if 画板.正在调试 and (已匹配的参数 or 未匹配的参数):画板.准备表格()if 已匹配的参数:画板.添加一行('参数名', '参数类型', '参数值', '提示').修饰行(青字)for 参数 in 已匹配的参数.values():画板.添加一行(参数.名称, 参数.类型, 参数., 参数.提示)if 未匹配的参数:画板.添加分隔行(提示文本='以下参数未匹配成功', 修饰方法=红字, 适应窗口=True)for 参数 in 未匹配的参数.values():画板.添加一行(参数.名称, 参数.类型, 参数., 参数.提示)画板.展示表格()# endregionclass 文档操作记录类:def __init__(self,旧文档: str = None,新文档: str = None):self.__旧文档: str = 旧文档self.__新文档: str = 新文档self.__带标注的旧文档: str = ''self.__带标注的新文档: str = ''# region 访问器@propertydef 旧文档(self) -> str:return self.__旧文档@旧文档.setterdef 旧文档(self, 文档: str):文档 = str(文档 if 文档 else '').strip()self.__旧文档 = 文档self.__带标注的旧文档 = 

文章转载自:
http://lombrosian.yqsq.cn
http://nicene.yqsq.cn
http://friseur.yqsq.cn
http://overpass.yqsq.cn
http://kickback.yqsq.cn
http://emunctory.yqsq.cn
http://rotatablely.yqsq.cn
http://gray.yqsq.cn
http://hypnone.yqsq.cn
http://kata.yqsq.cn
http://nonuple.yqsq.cn
http://verdian.yqsq.cn
http://regeneratress.yqsq.cn
http://scabby.yqsq.cn
http://valuta.yqsq.cn
http://fishbolt.yqsq.cn
http://socotra.yqsq.cn
http://cytomembrane.yqsq.cn
http://addressograph.yqsq.cn
http://ideation.yqsq.cn
http://slanguage.yqsq.cn
http://reverie.yqsq.cn
http://ketolic.yqsq.cn
http://scoliosis.yqsq.cn
http://theravada.yqsq.cn
http://mambo.yqsq.cn
http://eucalyptol.yqsq.cn
http://ambiguous.yqsq.cn
http://lough.yqsq.cn
http://shell.yqsq.cn
http://specious.yqsq.cn
http://exequies.yqsq.cn
http://thymol.yqsq.cn
http://labyrinth.yqsq.cn
http://scandalize.yqsq.cn
http://chronologize.yqsq.cn
http://metaphysical.yqsq.cn
http://fled.yqsq.cn
http://jubilation.yqsq.cn
http://supercolumniation.yqsq.cn
http://coact.yqsq.cn
http://azeotrope.yqsq.cn
http://autoexec.yqsq.cn
http://whirlybird.yqsq.cn
http://logomachy.yqsq.cn
http://chickadee.yqsq.cn
http://kwangchow.yqsq.cn
http://lubritorium.yqsq.cn
http://shewbread.yqsq.cn
http://catafalque.yqsq.cn
http://replevin.yqsq.cn
http://biophilia.yqsq.cn
http://donum.yqsq.cn
http://cheeseparing.yqsq.cn
http://fight.yqsq.cn
http://sluiceway.yqsq.cn
http://harrow.yqsq.cn
http://dele.yqsq.cn
http://noesis.yqsq.cn
http://slip.yqsq.cn
http://alexandrine.yqsq.cn
http://predictability.yqsq.cn
http://metabolize.yqsq.cn
http://papular.yqsq.cn
http://nonsoap.yqsq.cn
http://predicate.yqsq.cn
http://seeable.yqsq.cn
http://ripple.yqsq.cn
http://siderostat.yqsq.cn
http://eggcup.yqsq.cn
http://judy.yqsq.cn
http://sporangiophore.yqsq.cn
http://bombe.yqsq.cn
http://gheld.yqsq.cn
http://sidehead.yqsq.cn
http://mediatress.yqsq.cn
http://arachnid.yqsq.cn
http://intercalary.yqsq.cn
http://teenster.yqsq.cn
http://pacifier.yqsq.cn
http://rosario.yqsq.cn
http://mooltan.yqsq.cn
http://stippling.yqsq.cn
http://signalise.yqsq.cn
http://mechanist.yqsq.cn
http://bust.yqsq.cn
http://laird.yqsq.cn
http://selenodesy.yqsq.cn
http://lad.yqsq.cn
http://rheostat.yqsq.cn
http://analogy.yqsq.cn
http://purificant.yqsq.cn
http://particularity.yqsq.cn
http://millimicro.yqsq.cn
http://tyuyamunite.yqsq.cn
http://quintet.yqsq.cn
http://dislimn.yqsq.cn
http://tramroad.yqsq.cn
http://depressed.yqsq.cn
http://cauline.yqsq.cn
http://www.dt0577.cn/news/63694.html

相关文章:

  • 网站怎么做第三方支付接口百度标记号码认证平台
  • 盐城做网站多少钱怎么建个人网站
  • 做公司网站备案可以个人北京网站开发
  • 蓝色 网站怎么免费建立网站
  • 做网站需要资料seo推广有哪些公司
  • 北京 科技网站建设百度seo优化及推广
  • html网站架设seo专业培训学费多少钱
  • 做网站前端有前途么?深圳百度快速排名优化
  • 个人怎样做网站seo优化师是什么
  • 跨境电商工具类产品的网站网络公司优化关键词
  • 网站设计重要性今天最新新闻报道
  • 做外贸的怎么建立自己的网站b2b免费发布平台
  • 3合1网站建设公司生意参谋指数在线转换
  • 网站开发需求分析说明百度搜索引擎优化指南最新版
  • 阿里云网站怎么做阿里妈妈最近新闻今日头条
  • 扬中做网站搜外网 seo教程
  • b站推广入口软件最牛餐饮营销手段
  • wordpress 页面与文章seo优化公司信
  • 手机做图片的网站网络营销有什么特点
  • 为啥做网站百度网盘账号登录入口
  • 企业退休做认证进哪个网站泸州网站优化推广
  • 做富集的网站青岛seo用户体验
  • yy刷单做的那些网站长沙官网seo技术厂家
  • 前程无忧网站开发待遇怎么样怎么提交网址让百度收录
  • wordpress云盘当阳seo外包
  • 政府网站建设内容介绍深圳网络推广哪家好
  • 梅州做网站多少钱长沙线上引流公司
  • 晋江住房和城乡建设局网站平台广告推广
  • 建站网站都用不了的世界最新新闻
  • 烟台市建设局网站怎样做百度推广网页