如何执行命令(远程、异步、拉取)

如何执行命令(远程、异步、拉取)

我想在远程桌面计算机上执行命令,但 SSH 会很困难,因为远程计算机大部分时间都处于离线状态,且时间间隔与我的时间相差 10 小时,并且可能经常位于防火墙/NAT 后面且 IP 未知。所以它必须尽可能地拉取我的命令。我正在想一些事情,curl http://.../do.sh | bash只是开玩笑。

有可用的工具支持这样的事情吗?

我在寻找

  1. 简单合理稳定的东西
  2. 对于Linux
  3. 从网址、邮箱等安全地提取命令,
  4. 当然,确实需要某种形式的授权(例如,不执行任何未签名的操作)
  5. 它报告标准输出和标准错误,也许还有退出值返回给我。

sshd即使有必要,我也可以提供具有 HTTPS 和有效证书的服务器。我认为理论上我可以自己破解一些东西,但我担心那会非常耗时。

A类似的问题之前被问过,但没有真正回答(自己使用 procmail 和代码;使用我们强大的商业工具,价格为 250 美元)。

答案1

这并不是那么愚蠢(ssh 的想法),并且如果 a) 提供 ssh 服务的机器在线并且 b) 始终可以通过相同的名称/IP 保持可达性,那么就可以很容易地实现。您可以轻松地使用 ssh 脚本来对给定用户(守护进程?)帐户进行无密码身份验证,提取文件,然后对其进行操作。我不认为这是太难(或太耗时)的篮子。

答案2

您还可以考虑使用gitorsvn存储库并使用 post-hook。例如 :

  1. bash客户端使用要执行的命令或脚本列表修改文件
  2. 客户端将修改后的文件推送到远程服务器(大部分时间在线的服务器——使用bitbucketgithub或任何git/svn服务提供商)
  3. 服务器登录时执行git merge/svn update
  4. git merge hook或者svn post-update hook trick

这并不难,它可以成为处理服务器离线状态的一种方法。

答案3

我会看看 cfengine 或 puppet 之类的东西 - 它们被设计为在远程服务器上运行命令并记录结果。

相关内容