1.选择python来编写脚本的原因:
- python含有大量的第三方库,调用起来很方便
- python语言简单明了
思考:对比便可以明白为什么大规模企业更愿意用python,而不用shell
shell实现起来语法过于繁琐,且代码量大
2.编码思路
- 1)先判断是不是root用户,root才可以进行软件的安装
- 2)交互式请求,询问root用户要安装哪个版本的python,现提供2/3
- 3)将源码编译过程中可能出现的问题进行
if
判断分析,比如下载源码包的过程网络出现故障,比如安装过程出现依赖包的问题
3.源代码
import os
import sys
if os.getuid() == 0:
pass
else:
print '当前用户不是root用户,请以root用户执行脚本~'
sys.exit(1)
version = raw_input('请输入你想要安装的python版本(2.7/3.5)')
if version == '2.7':
url = 'https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz'
elif vesion == '3.5':
url = 'https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz'
else:
print '您输入的版本号有误,请输入:2.7/3.5'
sys.exit(1)
cmd = 'wget '+url
res = os.system(cmd)
if res != 0:
print '下载源码包失败,请检查网络'
sys.exit(1)
if version == '2.7':
package_name = 'Python-2.7.12'
else:
package_name = 'Python-3.5.2'
cmd = 'tar xf '+package_name+'.tgz'
res = os.system(cmd)
if res != 0:
os.system('rm '+package_name+'tgz')
print '解压源码包失败,请重新运行这个脚本下载源码包'
sys.exit(1)
cmd = 'cd '+package_name+' && ./configure --prefix=/usr/local/python && make && make install'
res = os.system(cmd)
if res != 0:
print '编译python源码失败,请检查是否缺少依赖库'
sys.exit(1)
4.运行结果
[kiosk@python2 shell]$ python 1.py
当前用户不是root用户,请以root用户执行脚本~
//root用户执行脚本
[root@python2 shell]# python 1.py
请输入你想要安装的python版本(2.7/3.5)2.7
--2018-01-30 22:48:54-- https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
Resolving www.python.org (www.python.org)... 151.101.24.223, 2a04:4e42:6::223
Connecting to www.python.org (www.python.org)|151.101.24.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16935960 (16M) [application/octet-stream]
Saving to: ‘Python-2.7.12.tgz’
8% [======> ] 1,521,498 151KB/s eta 89s
……