我想在远程桌面计算机上执行命令,但 SSH 会很困难,因为远程计算机大部分时间都处于离线状态,且时间间隔与我的时间相差 10 小时,并且可能经常位于防火墙/NAT 后面且 IP 未知。所以它必须尽可能地拉取我的命令。我正在想一些事情,只是开玩笑。curl http://.../do.sh | bash
有可用的工具支持这样的事情吗?
我在寻找
- 简单合理稳定的东西
- 对于Linux
- 从网址、邮箱等安全地提取命令,
- 当然,确实需要某种形式的授权(例如,不执行任何未签名的操作)
- 它报告标准输出和标准错误,也许还有退出值返回给我。
sshd
即使有必要,我也可以提供具有 HTTPS 和有效证书的服务器。我认为理论上我可以自己破解一些东西,但我担心那会非常耗时。
A类似的问题之前被问过,但没有真正回答(自己使用 procmail 和代码;使用我们强大的商业工具,价格为 250 美元)。
答案1
这并不是那么愚蠢(ssh 的想法),并且如果 a) 提供 ssh 服务的机器在线并且 b) 始终可以通过相同的名称/IP 保持可达性,那么就可以很容易地实现。您可以轻松地使用 ssh 脚本来对给定用户(守护进程?)帐户进行无密码身份验证,提取文件,然后对其进行操作。我不认为这是太难(或太耗时)的篮子。
答案2
您还可以考虑使用git
orsvn
存储库并使用 post-hook。例如 :
bash
客户端使用要执行的命令或脚本列表修改文件- 客户端将修改后的文件推送到远程服务器(大部分时间在线的服务器——使用
bitbucket
或github
或任何git
/svn
服务提供商) - 服务器登录时执行
git merge
/svn update
- 有
git merge hook
或者svn post-update hook trick
这并不难,它可以成为处理服务器离线状态的一种方法。
答案3
我会看看 cfengine 或 puppet 之类的东西 - 它们被设计为在远程服务器上运行命令并记录结果。