[英]how to run a shell script present on one linux vm, in another linux vm
我使用VMware vSphere Client v5.5。 我已經開發了一個簡單的shell腳本,該腳本基本上使用命令“ lscpu”提供有關系統的信息。現在假設我有兩個虛擬機,兩個虛擬機上都安裝了RHEL 6.5。 假設我已經登錄到VM 1,並且該VM1中存在外殼程序腳本,現在我想要有關VM2的信息,並且我想從VM1在VM2中運行此外殼程序腳本文件並在vm1上取回結果,我該怎么做? 我發現的一個主意是使用ssh,但我不太確定,誰能讓我知道如何做到這一點。
由於它僅在VM中運行(並且我認為安全性無關緊要),因此您可以在VM2中設置一個簡單的TCP服務器來偵聽連接,並且可以在VM1中有一個netcat客戶端將連接到服務器,執行腳本並獲取結果。
您可以在xinetd
的幫助下輕松實現這一目標。
您需要先安裝xinetd。 如果您正在運行Ubuntu或基於ubuntu的發行版:
sudo apt install xinetd
您需要配置xinetd來運行腳本。 我強烈建議您參考有關設置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中顯示結果。
您可以簡單地在其他虛擬機上使用ssh。
ssh username@hostname
輸入密碼,或者您可以在初始聲明中提供密碼
sshpass -p password ssh username@hostname
從這里,您可以像在其終端上一樣在VM2上執行任何命令。
稍微探索cat
等,您可以做更多的事情。
實際上,這里有兩個不同的問題:
如何遠程執行命令?
您還有許多其他答案可以解釋ssh
是必經之路。 我只是想添加一個精度,因為要從腳本運行它,必須使用不對稱密鑰配置ssh
以避免它要求輸入密碼。 如果您需要目標VM上的root特權,則應構建特殊的sudo
配置,以允許指定的用戶無需密碼即可訪問sudo
如何使命令在遠程VM上可訪問?
如您所知,您可以在本地VM上讀取腳本,並將其行通過ssh傳遞給遠程腳本。 但是,如果您想進行很多遠程管理,則設置共享文件系統也很有意義。 您可以使用NFS,AFS,甚至共享一個公共主機文件夾。 這樣就可以為管理腳本提供一個管理點,仍然可以從所有VM輕松訪問它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.