paramiko 远程远程部署软件脚本案例
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,paramiko 远程远程部署软件脚本案例# -*- coding: utf-8 -*-import paramikoimport sys, osimport datetimeimport subpr
千家信息网最后更新 2026年11月03日paramiko 远程远程部署软件脚本案例
paramiko 远程远程部署软件脚本案例
# -*- coding: utf-8 -*-import paramikoimport sys, osimport datetimeimport subprocessimport timeimport reimport hashlibreload(sys)sys.setdefaultencoding("utf-8")os.environ["PATH"] = "/usr/local/jdk18/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"os.environ["LANG"] = "en_US.UTF-8"ip_list = ["10.110.189.217","10.110.193.106"]class pub_filebeat(): def __init__(self): self.username = "redis" self.passwd = "123456" self.client_ssh = None self.sftpcliet = None self.port = 22 self.chan = None self.result = None # 创建一个ssh 链接 def create_ssh(self,ip): self.client_ssh = paramiko.SSHClient() self.client_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.client_ssh.connect(ip, self.port, self.username, self.passwd, timeout=5) self.chan = self.client_ssh.invoke_shell() self.flag=None ''' 在现有的ssh链接的基础上获取一个ftp链接 方式一 : transport = self.client_ssh.get_transport() self.sftpcliet = paramiko.SFTPClient.from_transport(transport) 方式二 : self.sftpcliet = self.client_ssh.open_sftp() ''' # # transport = self.client_ssh.get_transport() # self.sftpcliet = paramiko.SFTPClient.from_transport(transport) self.sftpcliet = self.client_ssh.open_sftp() def execute(self,ip): try: self.sendcmd(" sudo su - ") if self.flag == 1: self.sendcmd("redis@yto369") self.sendcmd(" cd /home/redis ") self.sendcmd(" tar -zxvf filebeat623.tar.gz ") self.sendcmd(" sed -i 's/hostip: 10.1.241.99/hostip: %s/g' filebeat623/filebeat.yml ; " % (ip)) self.sendcmd(" nohup filebeat623/filebeat -e -c filebeat623/filebeat.yml > info.log 2>&1 & ") print "%s filebeat 部署完成" % (ip) except Exception,e: print e.message def tranfile(self): try: self.sftpcliet.put("F:\dwchaoyue\ELK\/filebeat623.tar.gz", '/home/redis/filebeat623.tar.gz') except Exception,e: print e.message self.sftpcliet.close() def sendcmd(self,cmd): cmd = cmd + '\r' p = re.compile(r'\[root@.+\s.*\]') self.result = "" self.chan.send(cmd) while True: time.sleep(0.5) ret = self.chan.recv(65535).decode("utf-8") self.result = self.result + ret if 'password' in self.result.split(" "): self.flag = 1 break if p.search(ret): break # 遍历ip 列表 def bianli(self,ip_list): for ip in ip_list: self.create_ssh(ip) if self.check_result() >= 1 : print "%s filebeat 已部署,无需重新部署" % (ip) continue pass self.tranfile() self.execute(ip) if self.check_result() < 1: print "%s filebeat 部署失败 ,请重试" % (ip) self.client_ssh.close() self.sftpcliet.close() def check_result(self): std_in,std_out,std_err = self.client_ssh.exec_command("ps -ef | grep -i filebeat | grep -v 'grep' | wc -l") return int(std_out.read())if __name__ == "__main__": try: pb = pub_filebeat() pb.bianli(ip_list) except Exception, e: print eparamiko 远程执行命令和上传下载代码案例
Phttps://www.cnblogs.com/haigege/p/5513759.html
phttps://blog.csdn.net/a382486075/article/details/78658165
链接
utf-8
案例
方式
脚本
软件
上传下载
代码
命令
基础
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技图片
中关村互联网 科技集团
互联网科技保险
重庆互联网络科技
互联网科技公司发展
深圳互联网络科技有限公司
百单互联网科技有限公司
互联网科技缩写
互联网科技ppt模板
互联网科技股有哪些
甘肃拓世互联网科技有限公司
隆华科技工业互联网
福州新华互联网科技学校 知乎
互联网科技产业特征
想开互联网科技公司怎么样
晋城互联网科技
明优互联网科技有限公司
四川互联网展示科技馆设计
互联网高科技行业有哪些企业
悟空问答互联网科技
手磨咖啡
中关村互联网 科技集团
麻工互联网科技
上海互联网科技有限公司
天下捷融互联网科技
宁夏众和广鑫互联网科技有限公司
岳阳华臻互联网科技有限公司
众安科技工业互联网合作
产业互联网科技服务公司
互联网科技收购价值