当前位置:网站首页>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/
边栏推荐
- Why should Li Shufu personally take charge of building mobile phones?
- Remote code execution penetration test - B module test
- The easycvr authorization expiration page cannot be logged in. How to solve it?
- 学 SQL 必须了解的 10 个高级概念
- ASEMI整流桥DB207的导通时间与参数选择
- EasyCVR平台通过接口编辑通道出现报错“ID不能为空”,是什么原因?
- OliveTin能在网页上安全运行shell命令(上)
- kivy教程之在 Kivy 中支持中文以构建跨平台应用程序(教程含源码)
- Spark calculation operator and some small details in liunx
- Wordcloud colormap color set and custom colors
猜你喜欢

TCP connection is more than communicating with TCP protocol

The solution that flutterweb browser cannot be rolled back after refreshing

Solution qui ne peut pas être retournée après la mise à jour du navigateur Web flutter

Vscode replaces commas, or specific characters with newlines

Alibaba brand data bank: introduction to the most complete data bank

Awk command exercise

RB157-ASEMI整流桥RB157

Easy introduction to SQL (1): addition, deletion, modification and simple query

Sqoop I have everything you want

The NTFS format converter (convert.exe) is missing from the current system
随机推荐
遠程代碼執行滲透測試——B模塊測試
The art of Engineering (2): the transformation from general type to specific type needs to be tested for legitimacy
The solution that flutterweb browser cannot be rolled back after refreshing
Distributed (consistency protocol) leader election (dotnext.net.cluster implements raft election)
微信小程序获取手机号
Optimization of middle alignment of loading style of device player in easycvr electronic map
Xin'an Second Edition; Chapter 11 learning notes on the principle and application of network physical isolation technology
[translation] principle analysis of X Window Manager (I)
Manifest of SAP ui5 framework json
Nodejs developer roadmap 2022 zero foundation Learning Guide
【MySQL入门】第一话 · 初入“数据库”大陆
EasyCVR授权到期页面无法登录,该如何解决?
Smart street lamp based on stm32+ Huawei cloud IOT design
Xin'an Second Edition: Chapter 23 cloud computing security requirements analysis and security protection engineering learning notes
Mysqlimport imports data files into the database
8位MCU跑RTOS有没有意义?
Remote code execution penetration test - B module test
Unity tips - draw aiming Center
Automatic operation and maintenance sharp weapon ansible Foundation
[getting started with MySQL] fourth, explore operators in MySQL with Kiko