我使用VMware vsphere客户端v5.5。我已经开发了一个简单的shell脚本,它基本上使用命令" lscpu"来提供有关系统的信息。现在假设我有两个vm&rs; s,两个vm都安装了RHEL 6.5 。假设我已登录到VM 1并且此VM1中存在shell脚本,现在我想要有关VM2的信息,我想从VM1在VM2中运行此shell脚本文件并在vm1上返回结果,我该怎么做?我发现的一个想法是使用ssh,但我不太确定,有人能告诉我怎么做。
答案 0 :(得分:0)
因为它只在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
}
只需编辑user
,group
,server
(您的shell脚本的路径)和port
字段,您就可以开始了。
启动服务器后,您可以通过在VM1中执行以下操作在VM2中运行脚本,
netcat $vm2_ip $port
这将在VM2中执行脚本并在VM1中显示结果。
答案 1 :(得分:0)
你可以简单地ssh over the other vm。
ssh username@hostname
输入密码,或者您可以在初始声明中提供
sshpass -p password ssh username@hostname
从此处可以像在终端上一样在VM2上执行任何命令。
稍微探索cat
等等,你可以做更多的事情。
答案 2 :(得分:0)
这里实际上有两个不同的问题:
如何远程执行命令?
你有很多其他答案可以解释ssh
是要走的路。我只想添加您想要从脚本运行它的精度,您必须使用非对称密钥配置ssh
以避免它要求输入密码。如果您需要在目标VM上拥有root权限,则应构建特殊的sudo
配置,以允许指定的用户无需密码即可访问sudo
如何在远程VM上访问该命令?
正如您所知,您可以在本地VM上读取脚本,并通过ssh将其行传递给远程VM。但是,如果您想进行大量的远程管理,那么设置共享文件系统也是有意义的。您可以使用NFS,AFS,甚至共享一个公共主机文件夹。这允许管理脚本的单个管理点,仍然可以从所有虚拟机中清楚地访问它们。