파이썬 멀티 프로세스 배치 관리 호스트;

  1. 장면 분석;

           

   2. 예 코드;



1.安装相关支持包

pip3 설치 pycrypto의 
pip3.6 설치 paramiko 

2.远程执行命令示例代码; 

#!는 / usr / 빈 / ENV의 python36 
가져 오기 프로세스의 멀티 프로세싱에서 
수입 paramiko의 
수입에서 sys 
사용자 이름 = '루트' 
암호 = 'P의 @의 ssw0rd' 
포트 = 22 
시간 초과 = 60 
데프 runcmd를 (IP, cmd를) : 
    S = paramiko.SSHClient () 
    s.set_missing_host_key_policy (paramiko.AutoAddPolicy ()) 
    시도 : 
        s.connect를 (호스트 = IP, 포트 = 포트, 사용자 이름 = 사용자 이름, 암호 = 암호 제한 시간 = 시간 초과) 
        표준 입력, 표준 출력, 표준 에러 = s.exec_command (cmd를) 
        결과 = stdout.read () 
        인쇄 (IP, 결과)  
    을 제외 :
        인쇄 ( "존재하지 않는") + IP
 
DEF ipProcess는 () 
    시도 : 
        에 cmd = sys.argv에 [1] 
        I에 대한 범위 (4,16) 
            IP = '. 172.21.38 % S'% I의 
            p = 프로세스 (목표 = runcmd를, 인수의 = (IP를 cmd를)) 
            p.start () 
    IndexError 제외 : 
        인쇄 ( "입력 명령하시기 바랍니다") 
     
__name__ == '__main__'의 경우 : 
    ipProcess ()


3. 구현의 결과;

python3.6의 bbc_init.py 가동 시간

의 image.png


4. 패키지 원격 명령 실행 및 파일 업로드;

#! / usr / bin / python 부분을 ENV의 
# - * - 코딩 :. UTF-8 - * - 
가져 오기 paramiko의 
 
클래스 SSHConnection (객체) 
 
    는 def __init의 __ (자체, 호스트 = '192.168.12.68', 포트 = 22이며, 사용자 이름 = 'locojoy 'PWD ='123321QQ ') :! 
        self.host = 호스트 
        self.port = 포트 
        self.username = 사용자 이름 
        self.pwd의 PWD = 
        자기 .__ K = 없음 
 
    DEF RUN (자동) : 
        self.connect () 원격 서버 번호에 연결 
        self.upload에서 ( 'db.py', '/ tmp를 / 1.py') # 원격 서버의 파일 업로드 / tmp를 / 디렉토리에 로컬 db.py 및 1.py 이름 
        self.cmd ( 'DF를 ') # 안양 명령 실행 
        self.close () # 접속 가까이
  
    ) (DEF 연결 셀프 : 
        전송 paramiko.Transport = ((self.host, self.port))
        transport.connect (사용자 이름 = self.username, 암호 = self.pwd) 
        자기 .__ 전송 = 전송 
 
    데프 가까운 (자동) : 
        자기 .__ transport.close () 
 
    : 데프 (자동, local_path, target_path) 업로드 
        SFTP = paramiko.SFTPClient합니다. from_transport (자기 .__ 전송) 
        sftp.put (local_path, target_path) 
 
    DEF cmd를 (자기 명령) 
        SSH = paramiko.SSHClient () 
        ssh._transport = 자기 .__ 전송 
        #执行命令
        표준 입력, 표준 출력, 열려진 = ssh.exec_command (명령 ) 
        #获取命令结果
        결과 stdout.read = () 
        출력 (결과) 
        반환 결과 
 
OBJ SSHConnection = () 
obj.run ()

추천

출처blog.51cto.com/breaklinux/2421126