使用通用Linux脚本简化Linux Shell脚本的开发 (91Yun Exclusive)

CYRO4SCYRO4S 话题数:40会员, 大佬
最后编辑于 March 2017 教程 #0

在编写Shell脚本时,因发行版不同,要获取系统名称、版本、虚拟化技术、安装软件包等成为了一件非常麻烦的事情。现在,有了通用Linux脚本,一切都变得简单了。

何为通用Linux脚本?

通用Linux脚本(Universal Linux Script,ULS,发音:”U-Less”)是我开发的一种Linux脚本,有如下的特点:

  • 语言上:与Shell脚本语法完全相同
  • 功能上:内置了常用的系统信息变量库和常用命令变量库,只需几个字母就能轻松存取
  • 使用上:提供ULS一键安装脚本来安装Python写的ULS翻译程序,执行脚本只需一个命令
    OK,我们来看两个例子:

第一,Deb系的OS从源安装软件要用 “apt-get -y install“,RH系的OS用”yum -y install“。在ULS中,全部以 pkg.install 代替。ULS脚本在执行时会自动替换为对应不同OS的命令。

第二,是否需要在脚本中判断VPS的虚拟化技术、获取CPU信息、发行版名称及版本?在ULS中,可以使用 dev.virt 、dev.cpu、sys.name、sys.version 代替。在脚本执行时,上述变量会自动被替换为带有两个双引号的字符串,比如:

echo dev.virt  

在执行时会根据系统信息被替换为:

echo "kvm"  

看过了两个实例,是不是对ULS增进了一些了解呢?下面开始正式的题目了:

安装与使用

ULS代码托管在Github,基于GPLv3开放源代码。地址是:

Goto Github

目前ULS已经配备了完整的文档,包括安装和使用。非常简单,易于操作,没有技术性障碍。

简易安装

简易安装真的很简易,只需要一行命令,推荐使用:

wget https://raw.githubusercontent.com/CYRO4S/Universal-Linux-Script/master/uls_install.sh && bash uls_install.sh  

这个一键安装脚本将安装 wget、python3 和 virt-what,下载uls.py,并运行一遍系统信息获取,之后会将获取的系统信息存储在 device.json 中,以供执行ULS脚本时替换。

执行ULS脚本

很简单,使用:

uls [ULS脚本路径]  

如果脚本是以 #!/usr/bin/uls 开头而且有可执行权限,直接使用:

./[ULS脚本名]

就可以了。

重新运行系统信息获取

若您的硬件、软件、网路进行过更改,建议您重新运行系统信息获取。使用

uls --getinfo  

来重新获取。ULS也将同时更新 device.json 中的内容。

所有内置的变量和语句

参阅Wiki:

ULS Wiki

此话题使用的标签:
此话题使用的标签:

评论

  • CYRO4SCYRO4S 话题数:40会员, 大佬

    二楼预留,将来会贴上自编ULS脚本。

  • winterwinter 话题数:74会员

    都是大神,我等只能按照教程一行一行的复制命令。

  • liujeliuje 话题数:49会员

    這個牛.. 造福人群, 按 "贊" 一個 ! =)
    可以讓更多人較容易來自己編寫自動安裝腳本~~

  • 91yun91yun 话题数:223管理员

    不错~6666

  • CYRO4SCYRO4S 话题数:40会员, 大佬
    最后编辑于 March 2017 #5

    @91yun 说道:
    不错~6666

    林老板的UML + BBR + SSR 一键安装主脚本,可以简化为15行(去掉空行和注释只有13行):

    # ULS version of 91yun's UML script
    if [[ sys.root = "false" ]]; then
        echo "Error: This script must be run as root!" 1>&2
        exit 1
    fi
    
    if [[ sys.os = "centos" && sys.version = "6" ]]; then
        wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/uml/master/bbr/centos6.sh && bash centos6.sh
    elif [[ sys.os = "centos" && sys.version = "7" ]]; then
        wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/uml/master/bbr/centos7.sh && bash centos7.sh
    elif [[ sys.os = "ubuntu" ]]; then
        wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/uml/master/bbr/ubuntu.sh && bash ubuntu.sh
    elif [[ sys.os = "debian" ]]; then
        wget -N --no-check-certificate https://raw.githubusercontent.com/91yun/uml/master/bbr/ubuntu.sh && bash ubuntu.sh
    fi
    
  • singhighsinghigh 话题数:373管理员

    为鼓励更新、方便内部测试,现给楼主增加“大佬”头衔。感谢分享!

  • lovagelovage 话题数:46会员
    朕知道了
  • CYRO4SCYRO4S 话题数:40会员, 大佬
    最后编辑于 March 2017 #8
    说明几点,希望大家理解:
    * ULS的开发更新仅在这里(91yun论坛)。换句话说,叫独占内容。
    * 除非有需要,ULS的开发信息和脚本发布仅在该帖内,我不会新建帖子。
    * 较长文章在这里不是太好写(Markdown),可能会链接至我的博客。(大佬们手下留情,不要DDCC
    * 这几天我只会对ULS解释器进行维护,脚本出炉得到清明假期后。
  • singhighsinghigh 话题数:373管理员
    很赞!
  • CYRO4SCYRO4S 话题数:40会员, 大佬
    这几天两个大佬给项目提了很多issue,一个个都修复和改进了。ULS也达到里程碑1。目前自己在测试ULS脚本的兼容性,明天放几个脚本出来测试一下,同时补充一下安装、编写的注意事项。
登录注册后才能评论。