首页 文章 精选 留言 我的

精选列表

搜索[可信执行环境],共10000篇文章
优秀的个人博客,低调大师

利用paramiko模块批量登录(执行命令/上传文件)

工作中由于服务器主机很多,如果手动的一台一台去添加ssh认证,效率太低了,而此脚本正是为了解决此问题 此脚本的实现的功能: 1、实现了(密码、ssh认证)单一主机登录和批量主机登录 2、实现了(密码、ssh认证)单一主机上传文件和批量主机上传文件(下载文件的原理和此一样) 3、主机批量添加ssh认证(这才是我的主要目的) 脚本的不足: 1、只能循环主机名 2、所有的主机的账号和密码都是一样的,不够灵活 有需求的朋友可以修改下代码,可以把主机、账号密码存放在一个文件中,循环读取文件 下面贴上代码吧 如下代码有错 欢迎各位纠正 有错才有进步 你们的指点是我进步的源泉 #!/usr/bin/python #coding:utf-8 #需要安装paramiko模块 #yuminstallpython-paramiko-y importparamiko,os classSSH2: def__init__(self,hostname=None,username=None,password=None,key_file=None,port=22,timeout=30): self.h=hostname self.u=username self.p=password self.t=timeout self.port=int(port) self.key_file=key_file #使用密码登录 defssh2_pass(self,command=None): paramiko.util.log_to_file('/tmp/paramiko.log') ssh2=paramiko.SSHClient() ssh2.load_system_host_keys() ssh2.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh2.connect(hostname=self.h,username=self.u,password=self.p,port=self.port,timeout=self.t) stdin,stdout,stderr=ssh2.exec_command(command) print'{0}\t{1}'.format(self.h,command) printstdout.read() ssh2.close() #使用key密钥登录 defssh2_key(self,command=None): paramiko.util.log_to_file('/tmp/paramiko.log') key=paramiko.RSAKey.from_private_key_file(self.key_file) ssh2=paramiko.SSHClient() ssh2.load_system_host_keys() ssh2.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh2.connect(hostname=self.h,username=self.u,pkey=key,port=self.port,timeout=self.t) stdin,stdout,stderr=ssh2.exec_command(command) print'{0}\t{1}'.format(self.h,command) printstdout.read() ssh2.close() #使用密码上传文件 defsftp_pass_put(self,localpath=None,remotepath=None): t=paramiko.Transport((self.h,self.port)) t.connect(username=self.u,password=self.p) sftp=paramiko.SFTPClient.from_transport(t) sftp.put(localpath=localpath,remotepath=remotepath) printself.h,localpath t.close() #使用key密钥上传文件 defsftp_key_put(self,localpath=None,remotepath=None): key=paramiko.RSAKey.from_private_key_file(self.key_file) t=paramiko.Transport((self.h,self.port)) t.connect(username=self.u,pkey=key) sftp=paramiko.SFTPClient.from_transport(t) sftp.put(localpath=localpath,remotepath=remotepath) printself.h,localpath t.close() if__name__=='__main__': ###################使用密码登录主机############################################################# #远程服务器IP地址 #hostname='192.168.31.102' #远程服务器的账号和密码 #username='xiaomo' #password='xiaomo' #SSH=SSH2(hostname=hostname,username=username,password=password,port=22) #SSH.ssh2_pass(command='df-h') ###################使用密钥登录主机############################################################# #远程服务器IP地址 #hostname='192.168.31.102' #远程服务器的账号 #username='xiaomo' #指定密钥文件的位置 #key_file='/home/xiaomo/.ssh/id_rsa' #SSH=SSH2(hostname=hostname,username=username,key_file=key_file,port=22) #SSH.ssh2_pass(command='df-h') ###################使用密码上传文件############################################################# #远程服务器IP地址 #hostname='192.168.31.102' #远程服务器的账号和密码 #username='xiaomo' #password='xiaomo' #本地文件绝对路径 #密钥需要自己ssh-keygen生成 #local='/home/xiaomo/.ssh/id_rsa.pub' #远程服务器文件绝对路径 #remote='/tmp/id_rsa.pub' #SSH=SSH2(hostname=hostname,username=username,password=password,port=22) #SSH.sftp_pass_put(localpath=local,remotepath=remote) #SSH.ssh2_pass(command='ls-l{0}'.format(remote)) ###################使用密钥上传文件############################################################# #远程服务器IP地址 #hostname='192.168.31.102' #远程服务器的账号 #username='xiaomo' #指定密钥文件的位置 #key_file='/home/xiaomo/.ssh/id_rsa' #本地文件绝对路径 #local='/home/xiaomo/.ssh/id_rsa.pub' #远程服务器文件绝对路径 #remote='/tmp/id_rsa.pub' #SSH=SSH2(hostname=hostname,username=username,port=22,key_file=key_file) #SSH.sftp_key_put(localpath=local,remotepath=remote) #SSH.ssh2_key(command='ls-l{0}'.format(remote)) #####################使用密码批量添加用户认证############################################################ #hostname=['192.168.31.101','192.168.31.102','192.168.31.103'] #远程服务器的账号和密码 #username='xiaomo' #password='xiaomo' #本地文件绝对路径 #local='/home/xiaomo/.ssh/id_rsa.pub' #远程服务器文件绝对路径 #remote='/tmp/id_rsa.pub' #批量上传密钥文件并添加认证 #如果.ssh目录或authorized_keys文件事先存在,请确认权限是否正确 #forhinhostname: #SSH=SSH2(hostname=h,username=username,password=password,port=22,timeout=30) ##/home/xiaomo/.ssh/是远程服务器的用户目录 #SSH.ssh2_pass(command='(umask077;test-d/home/xiaomo/.ssh||mkdir/home/xiaomo/.ssh)') #SSH.sftp_pass_put(localpath=local,remotepath=remote) #SSH.ssh2_pass(command='(umask077;cat{0}>>/home/xiaomo/.ssh/authorized_keys&&rm-f{0})'.format(remote)) #SSH.ssh2_pass(command='cat/home/xiaomo/.ssh/authorized_keys') ##################使用密钥批量上传文件################################################################### #hostname=['192.168.31.101','192.168.31.102','192.168.31.103'] #远程服务器的账号 #username='xiaomo' #指定密钥文件的位置 #key_file='/home/xiaomo/.ssh/id_rsa' #本地文件绝对路径 #local='/home/xiaomo/.ssh/id_rsa.pub' #远程服务器文件绝对路径 #remote='/tmp/id_rsa.pub' #forhinhostname: #SSH=SSH2(hostname=h,username=username,port=22,key_file=key_file) #SSH.sftp_key_put(localpath=local,remotepath=remote) #SSH.ssh2_key(command='ls-l{0}'.format(remote)) #############################################################################################

