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 ...........\n‘
shutil.copyfile(source_file,dest_file)
print ‘Get version successfully\n‘
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\n‘)

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

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/\n‘)
time.sleep(1)
ssh1.send(‘sha256sum NPT1800_Emb.bin\n‘)
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\n‘)
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+‘\n‘
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]+‘\n‘)
time.sleep(1)
ssh1.send(‘root\n‘)
ssh1.send(‘cd /sdboot/up/\n‘)
time.sleep(1)
ssh1.send(‘sha256sum NPT1800_Emb.bin\n‘)
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\n")
time.sleep(1)
edit_up= ssh1.recv(10000)
print edit_up
print "Start to sync standby MCP version........"
ssh1.send(‘sync\n‘)
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 \n‘)

时间: 2024-10-25 05:38:03

NE Upgrade python script. Need to write a Tkinter GUI for it的相关文章

source upgrade python version

###source upgrade python version 1,Choose Version: https://www.python.org/downloads/ 2,Install environment packages  yum install gcc zlib zlib-devel openssl openssl-devel 3,decompress/install tar.gz package a, part1 (install python)   $ tar -zxvf Pyt

my python script (1) ---------create model script file

# my  python script #  to create script file #!/usr/bin/env python # -*- coding:utf-8 -*- import os,subprocess child = subprocess.Popen('which python',stdout = subprocess.PIPE,shell=True) (pypath,error) = child.communicate() pypath = pypath.strip('\n

Notepad++插件Python Script和Emmet的安装使用教程(转载)

安装插件Python Script和Emmet: 最近在做一个项目,涉及到大量的HTML.CSS代码的编写,手动写代码效率实在是低下.于是想搜索一下,有没有Notepad++插件可以支持自动生成的,果不其然还真有.Emmet,这款神器其实就是 Zen Coding的升级版,它可以极大的提高代码编写的效率,并提供了一种非常简练的语法规则,立刻生成对应的 HTML 结构或者 CSS代码,同时还有多种实用的功能帮助进行前端开发. Emmet支持多种编辑器,如Sublime Text 2,TextMat

Notepad++插件Emmet和Python Script的安装

最近在做一个项目,涉及到大量的HTML.CSS代码的编写,手动写代码效率实在 是低下.于是想搜索一下,有没有Notepad++插件可以支持自动生成的,果不其然还真有.Emmet,这款神器其实就是 Zen Coding 的升级版,它可以极大的提高代码编写的效率,并提供了一种非常简练的语法规则,立刻生成对应的 HTML 结构或者 CSS 代码,同时还有多种实用的功能帮助进行前端开发. Emmet支持多种编辑器,如Sublime Text 2,TextMate 1.x,Eclipse/Aptana,E

My first python script for work

I write it yesterday to watch the NE process(rcpfd,cfgd) automatically, then i will write a window to implement it: #! /usr/bin/env python # -*- coding: UTF-8 -*- import paramikoimport sshimport osimport reimport time#RCPD异常类class RCPD_Exception(Exce

[Python] Execute a Python Script

Python scripts can be executed by passing the script name to the python command or created as executable commands that can run stand-alone. You’ll learn how to create both in this lesson. script.py: print("Hello World") When we want to run the s

Python script to create Screen from all Items/Graphs of a host

#!/usr/bin/env python import urllib2 import json import argparse def authenticate(url, username, password): values = {'jsonrpc': '2.0', 'method': 'user.login', 'params': { 'user': username, 'password': password }, 'id': '0' } data = json.dumps(values

Upgrade Python in Ubuntu

下载安装包.tgz tar -zxvf Python cd P.. ./configure make sudo make install 通过 /usr/local/bin/python -V 查看版本号 以下代码有问题: sudo rm /usr/bin/python sudo ln -s /usr/include/python2.7 /usr/bin/python 改为: sudo ln -s /usr/local/bin/python /usr/bin/python

Remote rsyslog server records the logs of python script

Ubuntu 14.04.1 LTS rsyslog server:  10.0.7.77 python client: 10.0.2.122 [rsyslog server] 1.Install rsyslog with apt-get sudo apt-get install -y rsyslog 2.edit /etc/rsyslog.conf ,uncomment this line $ModLoad immark # provides --MARK-- message capabili