当前位置:网站首页>Olivetin can safely run shell commands on Web pages (Part 1)
Olivetin can safely run shell commands on Web pages (Part 1)
2022-07-06 17:51:00 【Yangpu Laosu】

I suddenly received a notice from the neighborhood committee yesterday afternoon , evening 7 Spot full screening . It seems that there should be another one in these two days

Net friend
figoask :Is there any software or docker One key shutdown and one key restart Linux host ? Instead of opening the command line to execute the command ., Old Su thought of lying in the plan list for a long time at the first timeOliveTin, The reason why I didn't move was because I didn't think about what to do . I didn't find it until I really began to toss ,OliveTinMore problems than expected , Even the official examples can encounter pits , It may be becausedockerThe way isSynologyFor running on , On the contrary, it aroused Lao Su's interest .
What is? OliveTin ?
OliveTinCan let you fromWebThe interface safely and simply accesses predefinedshellcommand .

Get ready
First of all, prepare for config.yaml file , The simplest is, of course, to copy the official sample document , You can copy and paste , You can also save it as .https://raw.githubusercontent.com/OliveTin/OliveTin/main/config.yaml
Action
A standard action ( We can understand it as a button ) There are several parts :
title: title , This is required , Used to identifyaction;shell: Script , It's also required , To perform specific tasks ;icon: Icon , This is not necessary , But some words will look more comfortable , Except for the pictures , And support https://unicode-table.com/en/emoji/ Ofemoji;arguments: Parameters , This is not necessary , Can be used to implement some variables , Give WayshellHave some flexibility ;timeout: Overtime , This is also unnecessary ;
So in general , A button just title and shell That's all right. , Take the simplest complete config.yaml Example
# Listening port
listenAddressSingleHTTPFrontend: 0.0.0.0:1337
# The level of logging :INFO (default), WARN and DEBUG
logLevel: "INFO"
# Show new version
showNewVersions: true
# Actions (buttons) to show up on the WebUI:
actions:
# Start with the simplest
- title: function echo
icon: "📝"
shell: echo " I'm old su ."
You can also use this as config.yaml, Let the container run first and then modify 、 Perfect and enrich functions .
install
On the group light with Docker Way to install .
Search the registry for olivetin , Select first jamesread/olivetin, Version selection latest.

Container name
Because you need to enter the container through the command line later , It is recommended to change the name of the container to olivetin, Of course, this is not necessary , You can also directly change the container name in the command line

volume
stay docker In the folder , Create a new folder olivetin
| Folder | Loading path | explain |
|---|---|---|
docker/olivetin | /config | Storage settings |
Suggest to check
read-only

port
The local port does not conflict , If you're not sure, you can use the command to check
# Check port usage
netstat -tunlp | grep Port number
| Local port | Container port |
|---|---|
1337 | 1337 |

Command line installation
If you are familiar with the command line , Possible docker cli Faster
# New folder kavita and subdirectories
mkdir -p /volume2/docker/olivetin
# Get into kavita Catalog
cd /volume2/docker/olivetin
# Upload config.yaml File to the current directory
# Run container
docker run -d \
--restart unless-stopped \
--name olivetin \
-p 1337:1337 \
-v $(pwd):/config:ro \
jamesread/olivetin
It can also be used. docker-compose install , The following is the official docker-compose.yml, Pay attention to modifying the path
version: "3.8"
services:
olivetin:
container_name: olivetin
image: jamesread/olivetin
volumes:
- ./:/config # replace host path or volume as needed
ports:
- "1337:1337"
restart: unless-stopped
networks:
web:
section:
external: true
Then execute the following command , Because the relative path is adopted , stay portainer It is also possible to execute in
# New folder kavita and subdirectories
mkdir -p /volume2/docker/olivetin
# Get into kavita Catalog
cd /volume2/docker/olivetin
# take docker-compose.yml and config.yaml Put in the current directory
# One button start
docker-compose up -d
function
Enter... In the browser http:// Synology IP:1337 You can see the main interface
This is the official
config.yamlThe interface of

If you use Lao Su's minimization example , There is only one button , We click function echo Button

Will be displayed [Success]

Detailed information can be found in the upper right corner Logs View in

