【问题标题】:Execute a script on local server without ssh在没有 ssh 的本地服务器上执行脚本
【发布时间】:2018-05-25 19:49:30
【问题描述】:

有局域网,机器在同一个地址空间。

我有一个管理节点来控制其他机器。有没有办法在这些机器上执行脚本? (注意:SSH 未启用,我们无法在这些机器上安装任何代码,除了 manager 机器)

目前,它通过在浏览器中打开一个 http 会话,然后提供用户名和密码,然后是每个脚本页面上的按钮来完成。我需要在Go 中自动执行此操作。这可能吗?

例如一个这样的按钮:

`<form ACTION="enableSsh.cgi" method="get">
    <b>
        <input type="SUBMIT" VALUE="Enable SSH Service">
        <input type=hidden name=stamp value="########">
        <input type=hidden name=token value="********">
        <input type=hidden name=frame value="$%$%$%$%">
    </b>
</form>`

【问题讨论】:

  • 你的问题一点都不清楚。如何在没有访问权限的机器上启用 SSH?什么是网络应用程序?和 Go 有什么关系?
  • 希望我纠正了cmets中提到的错误。
  • @Gauranga 我们可以使用的信息很少。我们也许可以猜测您的管理器机器已经可以做您希望它做的事情 - 但那部分非常不清楚。如果它已经可以做到这一点,您需要对您在执行此操作的机器上运行的代码进行逆向工程,或者询问编写此代码的人他们做了什么。如果管理员机器已经可以在您的其他机器上启用 ssh,那么这些机器会运行一些非标准服务 - 任何无法访问您机器的人都很难弄清楚它们是如何工作的。
  • 好的,如果我能得到更多细节,让我试试。这些机器实际上是第 3 方机器。目前,它通过网络发生。我需要在 Golang 中实现自动化。
  • 我猜你也许可以做到这一点。在浏览器中检查正在发生的网络流量 - http 请求 - 响应交换。你也许可以用 Go 做同样的事情。

标签: linux go rpc


【解决方案1】:

目前,它通过在浏览器中打开一个 http 会话,然后提供用户名和密码,然后是每个脚本页面上的按钮来完成。我需要自动化这个。

我认为你根本不需要关心界面,直到你找到一种在后端执行脚本的方法。从我的角度来看,如果不至少在它们上设置 SSHD,就不可能在机器上执行脚本。要执行您的脚本,您需要在远程机器上运行某种服务器来处理您的请求。

另外,请查看配置管理系统,例如:Ansible、SaltStack 和 so on,因为对于您的用例来说,即使 SSH 似乎也是一个太低级的工具。

【讨论】:

  • 感谢您的回答。如果不可能,我只需要确认。我尝试了所有可能的方法并失败了。所以,想在放弃之前检查一次:)
【解决方案2】:

是的,可以单独使用 Go 标准库。

要学习的东西,按以下顺序:

  1. 互联网浏览器如何编码 HTML 表单并将其发送到 HTTP 服务器。

    熟悉的东西:

  2. 当一个 HTML 表单被提交时,发送到 HTTP 服务器的数据 通常以两种形式之一编码:

    • application/x-www-form-urlencoded 编码 用于发出GET 请求和
    • multipart/form-data 编码用于制作POST 请求。

    在您的示例中,表单具有 method="get" 表示表单提交使用GET的属性 因此application/x-www-form-urlencoded 编码为其 数据。

  3. Go 标准库中的 net/http 包,可用于 发出 HTTP 请求。

所有这些都准备好后,您需要创建一个 HTTP GET 使用适当的参数集向适当的服务器和 URL 请求。

服务器与您获取该 HTML 页面的服务器相同。 URL 将是/enableSsh.cgi。

现在你只需要弥补请求并完成它。

这里是one example 但真正搜索golang+get+query+with+parameters 会带来 你无数类似的例子。 查询参数是那些表单字段——stamp、token 和 frame, 它们的值就是即将提交的内容。


如果您需要POST 带有multipart/form-data 的表单 编码,你会使用 Go 标准库中的 mime/multipart 包,其 Writer 类型可用于构建根据编码的数据流 multipart/form-data 规则。

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多