首頁 >後端開發 >Python教學 >使用python實現主機批次管理

使用python實現主機批次管理

高洛峰
高洛峰原創
2017-03-26 17:51:421164瀏覽

    在日常的維運工作中批量對主機的是很常見的,市面上也有許多主機批量管理的軟體,但有時候這些軟體並不能完全的滿足我們的需求。 python中剛好提供了關於主機批量管理的模組,今天就讓我們來看看如何利用python實現主機批量管理

python提供主機批量管理的模組主要有三個paramiko、fabric與pexpect,今天我們主要說的是paramiko模組,paramiko模組是第三方模組

安裝:pip install paramiko或yum install python-paramiko如果都安裝失敗的話可以使用源碼安裝

源碼包下載地址: https://github.com/paramiko/paramiko/archive/master.zip

常用操作:

ssh = paramiko.SSHClient() //實例化,ssh會話類別

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())   //第一次連線自動回答為yes

ssh.connect('伺服器ip',連接埠,'使用者名稱','密碼')     / /連線伺服器

stdin,stdout,stderr = ssh.exec_command("指令")      //執行指令,標準輸出,指令成功返回,指令失敗回傳

ssh.close()       /關閉連線

上傳、下載:

get_put = paramiko.Transport((ip,port)) //伺服器ip與連接埠(使用SFTP時使用)

get_put .connect(username="root", password="123.com")    //連接服務器,用戶名和密碼

sftp = paramiko.SFTPClient.from_transport(get_put)     //使用SFTP協議

sftp。批次管理:

#!/usr/bin/python

#-*- coding: utf-8 -*-

import paramiko

#import os

def Connect(ip='127.0.0.1',Port=22,user='root',pwd='123.com'):

    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(hostname=ip, port=Port, username=user, password=pwd)  # 連線伺服器# #    return ssh                                      # 使用者輸入的是一個位址還是位址範圍

    __ip = ip.split('--')

    if len(__ip) == 2:                          #如果為位址範圍

##     #取出ip

        ip_range = int(__ip[1])                 #取出的最大

        host_ip_split = ip_add.split('.')       #將ip以.分隔為4段

        host_ip = int(host_ip) 取出的最小值   

        ip_3 = '.'.join(host_ip_split)+'.'   #將已去除了ip的最小值的剩餘部分重新拼接

        host_add_range =  range(host_ip_ip_range+ #產生連線ip的範圍

        add_pool = []

        for i in host_add_range:

##       拼接為合法的ip位址

            add_pool.append(add)                 #產生位址池

     池

    elif len(__ip) == 1:                         #若輸入的為單一位址

        valid_ip = __ip[0]

        ip_value = valid_ip.split('.')[0:4]     ip_value ]

        return __ip                              ##    Fa = True

    while Fa:

        ip = raw_input('請輸入ip位址或位址範圍: ')

        exclude_ip = raw_input(

        exclude_ip = raw_input('請輸入要排除的位址: ')

        try:

            ip_list = IP_ADD(ip)           #        #判斷使用者是否為排除位址池中的位址

                exclude_add = exclude_ip.split(',')   #定義排除格式

    c     list 排除地址

##            Fa = False                               # 33[31m位址格式錯誤\033[0m'

            print '''範例:

                                    127.0.0.1            對單一主機執行作業上使用作業      對一個位址範圍的主機執行作業

                    127.0.0.8,127.0.0.10     排除位址退出池中的位址

                  '''

            continue

   print '\033[31m#script_  

        shell_comd = raw_input('請輸入執行的指令: ')        #執行的指令

        if shell_comd == 'script_

#        if shell_comd == 'script_

#        if shell_comd == 'script_

 for i in ip_list:                           #循環位址池

                        #連接伺服器

                stdin, stdout, stderr = comd.exec_command( shell_comd)   #執行指令

                stderr = stderr.read()      #指令正確執行的結果

## ##

                if 作用              #那伺服器執行的指令

                    print stdout

#                else:

                    print '\033           print stderr

            except:

              '\033[31m%s連線失敗\033[0m' %i

paramiko也可以實作檔案批次下載和批次上傳,原理和批次執行指令基本上一樣。

以上是使用python實現主機批次管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn