簡體   English   中英

如何在一個linux vm上運行存在的shell腳本,在另一個linux vm上運行

[英]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
}

只需相應地編輯usergroupserver (shell腳本的路徑)和port字段,就可以開始了。

服務器啟動后,您可以通過在VM1中執行以下操作在VM2中運行腳本,

netcat $vm2_ip $port

這將在VM2中執行腳本,並在VM1中顯示結果。

您可以簡單地在其他虛擬機上使用ssh。

ssh username@hostname

輸入密碼,或者您可以在初始聲明中提供密碼

sshpass -p password ssh username@hostname

從這里,您可以像在其終端上一樣在VM2上執行任何命令。

稍微探索cat等,您可以做更多的事情。

實際上,這里有兩個不同的問題:

  1. 如何遠程執行命令?

    您還有許多其他答案可以解釋ssh是必經之路。 我只是想添加一個精度,因為要從腳本運行它,必須使用不對稱密鑰配置ssh以避免它要求輸入密碼。 如果您需要目標VM上的root特權,則應構建特殊的sudo配置,以允許指定的用戶無需密碼即可訪問sudo

  2. 如何使命令在遠程VM上可訪問?

    如您所知,您可以在本地VM上讀取腳本,並將其行通過ssh傳遞給遠程腳本。 但是,如果您想進行很多遠程管理,則設置共享文件系統也很有意義。 您可以使用NFS,AFS,甚至共享一個公共主機文件夾。 這樣就可以為管理腳本提供一個管理點,仍然可以從所有VM輕松訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM