用python做linux的服务安装脚本 - vncserver
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用python做linux的服务安装脚本 - vncserver,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4102字,纯文字阅读大概需要6分钟。
内容图文
linux服务器在标准安装后,就集成了万能胶水python,python应用于科学计算、web服务、服务管理等等方面,既然这么方便何不利用python来做linux服务的安装脚本呢?
基本上一个linux操作系统安装好后,会安装基础服务应用,比如ftp、vncserver等等,其他的都是根据实际应用来安装,每次安装这些服务都要上网查查安装步骤,照步骤来走基本上不会走错。
设想一个场景,安装好linux操作系统后,通过网页从邮箱把python脚本下载下来,直接 python 脚本.py 即可。安全高效,不想事。
举一个简单的服务安装(vncserver)
vncserver 安装分以下几个步骤。
cmdlist = { 1:yum_install, #下载 2:vncserver_conf, #配置vncservers配置文件 3:vncpasswd, #设置vnc密码 4:vnc_restart, # 重启vnc服务 5:conf_iptables, #配置防火墙,开放端口 6:iptables_restart, #重启防火墙,让配置生效 7:xstartup_conf, #修改vnc用户的远程启动文件配置 8:vnc_restart #再次重启vnc服务 }
通过以上8个步骤便开通了vncserver服务,我把步骤细分成不同的函数,并组织成字典的数据格式。
下面是主程序运行部分
if __name__ == ‘__main__‘ : for cmd in sorted(cmdlist): # 利用sorted排序,确保是按设定的1、2、3的步骤来执行ifnot cmdlist[cmd](): # cmdlist里面的函数对象都是返回布尔类型 show_info(cmdlist[cmd],‘is fail‘) # show_info 是一个显示打印错误的函数,用于执行的时候提示哪一步失败的。break
当然,写脚本也要有面向对象开发的思想,有几个功能可以写成函数,成熟后还可以用于后续的脚本开发。这里也列了几个
比如备份文件,大家在编辑配置文件的时候,都应该先备份一个,以免弄错了还可以还原。这也是做事的原则。
def BackupFile(filepath,filename): ‘ 备份文件操作,利用本身的复制命令来实现。 ‘ result = False os.chdir(filepath) if os.path.exists(filename): __newfilename = ‘%s.%s.bak‘ % (filename,getDateTimeStr()) # getDateTimeStr是一个返回日期时间的函数 os.system(‘cp %s %s‘ % (filename,__newfilename)) result = True return result
编辑配置文件的函数,考虑到不是所有的配置信息直接加到配置文件最后就能使用,比如 iptables 防火墙的配置,开放端口一定要加在中间的位置,放在最后重启防火墙是不会成功的,所以编辑配置脚本是先读取源文件的内容后,清除源文件内容,然后在把读取之前的源内容一条一条的写入到配置文件中,中间要写入其他的脚本都是根据匹配规则来写入的。
def ConfScript(filepath,filename,restr,*args): ‘编写配置脚本‘ result = False if BackupFile(filepath,filename): try: content = [] ‘读取数据‘ with open(filepath+filename) as fr: for s in fr: content.append(s) ‘清空数据文本‘if CleanScript(filepath,filename): # CleanScript 清空脚本,利用 os.system 执行 cat /dev/null > 配置文件来实现 fw = open(filepath+filename,‘w‘) if type(restr) == type(‘‘): # 根据 restr 来判断新增配置脚本是写入到什么位置,如果restr是字符,就根据字符来判断,如果是 None ,则把 *args写入到脚本的最后for s in content: fw.writelines(s) if restr in s: for ag in args: fw.writelines(ag+‘\n‘) else: for s in content: fw.writelines(s) fw.writelines(‘\n‘) for ag in args: fw.writelines(ag+‘\n‘) fw.close() result = True else: show_error(‘Clean Fail‘) except Exception as e: show_error(str(e)) return result
以下是安装脚本的所有代码
# !/usr/bin/env python # incoding:utf-8 ‘‘‘ Created on 2014年12月16日 ‘‘‘ import os from scriptcore.utils import * from scriptcore.info import * def yum_install(): ‘yum_install‘ result = False try: str = ‘yum -y install tigervnc-server‘ os.system(str) result = True except Exception as e: show_error(str(e)) return result def vncserver_conf(): ‘vncserver_conf‘__filepath = ‘/etc/sysconfig/‘__filename = ‘vncservers‘__searchkey = None __replacestring = [‘VNCSERVERS=\"1:root\"‘,‘VNCSERVERARGS[1]=\"-geometry 1024x768 -nolisten tcp\"‘] return ConfScript(__filepath,__filename,__searchkey,*__replacestring) def vncpasswd(): ‘vncpasswd‘ result = False try: str = ‘vncpasswd‘ os.system(str) result = True except Exception as e: show_error(str(e)) return result def vnc_restart(): ‘vnc_restart‘ result = False try: str = ‘service vncserver restart‘ os.system(str) result = True except Exception as e: show_error(str(e)) return result def conf_iptables(): ‘conf_iptables‘__filepath = ‘/etc/sysconfig/‘__filename = ‘iptables‘__searchkey = ‘--dport 22‘__replacestring = [‘-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT‘] return ConfScript(__filepath,__filename,__searchkey,*__replacestring) def iptables_restart(): ‘iptables_restart‘ result = False try: str = ‘service iptables restart‘ os.system(str) result = True except Exception as e: show_error(str(e)) return result def xstartup_conf(): ‘xstartup_conf‘__filepath = ‘/root/.vnc/‘__filename = ‘xstartup‘__searchkey = None __replacestring = [‘gnome-session‘] return ConfScript(__filepath,__filename,__searchkey,*__replacestring) cmdlist = { 1:yum_install, 2:vncserver_conf, 3:vncpasswd, 4:vnc_restart, 5:conf_iptables, 6:iptables_restart, 7:xstartup_conf, 8:vnc_restart } if__name__ == ‘__main__‘ : for cmd in sorted(cmdlist): ifnot cmdlist[cmd](): show_info(cmdlist[cmd],‘is fail‘) break
以后,我们可以将linux操作系统大部分管理工作,都写成脚本化,这样管理工作将变得轻松,不是吗?
原文:http://www.cnblogs.com/zoyo929/p/4168660.html
内容总结
以上是互联网集市为您收集整理的用python做linux的服务安装脚本 - vncserver全部内容,希望文章能够帮你解决用python做linux的服务安装脚本 - vncserver所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。