remaining problems
problem 1: jurisdiction
There's an official ping An example of , Considering that you can't visit at home google, So Lao Su changed the target address to baidu
actions:
# This sends 1 ping to baidu.com.
- title: ping baidu.com
shell: ping baidu.com -c 4
icon: ping
timeout: 3
By default , You will meet ping: usage error: Destination address required
And if you will shell Change it to sudo ping baidu.com -c 1 when , You will need to enter password for olivetin, So the only way is docker cli The next execution container is added --user=root perhaps --privileged
# use root Run container
docker run -d \
--restart unless-stopped \
--name olivetin \
--user=root \
-p 1337:1337 \
-v $(pwd):/config:ro \
jamesread/olivetin
problem 2:ssh password
The government also provided ssh An example of , Lao Su made adjustments
sshThe identity of the login host can berootOr any other authorized account , It's just for demonstration , Generally, it is not recommended to use it directlyroot
actions:
- title: Log in to ds3617xs ping Baidu
shell: ssh [email protected] 'ping baidu.com -c 4'
icon: "📌"
timeout: 50
perform ssh It doesn't need to root jurisdiction , But because you can't enter the password directly on the command line , So it will lead to timeout

perhaps Exit code 255

The official idea is to use SSH Key setting no password login , But old Su thought this way was not flexible .
Lao Su thought of a kind of flexible , But a relatively safe solution , Coming soon ~
Friday , Be there or be square !
Reference documents
OliveTin/OliveTin: OliveTin gives safe and simple access to predefined shell commands from a web interface.
Address :https://github.com/OliveTin/OliveTin
OliveTin - give safe and simple access to predefined shell commands from a web interface
Address :https://www.olivetin.app/
OliveTin documentation
Address :https://docs.olivetin.app/
List of common exit codes for GNU/Linux
Address :https://slg.ddnss.de/list-of-common-exit-codes-for-gnu-linux/
边栏推荐
- Vscode replaces commas, or specific characters with newlines
- Hongmeng introduction and development environment construction
- Unity小技巧 - 绘制瞄准准心
- Zen integration nails, bugs, needs, etc. are reminded by nails
- Wechat applet obtains mobile number
- C # nanoframework lighting and key esp32
- Easy introduction to SQL (1): addition, deletion, modification and simple query
- Automatic operation and maintenance sharp weapon ansible Foundation
- Grafana 9 is officially released, which is easier to use and more cool!
- Virtual machine startup prompt probing EDD (edd=off to disable) error
猜你喜欢

Video fusion cloud platform easycvr adds multi-level grouping, which can flexibly manage access devices

【MySQL入门】第三话 · MySQL中常见的数据类型

EasyCVR授权到期页面无法登录,该如何解决?

The most complete tcpdump and Wireshark packet capturing practice in the whole network

Unity粒子特效系列-闪星星的宝箱
![[elastic] elastic lacks xpack and cannot create template unknown setting index lifecycle. name index. lifecycle. rollover_ alias](/img/03/ece7f7b28cd9caea4240635548c77f.jpg)
[elastic] elastic lacks xpack and cannot create template unknown setting index lifecycle. name index. lifecycle. rollover_ alias

李書福為何要親自掛帥造手機?

The problem of "syntax error" when uipath executes insert statement is solved

Establishment of graphical monitoring grafana

历史上的今天:Google 之母出生;同一天诞生的两位图灵奖先驱
随机推荐
Hongmeng introduction and development environment construction
Distributed (consistency protocol) leader election (dotnext.net.cluster implements raft election)
[getting started with MySQL] fourth, explore operators in MySQL with Kiko
Debug and run the first xv6 program
Appium automated test scroll and drag_ and_ Drop slides according to element position
Distinguish between basic disk and dynamic disk RAID disk redundant array
Spark calculation operator and some small details in liunx
Flink parsing (IV): recovery mechanism
EasyCVR平台通过接口编辑通道出现报错“ID不能为空”,是什么原因?
远程代码执行渗透测试——B模块测试
Interview assault 63: how to remove duplication in MySQL?
【MySQL入门】第一话 · 初入“数据库”大陆
【ASM】字节码操作 ClassWriter 类介绍与使用
Vscode replaces commas, or specific characters with newlines
Getting started with pytest ----- test case pre post, firmware
How uipath determines that an object is null
PySpark算子处理空间数据全解析(5): 如何在PySpark里面使用空间运算接口
Kali2021 installation and basic configuration
RB157-ASEMI整流桥RB157
视频融合云平台EasyCVR增加多级分组,可灵活管理接入设备