当前位置:网站首页>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
figo
ask :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 ,OliveTin
More problems than expected , Even the official examples can encounter pits , It may be becausedocker
The way isSynology
For running on , On the contrary, it aroused Lao Su's interest .
What is? OliveTin ?
OliveTin
Can let you fromWeb
The interface safely and simply accesses predefinedshell
command .
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 Wayshell
Have 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.yaml
The 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
ssh
The identity of the login host can beroot
Or 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/
边栏推荐
- The art of Engineering (1): try to package things that do not need to be exposed
- Pytest learning ----- pytest operation mode and pre post packaging of interface automation testing
- The art of Engineering (3): do not rely on each other between functions of code robustness
- Wordcloud colormap color set and custom colors
- VR全景婚礼,帮助新人记录浪漫且美好的场景
- Unity粒子特效系列-闪星星的宝箱
- Getting started with pytest ----- test case pre post, firmware
- Kernel link script parsing
- BearPi-HM_ Nano development environment
- Solid principle
猜你喜欢
在一台服务器上部署多个EasyCVR出现报错“Press any to exit”,如何解决?
Vscode matches and replaces the brackets
传统家装有落差,VR全景家装让你体验新房落成效果
Unity tips - draw aiming Center
【ASM】字节码操作 ClassWriter 类介绍与使用
Flink parsing (IV): recovery mechanism
node の SQLite
Yarn: unable to load file d:\programfiles\nodejs\yarn PS1, because running scripts is prohibited on this system
2022年大厂Android面试题汇总(二)(含答案)
Summary of Android interview questions of Dachang in 2022 (II) (including answers)
随机推荐
The art of Engineering
Flink parsing (IV): recovery mechanism
学 SQL 必须了解的 10 个高级概念
Optimization of middle alignment of loading style of device player in easycvr electronic map
OpenCV中如何使用滚动条动态调整参数
RepPoints:可形变卷积的进阶
VR全景婚礼,帮助新人记录浪漫且美好的场景
The most complete tcpdump and Wireshark packet capturing practice in the whole network
Easy introduction to SQL (1): addition, deletion, modification and simple query
Nodejs 开发者路线图 2022 零基础学习指南
Solution qui ne peut pas être retournée après la mise à jour du navigateur Web flutter
Example of batch update statement combining update and inner join in SQL Server
Grafana 9 is officially released, which is easier to use and more cool!
李書福為何要親自掛帥造手機?
Kali2021 installation and basic configuration
Solid principle
Wordcloud colormap color set and custom colors
EasyCVR电子地图中设备播放器loading样式的居中对齐优化
分布式(一致性协议)之领导人选举( DotNext.Net.Cluster 实现Raft 选举 )
FlutterWeb瀏覽器刷新後無法回退的解决方案