温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

paramiko实现远程配置软件脚本

发布时间:2020-06-05 16:57:19 来源:亿速云 阅读:343 作者:Leah 栏目:系统运维

这篇文章运用了实例代码展示paramiko实现远程配置软件脚本,代码非常详细,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。

# -*- coding: utf-8 -*- import paramiko import sys, os import datetime import subprocess import time import re import hashlib reload(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 e

关于paramiko实现远程配置软件脚本就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI