# Docker 搭建 webhook项目，实现远程执行shell命令

**URL:** <https://meta.appinn.net/t/topic/36773>\
**Category:** Docker\
**Created:** [2022 年10 月 3 日 05:57 UTC](https://meta.appinn.net/t/topic/36773 "2022-10-03T05:57:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

作者： ![tthy](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tthy/32/72083_2.png) [@tthy](https://meta.appinn.net/u/tthy)\
发布日期： [2022 年10 月 3 日 05:57 UTC](https://meta.appinn.net/t/topic/36773/1 "2022-10-03T05:57:17Z")

</div>

需求：经常需要不定时的让远程设备执行一些shell命令，最好能一键执行  
实现效果：通过get请求触发webhook（浏览器直接访问对应url就行），后台执行对应sh脚本

方案：

> **[GitHub - adnanh/webhook: webhook is a lightweight incoming webhook server...](https://github.com/adnanh/webhook)**
>
> webhook is a lightweight incoming webhook server to run shell commands

现成的docker镜像：

> **[GitHub - almir/docker-webhook: Dockerized https://github.com/adnanh/webhook](https://github.com/almir/docker-webhook)**
>
> Dockerized https://github.com/adnanh/webhook

docker cli 一把梭：

```auto
docker run -d -p 9000:9000 --name=webhook my-webhook-image -verbose -hooks=/etc/webhook/hooks.json -hotreload

```

只要浏览器访问对应的URL就可以直接让容器执行预先设置的脚本  
另外，我自己在容器内又安装了ssh，这样通过预先设置的脚本可以让容器通过ssh再调用局域网内其他设备执行命令（我只让容器的这一个端口暴露到公网，其他设备只允许内网连接）

目前自己经常用的就是远程让PC睡眠

 ![image](https://meta.appinn.net/uploads/default/original/3X/0/6/06c5beee5e52039614d2d0cc9faa58bf8fd0d98a.png)  
家庭版win11也是可以安装ssh服务端的，通过ssh连接administrator用户执行bat文件即可

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2024 年12 月 30 日 05:26 UTC](https://meta.appinn.net/t/topic/36773/2 "2024-12-30T05:26:30Z")

</div>

才发现，这个有点意思啊。

---

<div class="post-metadata">

作者： ![tthy](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/tthy/32/72083_2.png) [@tthy](https://meta.appinn.net/u/tthy)\
发布日期： [2024 年12 月 30 日 07:04 UTC](https://meta.appinn.net/t/topic/36773/3 "2024-12-30T07:04:35Z")

</div>

配合 sshpass 项目 还有 win10 win11的计划任务 食用效果更佳

> [@如何通过ssh让win11 前台打开应用程序?](https://meta.appinn.net/t/topic/52190):
>
> 开启了win11的sshd服务 可以通过ssh连接以后跑脚本 我用ssh 运行某exe 从任务管理器里能看到 但是前台没有 有啥办法用ssh让gui前台运行应用程序? 以及…如何在锁定界面 甚至是 账户未登录状态 运行应用程序?

串流PC打游戏经常用到这个…  
直接访问url 让nas远程唤醒PC 以及直接让PC执行shell 睡眠/关机  
还弄了bat脚本配合上面这个 访问url触发webhook就能自动开关 手柄伴侣  
这样可以直接手柄控制鼠标动作 串流神器了

```auto
@echo off
set process_name=ControllerCompanion.exe

tasklist /NH /FI "IMAGENAME eq %process_name%" | findstr "%process_name%" >nul
if %errorlevel%==0 (
    echo 关闭进程 %process_name% 。
    taskkill /f /im ControllerCompanion.exe
    TIMEOUT /T 1
    exit
) else (
    echo 即将开启 %process_name% 。
    start "" "D:\Program Files\Controller Companion\ControllerCompanion.exe"
    TIMEOUT /T 1
    exit
)
pause

```

---

<div class="post-metadata">

作者： ![dubc](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dubc/32/54932_2.png) [@dubc](https://meta.appinn.net/u/dubc)\
发布日期： [2024 年12 月 30 日 07:21 UTC](https://meta.appinn.net/t/topic/36773/4 "2024-12-30T07:21:23Z")

</div>

看起来需要一个长url，免得有人手贱反复触发脚本。
