说明
日常工作中,有时会需要运行脚本。每次都登录主机运行相对费时费力,且对权限的管控也比较复杂。script-server是一个开源项目,可以通过Web UI实现脚本的管控。
实验环境
- 操作系统:centos 7.9
- python版本:3.6.8(yum安装)
- script-server版本:1.18.0
安装
- 在适当目录下,创建python的虚拟环境,并激活:
python3 -m venv testenv
source testenv/bin/activate
- 从github(https://github.com/bugy/script-server)项目主页的release下载最新版本,并解压:
wget https://github.com/bugy/script-server/releases/latest/download/script-server.zip
unzip script-server.zip
目录中,requirements.txt包含了所依赖的python模块,本版本文件要求的是tornado>=4,安装python模块:
pip3 install tornado
- 进入目录并启动服务(前台运行):
cd script-server
python3 launcher.py
此时,由于不同python3版本包含的默认模块不同,可能会提示缺少一些python模块,例如dataclasses,安装即可pip3 search dataclasses
。
启动成功后,5000端口应处于监听状态,可随时ctrl+c停止服务。
- 确保防火墙放行tcp 5000端口后,测试web,访问
http://xxx.xxx.xxx.xxx:5000/index.html
。
Bonus: If using virtualenv’s python, then systemd startup script python path would be:
Find out virtualenv’s python path (When virtualenv is activated) which python copy result
Edit /lib/systemd/system/script-server.service ExecStart=/usr/bin/python3 would be -> paste here Example something like this: /home/user/script-server/envname/bin/python
The similar change should be done for init.d
配置
虽然此时能够访问index.html页面,但是界面空无一物。如果想要进行脚本的配置,则需要通过http://xxx.xxx.xxx.xxx:5000/admin.html
界面进行配置,为此需要进行配置文件的修改。
简单示例
创建配置文件touch conf/conf.json
, 一个简单的示例如下:
{
"port":5001,
"title": "My Script Server",
"access": {
"admin_users": [ "*" ]
}
}
本例中修改了端口和系统标题。
可以对用户进行鉴权,没有权限的用户则不能访问管理界面,本例中,* 意味着所有用户都可以访问管理界面。
详细配置文件可以参考github主页的wiki(https://github.com/bugy/script-server/wiki/Server-configuration)
此时再次启动:python3 launcher.py
,已经可访问管理界面(注意端口号变成了5001):
PS:wiki中的用户(user)概念与常规理解不同,似乎指的hosts文件中的hostname。尝试配置为hostname,则也具有管理界面的访问权限,但是只能查看运行日志,而不能真正进行配置,本例中为了简单,使用了 * 通配符
htpasswd鉴权
如果要进行鉴权,script-server支持LDAP、Google OAuth、Gitlab OAuth、Keycloak OpenID、htpasswd file方式,相对最简单的是htpasswd file方式,首先要安装httpd-tools工具:
yum install -y httpd-tools
,接着在合适路径(即示例中的/path/to/
)下创建密码文件:htpasswd -bc user_passwd user1 user1
修改配置文件为:
{
"port":5001,
"title": "My Script Server",
"access": {
"admin_users": [ "*" ]
},
"auth": {
"type": "htpasswd",
"htpasswd_path": "/path/to/user_passwd"
}
}
重新python3 launcher.py
之后,再次访问就需要输入账号密码了。
使用
script-server的所有操作都可以通过web界面进行,简易教程如下:
创建脚本
在合适位置创建计划运行的脚本,例如/home/test/add.py
,脚本代码如下:
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import sys
print( sys.argv[1] + " + " + sys.argv[2] + " = " + str(int(sys.argv[1]) + int(sys.argv[2])) )
这是一个非常简单的相加脚本,将两个参数进行相加后输出结果。
赋予脚本文件执行权限,确保在目录下可以直接执行,例如:
# 运行脚本
./add.py 1 2
# 输出结果
1 + 2 = 3
添加脚本
在管理界面“SCRIPTS”栏目下,点击“+ ADD”按钮,填写脚本配置:
其中点击Script path参数的三点,选择"Edit script code",还可以在界面上直接对脚本进行编辑:
运行脚本
完成配置后,点击左上角的Home按钮,返回index界面,此时可以看到配置好的脚本:
填写好参数后,点击EXECUTE立刻执行,就可以看到执行结果了:
也可以选择SCHEDULE,配置为周期执行: