更新: 2010-04-11
字型:【大 中 小】
測試機器:10.10.33.119;os:redhat linux4
測試路徑:/home/sonky
【指令碼1】:使用exec*()系列函式,在python裡面,os.exec*()系列命令會完全代替python直譯器,如果執行os.exec*()函式,則python直譯器和指令碼將在os.exec*()執行之後終止。如果如果想繼續執行,必須
使用os.fork()函式來啟動乙個新子程序。【建立.py檔案後,用chmoda+u *.py命令修改檔案屬性後,./*.py可以執行指令碼】
#! /usr/bin/envpython
importos,glob
cmd = ['/bin/tar',
'-x',
'-z',
'-f',
]tar_file_list =glob.glob('*.tar.gz')
for tar_file intar_file_list:
if os.fork():
os.wait()
else:
os.execv(cmd[0], cmd + [tar_file,])
print "installmpich2..."
configure =['./configure','--prefix=/home/sonky/mpich2']
make =['/usr/bin/make']
install =['/usr/bin/make','install']
os.chdir('/home/sonky/mpich2-1.0.6')
i=os.fork()
if i!=0:
os.wait()
n=os.fork()
ifn!=0:
os.wait()
os.execv(install[0],install)
else:
os.execv(make[0],make)
else:
os.execv(configure[0],configure)
【指令碼2-mpich.py】:在linux(unix),可以使用os.spawn*()系列函式,該函式功能類似於os.exec*(),
但它們可以通過引數(p_wait,p_nowait等)來實現是否繼續執行還是終止指令碼,其中sleep3只是為了除錯的時候暫停一下可以看到那一步已經完成。
#!/usr/bin/python
import os,glob
tar = ['/bin/tar','-xzf',]
print 「*****=unzip sourcefile*****=」
tar_file_list =glob.glob('*.tar.gz')
for tar_file intar_file_list:
os.spawnv(os.p_wait,tar[0], tar + [tar_file,])
print "*****=installmpich*****="
sleep =['/bin/sleep','3']
os.spawnv(os.p_wait,sleep[0],sleep)
configure =['./configure','--prefix=/home/sonky/mpich2']
make =['/usr/bin/make']
install =['/usr/bin/make','install']
os.chdir('/home/sonky/mpich2-1.0.6')
os.spawnv(os.p_wait,configure[0],configure)
print "step1:configuredone!"
os.spawnv(os.p_wait,sleep[0],sleep)
os.spawnv(os.p_wait,make[0],make)
print "step2:makedone!"
os.spawnv(os.p_wait,sleep[0],sleep)
os.spawnv(os.p_wait,install[0],install)
print "step3:installdone!"
【指令碼3】更加完善的指令碼,加入配置檔案功能
#! /usr/bin/python
from os.path import walk, join, normpath
from os import chdir
import os,time
def install(sourcefile, dirname,installdir):
print "installing" ,sourcefile
untarcmd = [ '/bin/tar', '-x', '-z', '-f' ]
workdir = dirname + '/' + sourcefile[:-7]
configurecmd = ['./configure', '--prefix=' + installdir]
makecmd = ['/usr/bin/make']
installcmd = ['/usr/bin/make', 'install']
os.chdir(path)
print "*****=unzip source file*****="
os.spawnv(os.p_wait, untarcmd[0], untarcmd + [sourcefile])
print "unzip done!"
time.sleep(2)
print "*****=install starting*****="
os.chdir(workdir)
os.spawnv(os.p_wait,configurecmd[0],configurecmd)
print "step1:configure done!"
time.sleep(2)
os.spawnv(os.p_wait,makecmd[0],makecmd)
print "step2:make done!"
time.sleep(2)
os.spawnv(os.p_wait,installcmd[0],installcmd)
print "step3:install done!"
def scan(arg,dirname, names):
for sourcefile in names:
if (sourcefile[:n]==installfile) and (sourcefile[-7:] == ".tar.gz"or sourcefile[-8:] == ".tar.bz2"):
print sourcefile,"will be installed"
install(sourcefile, dirname,installdir)
print sourcefile,"has been installed"
def configpath(cfgfile, installdir):
f = open(cfgfile, 'r+')
f.seek(0, 2)
f.write('\n' + 'export path = ' + installdir + '/bin:$path')
f.seek(0)
f.close()
print 'step4: path edit done'
def confignodes(nodefile):
f = open(nodefile, 'r+')
f.seek(0, 2)
for i in range(1,5):
f.write('\n' +'oscarnode'+str(i)+'.stu') #............hostname
f.seek(0)
f.close
print 'step5:mpi nodes configuration done'
if __name__== "__main__":
path='/home/sonky'
installfile = 'mpich'
n = 5
installdir = '/home/sonky/'+installfile
walk(path, scan, 0)
cfgfile = '/home/dell/.bashrc'
configpath(cfgfile, installdir)
nodefile = installdir+'/share/machines.linux'
confignodes(nodefile)
!!!問題:為什麼python中要有這麼多功能類似的函式?有什麼區別?繼續學習。
用python編寫串列埠測試指令碼
用python編寫串列埠測試指令碼 最近接到了乙個測試硬體的內容,有大概十臺左右,給了乙個串列埠測試的文件,讓我來測硬體,測試的前兩天使用的手工測試,實在有點麻煩,晚上加班寫了個指令碼來簡單的自動執行一下。import serial.tools.list ports import time impo...
用ant編寫自動編譯指令碼
第一步 ant的配置 1 在ant安裝之前需要安裝好jdk,並配置好j a home 2 新建環境變數ant home 值為ant的主目錄 3 在path中配置 ant home bin 4 在classpath中配置 ant home lib 5 配置完成之後,開啟命令列,輸入ant,當出現 bu...
軟體需求分析 軟體用例編寫
測試需求主要解決 測什麼 的問題,一般來自需求規格說明書中的原始需求。測試需求應該全部覆蓋已定義的業務流程,以及功能和非功能方面的需求。只有明確了測試需求,才知道 怎麼去測試!什麼時候開始測試!要多少人測試!在什麼環境上測試!測試需求分析的目的 根據需求文件提取測試點,根據測試點來編寫測試用例。測試...