linux - 如何在一个 linux 虚拟机上运行一个 shell 脚本,在另一个 linux 虚拟机上

标签 linux shell ssh virtual-machine vmware

我使用 VMware vsphere client v5.5。我开发了一个简单的 shell 脚本,它基本上使用命令“lscpu”提供有关系统的信息。现在假设我有两个虚拟机,两个虚拟机都安装了 RHEL 6.5。假设我已经登录到 VM 1 并且该 VM1 中存在 shell 脚本,现在我想要有关 VM2 的信息并且我想从 VM1 在 VM2 中运行这个 shell 脚本文件并在 vm1 上取回结果,我该怎么做?我发现的一个想法是使用 ssh ,但我不太确定,谁能告诉我如何做到这一点。

最佳答案

因为它只在 VM 中运行(我认为安全性不是问题),你可以在 VM2 中设置一个简单的 TCP 服务器来监听连接,你可以在 VM1 中有一个 netcat 客户端来连接到服务器,执行脚本并获取结果。

您可以借助 xinetd 轻松实现这一目标。

您需要先安装 xinetd。如果您运行的是 Ubuntu 或基于 ubuntu 的发行版:

sudo apt install xinetd

您需要配置 xinetd 来运行您的脚本。我强烈建议在 setting up xinetd 上引用此特定指南配置您的服务器。

您可以直接使用默认配置。

service myscript
{
    type            = UNLISTED
    socket_type     = stream
    wait            = no
    user            = username
    group           = groupname
    server          = /path/to/your/script.sh
    log_on_failure  += USERID HOST
    disable         = no
    port            = 1593
}

只需相应地编辑usergroupserver(您的 shell 脚本的路径)和 port 字段然后你就可以开始了。

服务器启动后,您可以通过在 VM1 中执行以下命令在 VM2 中运行您的脚本,

netcat $vm2_ip $port

这将在 VM2 中执行脚本并在 VM1 中显示结果。

关于linux - 如何在一个 linux 虚拟机上运行一个 shell 脚本,在另一个 linux 虚拟机上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44235991/

相关文章:

php - 解析 grep 输出

linux - 简单的linux脚本帮助

perl - 如何使用 Net::SSH::Perl 运行 SSH 命令?

linux - 如何通过 ssh 登录到 Ubuntu 并自动执行 sudo su?

php - 错误报告因解析错误而被阻止

linux - 用 bash 设置参数

bash - 从 Bash 中的自定义选项读取参数

mysql - 前台的 ssh 隧道适用于 mysql 主机 localhost 和 127.0.0.1,但后台的 ssh 隧道不起作用

linux - Linux阻塞与非阻塞串行读取

linux - 无法在 64 位 Linux 上构建 32 位 Wine