zoukankan      html  css  js  c++  java
  • NE Upgrade python script. Need to write a Tkinter GUI for it

    # -*- coding: utf-8 -*-
    #from ftplib import FTP

    __authour__='CC'

    import os
    import telnetlib
    import time
    import shutil
    import socket
    #import pdb
    import paramiko
    from Tkinter import *
    import glob
    import re


    def get_version_path(n1,n2,n3):
    if(int(n2)==0 and int(n1)==5):
    n11=n1
    print('Upgrade version is v5.0 version')
    if(int(n2)==1):
    n11=n1 + '.' + n2
    print('Upgrade version is v5.1 version')
    if(int(n2)==5):
    n11=n1 + '.' + n2
    print('Upgrade version is v5.5 version')
    if(int(n1)==6 and int(n2)==0):
    n11=n1 + '.' + n2
    print('Upgrade version is v6.0 version')
    #判断是Temp version or official version
    if int(n3)>500:
    server_path_tp1 ='\\172.18.104.44\R&D TN China\R&D_Server\Version Management\Dev_Version\TempVersion\NPTI\' + 'V' + n11 + '\' + versionNUM
    print 'version is a temp version'
    else:
    server_path_tp1 ='\\172.18.104.44\R&D TN China\R&D_Server\Version Management\Dev_Version\Version to V&V\NPTI\' + 'V' + n11 + '\' +'V' + versionNUM
    print 'version is official vesion'
    #print server_path_tp1
    server_path_tp2=server_path_tp1+'*'

    #通过通配符函数,通配名字"NPT/NPT-1800/V5.1/versionNUM*的路径。
    #print server_path_tp2
    server_path_tp3=glob.glob(server_path_tp2)
    server_path_tp4=server_path_tp3[0]
    server_path=str(server_path_tp4)

    #print server_path

    print ('Version path in server:%s' %server_path)
    #print os.listdir(server_path)
    #print os.getcwd()
    #判断’D:\version\NPT\1800‘是否存在
    path='D:\version\NPT\1800'
    isExists=os.path.exists(path)
    if not isExists:
    os.makedirs(r'D:\version\NPT\1800')
    return server_path



    def sftp_get_version(version_type,server_path,hostname):


    os.chdir('D:\version\NPT\1800')
    s=n1+n2+n3
    #print ('version_type is %d' %version_type)
    if version_type==1 or 3:
    source_file=server_path + '\' +'NPT1800_Emb_'+ s +'.bin'
    dest_file='NPT1800_Emb_'+ s +'.bin'
    shafile= open(server_path + '\' +'NPT1800_Emb_1p1_sha256')
    sha.append(shafile.read( ))
    print ('Hash of version is '+sha[0])
    shafile.close( )
    print ('source_file is %s' %source_file)
    if version_type==2:
    source_file=server_path + '\' +'NPT1800_Emb_2p0_'+ s +'.bin'
    dest_file='NPT1800_Emb_2p0_'+ s +'.bin'
    shafile= open(server_path + '\' +'NPT1800_Emb_2p0_sha256')
    sha.append(shafile.read( ))
    print ('Hash of version is '+sha[0])
    shafile.close( )
    print ('source_file is %s' %source_file)
    #dest_file='NPT1800_Emb.bin'

    FileExists=os.path.isfile(dest_file)
    if not FileExists:
    print 'Start get version ........... '
    shutil.copyfile(source_file,dest_file)
    print 'Get version successfully '
    else:
    print 'File exists'


    try:
    sftp_port = 22
    username='root'
    password='root'
    t=paramiko.Transport(hostname,sftp_port)
    t.connect(username=username,password=password)
    sftp=paramiko.SFTPClient.from_transport(t)
    local_dir = 'D:\version\NPT\1800\'
    remote_dir='/sdboot/up/'
    dest_file1='NPT1800_Emb.bin'
    print 'Start upload new version ......'
    sftp.put(os.path.join(local_dir,dest_file),os.path.join(remote_dir,dest_file1))
    t.close()
    print 'upload new version successful'

    except:
    print "upload new version fail"
    t.close()


    if __name__ == '__main__':
    sha=[]
    hostname = raw_input('Input NPT1800 IP like a.b.c.d ')


    versionNUM = raw_input('Input the full name of versionNUM like 5.0.018 please input 5.0.018 ')
    version_type = int(raw_input('1+1 mode input 1;2+0 mode input 2;1+1 mode print 3 '))

    listNum=versionNUM.split('.',)
    n1=listNum[0]
    n2=listNum[1]
    n3=listNum[2]
    server_path=get_version_path(n1,n2,n3)

    sftp_get_version(version_type,server_path,hostname)


    #记录ssh 登录日志
    paramiko.util.log_to_file("log.log")
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #ssh.connect("某IP地址",22,"用户名", "口令")
    ssh.connect(hostname,22,"root", "root")
    #sh 登录到NE,设置FTP连接权限:
    '''
    stdin, stdout, stderr = ssh.exec_command("/etc/init.d/xinetd stop")
    stdin, stdout, stderr = ssh.exec_command("tcpsvd 0 21 ftpd -w /ftppub &")
    stdin, stdout, stderr = ssh.exec_command("/etc/init.d/xinetd start")
    '''
    #修改startup文件
    stdin, stdout, stderr = ssh.exec_command("sed -i 's/down/up/g' /sdboot/startup")
    ssh1=ssh.invoke_shell()
    ssh1.send('cd /sdboot/up/ ')
    time.sleep(1)
    ssh1.send('sha256sum NPT1800_Emb.bin ')
    time.sleep(7)
    sha1 = ssh1.recv(10000)
    print sha1
    pattern1=re.compile(sha[0])
    hash_match=re.findall(pattern1,sha1)
    if hash_match:
    print "Main MCP hash is OK"
    if version_type ==3:
    dest_file='NPT1800_Emb.bin'
    stdin, stdout, stderr = ssh.exec_command('arp ')
    a=''
    for std in stdout.readlines():
    a+=std
    print a
    pattern2=re.compile('(169.254.1.2|169.254.1.3)')
    backup_ip=re.findall(pattern2,a)
    print('Standby MCP IP is '+backup_ip[0])

    str='ftpput -u root '+backup_ip[0]+' /sdboot/up/'+dest_file+' /sdboot/up/'+dest_file+' '
    print str
    stdin, stdout, stderr = ssh.exec_command(str)
    print stdout.readline()
    b=''
    for std in stdout.readlines():
    b+=std
    print b
    ssh1.send('telnet '+backup_ip[0]+' ')
    time.sleep(1)
    ssh1.send('root ')
    ssh1.send('cd /sdboot/up/ ')
    time.sleep(1)
    ssh1.send('sha256sum NPT1800_Emb.bin ')
    time.sleep(7)
    sha2 = ssh1.recv(10000)
    print sha2
    pattern1=re.compile(sha[0])
    hash_match1=re.findall(pattern1,sha2)
    if hash_match1:
    print "Standby MCP hash is OK"
    #print "Start sync version.........."
    ssh1.send("sed -i 's/down/up/g' /sdboot/startup ")
    time.sleep(1)
    edit_up= ssh1.recv(10000)
    print edit_up
    print "Start to sync standby MCP version........"
    ssh1.send('sync ')
    else:
    print "Standby MCP shasum error"


    if (hash_match!=[])and(hash_match1!=[]):
    print "Start to sync main MCP version.........."
    stdin, stdout, stderr = ssh.exec_command("sync")
    print stdout.readline()
    print "Finish main MCP sync version"
    time.sleep(60)
    sync_result=ssh1.recv(10000)
    print sync_result
    pattern_sync=re.compile('#')
    sync_complete=re.findall(pattern_sync,sync_result)
    if sync_complete==1:
    print 'Complete Standby MCP.'
    else:
    print 'Standby MCP sync error!'
    else:
    print "shasum error"
    ssh.close()
    raw_input('press any key to exit ')

  • 相关阅读:
    jq实现多级手风琴效果
    css弹性盒布局
    css兼容处理
    bootstrap--双日历插件
    char*,string,char a[], const char *,之间的转换
    8.Maximum Depth of Binary Tree
    7. Minimum Depth of Binary Tree-LeetCode
    6. Reverse Linked List 逆转单链表
    5.Maximum Product Subarray-Leetcode
    卷积神经网络(Convolutional Neural Networks)CNN
  • 原文地址:https://www.cnblogs.com/AlwaysT-Mac/p/6039772.html
Copyright © 2011-2022 走看看