优秀的个人博客,低调大师

多模态RAG幻觉率仍超40%,5段代码构建可信检索增强生成管道

引言:多模态RAG的信任危机 2026年7月,随着企业知识库全面向图文、表格、PDF等多模态数据演进,多模态RAG(检索增强生成)成为标配。然而,权威第三方评测机构最新报告显示,在处理复杂图表与跨页表格时,主流多模态RAG系统的幻觉率依然高达40%以上。大模型在面对检索到的低质量图像或错位文本时,往往会“强行脑补”出看似合理实则致命的数据。打破这一困局,必须从数据解析、重排序、溯源到拦截进行全链路代码级重构。

优秀的个人博客,低调大师

尝鲜 HarmonyOS NEXT 开发环境搭建

申请好 HarmonyOS NEXT的开发套件白名单后,就可以下载最的开发套件了,最新的开发工具更新时间是2024-06-17,DevEcoStudio5.0-API12-x86-402。下载后是这样的: 我用的是 MAC PRO,所以下载的是 MAC 版,这里有个小坑,如果MAC 版本过低(11以下)模拟器无法使用。我当时是10.xx 版本,一直没有升级,没办法,心里不想升级,为了用上,升了吧。 安装也很简单,dmg 包直接安装即可,安装完成后,打开是这样的: 打开一个应用或新建应用: 搞个 HelloWorld @Entry @Component struct Index { @State message: string = 'Hello World'; build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: '__container__', align: VerticalAlign.Center }, middle: { anchor: '__container__', align: HorizontalAlign.Center } }) } .height('100%') .width('100%') } } 运行可以用三种方式: 1、Previewer 直接预览: 在工具的右侧可以找到Previewer窗口,即可直接预览 2、启动模拟器 先找到 Device Manager 设备管理器,打开: 在设备管理器中可以看到默认安装包中带的模拟器,直接点运行(如果 MAC 版本低会启动失败) 启动后我们就可以看到模拟器了: 3、真机测试 土豪级的可以上 mate 60 或 pro,70年底要出了,直接搭载 NEXT 版系统,不着急的可以等等。 好了,搭建完毕,你也试试吧。关注威哥爱编程,一起学鸿蒙呀。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册