paramiko远程远程部署软件脚本案例

  


paramiko远程远程部署软件脚本案例


# - * -编码:utf - 8 - *      进口paramiko   导入系统,操作系统   进口日期时间   导入子流程   导入的时间   进口再保险   进口hashlib      重载(系统)   sys.setdefaultencoding (“utf - 8”)   操作系统。环境(“路径”)="/usr/地方/jdk18/bin:/usr/地方/sbin:/usr/地方/bin:/sbin:/bin:/usr/sbin:/usr/bin:/根/bin”   操作系统。环境(“郎”)=" en_US.UTF-8 "      ip_list=(“10.110.189.217”、“10.110.193.106”)         类pub_filebeat ():      def __init__(自我):   自我。用户名=案词觥?   自我。passwd=" 123456 "   自我。client_ssh=没有   自我。sftpcliet=没有   自我。端口=22   自我。陈=没有   自我。结果=没有         #创建一个ssh链接   def create_ssh(自我、ip):   自我。client_ssh=paramiko.SSHClient ()   self.client_ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy ())   self.client_ssh。连接(ip,自我。港口,自我。用户名、自我。passwd,超时=5)   自我。陈=self.client_ssh.invoke_shell ()   self.flag=没有   “‘   在现有的ssh链接的基础上获取一个ftp链接   方式一:   运输=self.client_ssh.get_transport ()   自我。sftpcliet=paramiko.SFTPClient.from_transport(运输)      方式二:   自我。sftpcliet=self.client_ssh.open_sftp ()   “‘   #   #运输=self.client_ssh.get_transport ()   #自我。sftpcliet=paramiko.SFTPClient.from_transport(运输)   自我。sftpcliet=self.client_ssh.open_sftp ()      def执行(自我、ip):   试一试:   自我。sendcmd (“sudo苏——”)   如果自我。标志==1:   self.sendcmd (“redis@yto369”)   自我。sendcmd (“cd/home/redis”)   自我。sendcmd(“焦油-zxvf filebeat623.tar。广州”)   自我。sendcmd (“sed -我的/hostip: 10.1.241.99/hostip: % s/g的filebeat623/filebeat。yml;“% (ip))   自我。sendcmd (“nohup filebeat623/filebeat - e - c filebeat623/filebeat。yml祝辞信息。日志2祝辞,1,”)   打印”% s filebeat部署完成“% (ip)   除了例外,e:   打印e.message         def tranfile(自我):   试一试:   self.sftpcliet.put (“F: \ dwchaoyue \麋鹿\/filebeat623.tar。广州”、“/home/复述/filebeat623.tar.gz”)   除了例外,e:   打印e.message   self.sftpcliet.close ()         def sendcmd(自我,cmd):   cmd=cmd + ' \ r '   p=re.compile (r ' \ [root@。+ \ s . * \]”)   自我。结果=" "   self.chan.send (cmd)   而真正的:   time . sleep (0.5)   ret=self.chan.recv (65535) .decode (“utf - 8”)   自我。结果=自我。结果+ ret   如果在self.result‘密码’。分割(" "):   自我。标志=1   打破   如果p.search (ret):   打破         #遍历ip列表   def bianli(自我,ip_list):   对ip ip_list:   self.create_ssh (ip)   如果self.check_result()在=1:   打印”% s filebeat已部署,无需重新部署“% (ip)   继续   通过   self.tranfile ()   self.execute (ip)   如果self.check_result () & lt;1:   打印”% s filebeat部署失败,请重试“% (ip)   self.client_ssh.close ()   self.sftpcliet.close ()         def check_result(自我):   std_in、std_out std_err=self.client_ssh。exec_command (“p ef | grep - i filebeat | grep - v grep | wc - l”)   返回int (std_out.read ())         if __name__==癬_main__”:   试一试:   pb=pub_filebeat ()   pb.bianli (ip_list)   除了例外,e:   打印e


paramiko远程执行命令和上传下载代码案例

Phttps://www.cnblogs.com/haigege/p/5513759.html

Phttps://blog.csdn.net/a382486075/article/details/78658165


paramiko远程远程部署软件脚本案例