paramiko 远程远程部署软件脚本案例
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,paramiko 远程远程部署软件脚本案例# -*- coding: utf-8 -*-import paramikoimport sys, osimport datetimeimport subpr
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
我的世界荣耀战神服务器在哪里
银行网络安全宣传周进社区
广东东莞计算机网络技术分数
我的世界怎么添加虎牙宇宙服务器
在数据库中不小心打错字了
平台网络安全管理制度
水晶山服务器
房地产数据库商函
网络安全课
wifi损坏 转移数据库
服务器安全吗位数
网络安全与应用技术就业方向
中小银行软件开发
数据库联系表
租哪里的服务器好
方舟服务器管理器网络状态
软件开发用的是什么语言
百年党建网络安全简报
网络技术的预计市场占有率
微信是什么软件开发是
服务器管理员 证书
软件开发免费培训 签约2年
选课数据库
助力网络安全宣传周
即时通讯软件开发排名前十名
华为网络技术PPT
服务器增加一个网络映射
sql是指哪个数据库
构筑网络安全屏障的守护者们
sql数据库一次性导入整个表