免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6387 | 回复: 15

[文本处理] 怎样根据操作系统选择文件 [复制链接]

论坛徽章:
0
发表于 2013-08-12 12:21 |显示全部楼层
今天领导给了一个小需求搞不来,来请教大家下:
我要安装一个部件,但是部件发布版本有两套安装包suse10_SP2和suse11_SP1,之前安装部件时都是看下操作系统对应的版本然后使用对应的安装包,现在要求将两套安装包都上传至服务器,自动识别当前操作系统并且使用对应版本,请问下这个咋搞啊~~ 我初步的想法是使用lsb_release -a加上awk查询出对应的操作系统后将不需要的安装包进行删除或者备份。
那么请问能怎么实现下呢?写不出了  谢谢了

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
发表于 2013-08-12 12:45 |显示全部楼层
先判断系统版本再安装相应的包:只提供下思路,具体命令LZ自己补充吧
  1. OS=`获取系统版本的命令`
  2. if [ "$OS" == "suse10_SP2" ];then
  3.    echo "安装suse10_SP2包"
  4. elif  [ "$OS" == "suse11_SP1" ];then
  5.    echo "安装suse11_SP1包"
  6. fi
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
发表于 2013-08-12 12:50 |显示全部楼层
对这方面不太懂。
但我理解之下好像有点问题
我的理解是:你的需求等价于将两个包和一个脚本一起放到某系统上,然后在该系统上运行脚本,脚本自动判断当前系统,选择合适的包安装。但是,a 和b 是不同的系统,你写的脚本在a上能运行,在b上不一定能运行。

所以我的理解,你们的思路应该是这样的:架一个服务器,在服务器上放两个包,并写一个脚本,判断链接服务器的要下载文件的系统类别,将合适的包提供它下载。

论坛徽章:
0
发表于 2013-08-12 13:02 |显示全部楼层
谢谢大大~回复 2# 关阴月飞


   

论坛徽章:
0
发表于 2013-08-12 13:07 |显示全部楼层
对对你分析的很对,我现在是在考虑简单的方式,是同时将suse10_sp2和suse1_sp1的包都上传至服务器后安装前确定使用哪个包,你说的是另外一种情况,是先判断系统再放包,我实现的是先放包再判断操作系统,最终结果实现要一样就是要保证安装包和系统版本对应,谢谢了回复 3# cao627


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2013-08-12 13:49 |显示全部楼层
回复 4# 草_香


搞定了没?如果没搞定的话,把不同系统上的 lsb_release -a 的输出结果分别提出来看看,描述清楚自己想获取哪个部分。

论坛徽章:
0
发表于 2013-08-12 13:52 |显示全部楼层
写过一个简单的感觉好像不好
  1. if grep -q Server\ 11\ SP1 /etc/issue;then
  2. touch /home/suse11sp1.log
  3. else
  4. touch /home/suse10sp2.log
  5. fi
复制代码
想象2楼那样获取系统参数,我这样写太死了

回复 7# Shell_HAT


   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2013-08-12 14:00 |显示全部楼层
回复 8# 草_香


RHEL里面获取系统版本可以这样:
  1. lsb_release -a | awk '/Release:/{print $2}'
复制代码
现在手上没有suse不好测试

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2013-08-12 14:01 |显示全部楼层
  1. awk '/VERSION/{print $3}' /etc/SuSE-release
  2. awk '/PATCHLEVEL/{print $3}' /etc/SuSE-release
复制代码

论坛徽章:
0
发表于 2013-08-12 19:44 |显示全部楼层
  1. #!/bin/bash
  2. V=`awk '/VERSION/{print $3}' /etc/SuSE-release`
  3. P=`awk '/PATCHLEVEL/{print $3}' /etc/SuSE-release`
  4. OS=Suse${V}SP${P}

  5. if [ "$OS" == "Suse11SP1" ];then
  6.         echo "Install Suse11SP1"
  7. elif [ "$OS" == "Suse10SP2" ];then
  8.         echo "Install Suse10SP2"
  9. else
  10.         echo "Install"
  11. fi
复制代码
最终写成这样了,应该可以吧?我执行过没问题回复 10# Shell_HAT


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP