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