Python 申请license写入etc/rc.local
来源:互联网 发布:淘宝无法上架宝贝 编辑:程序博客网 时间:2024/06/17 15:46
今天修正了一个问题,本来以为很简单的东西,后来思考一下,发现不完美,于是各种改,各种查资料,后来发现一种比较满意的方法,利用空闲时间记录下来
问题是这样的:机器需要申请一个license,其实就是通过check_lic命令生成一个注册码,把这个注册码通过服务器转成一个对应的序列号,最后把序列号写入/etc/rc.local
于是乎,开始干:
一开始是这样想的,第一个函数就是执行check_lic命令,返回一个注册码,第二个函数把这个注册码生成的序列号写入指定文件就ok,于是乎,代码虎虎的写完了,不超过两分钟写完:。。。。是这样的代码:
#encoding:utf-8import subprocessimport osdef check_lic(): p = subprocess.Popen('check_lic',shell = True,stdout=subprocess.PIPE) returnCode = p.wait() if returnCode == 0: out = p.stdout.readlines() ret = ''.join(out) ret = ret.strip() return ret else: print "check_lic run errot" return Falsedef write_in_local(lic): ret = '\n' + "/usr/sbin/check_lic " + lic with open('/etc/rc.local','a') as f: f.write(ret) f.flush() os.fsync(f)if __name__ == "__main__": ret = check_lic() #这里简单测试下,直接写入ret,不进行转码 write_in_local(ret)在/etc/rc.local中测试了下效果,发现在文件最后面一行,写入了我们需要的东西,本以为大功告成,但是凉水来了。。。。/etc/rc.local中原来有一个check_lic开头的行,打了新的license,原来的为何不删掉?不同版本的rc.local可能最后一行会存在一个“exit 0”这样一行,那直接后面添加,就不会执行的。。。
所以,需求变了,首先,删掉原来的存在check_lic的行,第二,如果存在“exit 0”将我们要写入的东西加到"exit 0"之前行,后来我想了下,为何要留着“exit 0”,还不如删掉,反正没啥用
import subprocessimport osimport redef check_lic(): p = subprocess.Popen('check_lic',shell = True,stdout=subprocess.PIPE) returnCode = p.wait() if returnCode == 0: out = p.stdout.readlines() ret = ''.join(out) ret = ret.strip() #print ret #print type(ret) return ret else: digi_debug ("check_lic run error!") EXIT()def write_in_local(ret): ret = "\n" + "/usr/sbin/check_lic " + ret print ret new_txt = [] reg1 = "check_lic" reg2 = 'exit 0' with open("/etc/rc.local",'r+') as title_txt: full_txt = title_txt.readlines() for line in full_txt: if re.search(reg1,line) or re.search(reg2,line): continue else: new_txt.append(line) title_txt.seek(0) title_txt.truncate(0) title_txt.writelines(new_txt) title_txt.write(ret) title_txt.flush() os.fsync(title_txt)if __name__ == "__main__": ret = check_lic() write_in_local(ret)搞定了。。。测试成功
前提是查资料查了一些
0 0
- Python 申请license写入etc/rc.local
- 说说/etc/rc.d/rc.local
- 说说/etc/rc.d/rc.local
- /etc/rc.local 与 /etc/init.d
- /etc/rc.local 与 /etc/profile
- /etc/profile 和 /etc/rc.d/rc.local启动顺序
- CentOS 6.4下/etc/rc.local
- Ubuntu:/etc/rc.local 可执行权限问题
- ubuntu /etc/rc.local下脚本不起作用
- 解决/etc/rc.local启动不执行
- CentOS boot脚本 /etc/rc.d/rc.local
- CentOS开机启动 /etc/rc.d/rc.local
- 使用者自订启动启动程序 (/etc/rc.d/rc.local)
- /etc/rc.d/rc.local 自动加载linux 脚本
- 关于/etc/rc.local以及/etc/init.d
- 关于/etc/rc.local以及/etc/init.d
- 关于/etc/rc.local与/etc/init.d
- 关于/etc/rc.local以及/etc/init.d
- Apache,Tomcat集群和负载均衡 教程
- openssl生成证书
- 第一天使用Spring STS 项目SVN下载
- 移动端手机网站限制input只能输入数字
- Android_联系人PinnedHeaderListView使用
- Python 申请license写入etc/rc.local
- bzoj 3709 [PA2014]Bohater(贪心)
- iOS- CoreData 数据库管理利器!
- python 调用微博API批量回复微博评论
- 代码保存、配色、发布-整体方案----一段代码的配色
- 旋转角度计算(旋转手势)
- ios Image裁剪成圆形的方法
- Apache,Tomcat集群和负载均衡 教程
- oracle 时间函数(sysdate)